« Linux: ifconfigコマンドの実装 | Main | 旅人をつなぐ"マルスシステム"開発ストーリー »

November 29, 2007

Ubuntu Gutsy (i386)でPAE+nvidia

DDR2メモリの価格が偉いことになっているのでつい乗せられて記念に4GB買ってしまった・・・というのはよくある話で、もとある2GBとあわせ合計6GBになったメモリをどうするかというお話。

普通の32bitカーネルが扱える物理メモリ空間は4GBまでで、そのうち3GBを超えた物理メモリ領域はI/Oのためにデバイスにマップされていたりして一部のアドレスがつぶれてしまうため、32bitカーネルで起動してもメインメモリは3.2GBしか認識されない(この容量はマシンによって異なるはずである)。

この場合の選択肢は2つあって、64bitカーネルを動かす方法と、32bitカーネルのままPAE(Physical Address Extension)を有効にする方法とがある。前者の場合はさらに64bitディストリビューションを入れる方法と、32bitディストリビューションのカーネルだけ入れ替える方法とがあるが、今回はユーザーランドは32bitのまま維持したかったのでPAE拡張対応のカーネルを入れる方向でいってみることにした。

Ubuntu Gutsyで標準で入るlinux-image-genericはPAE非対応なので、PAEに対応したイメージであるlinux-image-serverを入れて動かす必要がある。

で済めば何も記事を書くまでもないのだが、ここで問題発生。GeForceを使うためにnvidiaのプロプラエタリドライバを使っているのだが、serverイメージには対応するlinux-restricted-modulesがないことが判明。Xがまともに立ち上がらなくなってしまった。

あれこれ試した結果、以下のようにするのがよいようである。
0. sudo aptitude install linux-image-server
1. sudo aptitude install nvidia-kernel-source linux-headers-server
2. sudo aptitude install module-assistant
3. sudo m-a a-i -l 2.6.22-14-server nvidia
4. sudo depmod 2.6.22-14-server

バージョン番号は適宜読み替えて欲しい。

serverイメージはPAE(CONFIG_HIGHMEM64G)がonになる一方タイマ割り込み頻度(HZ)が100になっている、CONFIG_PREEMPTがnoになっているなど本当にサーバー向けの設定になっている。俺のようにまさにデスクトップとして使いたいがメモリを認識させたいだけの場合は本来なら自分でカーネルを作り直すのがいいような気はするが。

今回の設定はあくまでも32bitカーネルが64GBまでの物理メモリを扱えるようになった、というだけなので、各アプリケーションの仮想メモリ空間は32bitのままである。すなわちLinuxでは1GBのメモリ空間がカーネルによって予約されるので、各プロセスは3GBまでの空間しか使えないということになる。1プロセスにより多くのメモリを割り当てたければ64bitカーネルと64bitのユーザーランドが必要である。

ちなみに同じマシンにはWindows XP(32bit版)も入っているのだが、そちらはServerとの差別化のためなのか、boot.iniに/PAEを書き加えても6GB認識してはくれなかった。NXビット(XDビット)はPAEの一部のような仕様なので少なくともSP2以降のカーネル自体は余裕でPAEに対応しているはずなのだが・・・。

謝辞
m-a a-i (module-assistant auto-install) については研究室一のDebianハッカーであるひらの氏が教えてくれた。

|

« Linux: ifconfigコマンドの実装 | Main | 旅人をつなぐ"マルスシステム"開発ストーリー »

Comments

はじめまして。
参考にさせてもらい、うちも無事4GB使える様になりました。
ただ一部のプログラムでlinux-restricted-modules-2.6.22-14-serverがないと怒られて起動しないのがあるので調査中です^^

Posted by: ぽえぽえ | January 04, 2008 07:46 PM

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference Ubuntu Gutsy (i386)でPAE+nvidia:

» 【Ubuntu】4GBにメモリを増やしたけど・・・ [エーゼロワン poeBlog]
新春初売りで4GBのメモリーが1万円だったので、思わず買ってしまった。 VMwareをいくつも立ち上げておくと2GBでもメモリーが足らなくなるので、4GB欲しかったわけです。 いざ増設してみる... [Read More]

Tracked on January 04, 2008 08:03 PM

« Linux: ifconfigコマンドの実装 | Main | 旅人をつなぐ"マルスシステム"開発ストーリー »