PAE非対応のマシンにはインストール不可

Xenには準仮想化と完全仮想化という2種類の仮想マシン実現方式があります。

準仮想化はXen上で動かすOSのカーネル自身にXen対応が必要だがシステムコールのオーバーヘッドが少ないため、動作が軽快で使用するハードウェアの制限は無い。また完全仮想化はIntel VTなどのCPUの機能をXenが利用してハードウェアをエミュレートするため、動作がちょっともっさりするのと比較的最新のCPUを乗っけたマシンでないと動かせないという制約があるが、Xen上のOS側での対応が不要なためどんなOSであっても(Windows含む)動かすことができる。

という理解をしていたのだけれども、これには例外事項がありました。それが今回の話。

XenはPAE対応のCPUだけを今はサポートしている

PAEというのはPhysical Address Extension(物理アドレス拡張)のことで、簡単にいうとIA-32では32本(=32bit)だったアドレスを36本(=36bit)まで拡張したもの。つまりPAE機能を利用すると、32bitOSでも64GB(2^36bit)までの物理RAMを使用できるという話。(詳しくはWikipediaにて。)

で、以前はこのPAE対応CPU向けのカーネルイメージとPAE非対応CPU向けのカーネルイメージの両方が提供されていたみたいなのだけれども、あるときを境にPAE非対応CPU向けのカーネルイメージは提供されなくなったとのこと。(この辺が参考になる)

誰にどんな影響があるの?

で、PAEなんて普段使ってないし自分には関係ないと思っているそこのアナタ、実は関係があるかもしれません。というかオイラはばっちりこの影響を受けましたよ! ・゚・(ノД`)・゚・

簡単な例でいうと、ThinkPad X31とかの比較的古いマシンにXenを入れることはできない可能性があります。うちのThinkPad X31のCPUはPentiumM 1.6GHzのやつで、プロセッサ番号が使われる前のものなのだけれども、CPU的にPAEが非対応なのでXenをインストールできませんでした。

自分のCPUがPAE対応かどうかは/proc/cpuinfoに表示されるCPUのフラグ群に"pae"が入っているかどうかで識別できます。

mir@mir45:~$ cat /proc/cpuinfo | grep pae
flags           : fpu tsc msr pae mce cx8 apic mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm pni monitor ds_cpl est tm2 cx16 xtpr

これ↑↑はCore2Quad 6600 2.4GHzの例なんですが、PentiumM 1.6GHzだとpae無いのです。

ちなみにPAE非対応なマシンでXenを入れようとすると、、、

  • OSインストール時のパッケージ構成の「仮想化」のところでXenが選べない
  • OSインストール後にパッケージマネージャ等でxenをインストールすることは可能
  • その後xenカーネルでOSを起動しようとするとkernel panicになる

という感じになります。

そういう訳で、ThinkPad X31 (RAM 2GB)に32bit環境のvmxenで作ろうと思っていた計画が完全に頓挫したわけですが、ここでは代わりにVMWareでも使っておくことにします。