18 January 2011

(Linux) メモリーを増設しても自動的にPAEカーネルは有効にならない

3GBytesを越えるメモリーをインストール時に搭載していた場合は、自動的にPAEカーネルがインストールされるようだが、インストール時に3GBytes未満で後に増設した場合は、その時点で自動的にPAEカーネルがインストールされるわけではない。

32ビットOSの3GBytes(4GBytesとも言われる)にメモリー利用の壁があることの詳しい情報は…

合計 4GB のメモリーを搭載した際に、物理メモリーが少なく表示される (intel)
EnablingPAE (Ubuntu documents)
Windows Vista, Windows Server 2003, or Windows Server 2008 may report less memory than you expect (Microsoft)
Ubuntu 32-bit, 32-bit PAE, 64-bit Kernel Benchmarks

PAEカーネルをインストールするには

# apt-get install linux-generic-pae linux-image-generic-pae

というメタパッケージを追加するだけで、自動的に最新のカーネル(例:linux-headers-2.6.32-27-generic-pae など)を探してきてインストールしてくれる。
ついでに、update-grub も走らせてくれるので、再起動すれば自動的にPAEカーネルで起動するようになる(はず)。

20110118-grub.png
自動的に、PAEカーネルがgrubの標準選択になる

ちなみに、このホームページを見て、我もPAEカーネルインストールという意気込みを見せている貴方… CPUがPAEに対応していない場合は無駄骨になる。

$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 37 model name : Intel(R) Core(TM) i3 CPU 530 @ 2.93GHz 〜 中略 〜 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm arat tpr_shadow vnmi flexpriority ept vpid

例えば、4GBytesのメモリーを搭載した状態で…
PAEカーネルを使った場合

$ uname -a Linux s5350-ubuntu 2.6.32-27-generic-pae #49-Ubuntu SMP Thu Dec 2 00:07:52 UTC 2010 i686 GNU/Linux $ free total used free shared buffers cached Mem: 3917796 1208504 2709292 0 125160 572480 -/+ buffers/cache: 510864 3406932 Swap: 2096440 0 2096440


PAEカーネルを使わなかった場合

$ uname -a Linux s5350-ubuntu 2.6.32-27-generic #49-Ubuntu SMP Wed Dec 1 23:52:12 UTC 2010 i686 GNU/Linux $ free total used free shared buffers cached Mem: 3282068 935632 2346436 0 120136 425192 -/+ buffers/cache: 390304 2891764 Swap: 2096440 0 2096440