« Windows 7が入ったパソコンを無線LANのアクセスポイントにする | トップページ | 【続】FreeBSD-8.2 / Intel Celeron でPAEを利用して巨大メモリを認識させる »

2011年10月10日 (月)

FreeBSD-8.2 / Intel Celeron でPAEを利用して巨大メモリを認識させる

追記:この記事の続編があります。


FreeBSD-8.x におけるPAEカーネルの作り方について、わかりやすくかかれた日本語のドキュメントがなかったので、それの説明を兼ねて備忘録。


自分が管理している某マシンが、bootしなくなってしまいました。おそらく、マザーボード上の水銀電池やコンデンサーの問題のようでしたが、スペックとしてもかなり古く動作も遅いマシンだったので、この際ということで単純な修理より大改造を行なうことにしました。

交換するのは次の3つの部品。購入価格も概算で併記するとこうなりました。

  • 購入時にもっとも安かった CPU一式: Intel Celeron 430 Box ( 1.8GHz ) 3,500円(→実は失敗)
  • CPUに合わせた Socket で、ATAのHDDでも動くマザーボード: ASUS P5G41C-M LX 5,000円
  • Memory: 8GB(4GB 2枚セット)で 4,200円

合計で 12,000円を少し越える程度。他には、HDD、キーボード、マウス、ケース、電源は現在使用中のものを流用し、モニタはサーバーなのでインストール時以外は不要でした。

あとで気が付いたのですが、8GBのメモリーが安いからとホイホイかってしまって、いざ FreeBSD で動かそうとすると4GBまでしか認識しないという事態。i386 用の FreeBSDのアドレス空間は 32bit で振られているので、メモリの上限は4GBなんだと。それを突破するには、アドレスを 36bit にする PAE という方法を使わなければならないということでした。最初から Intel にしないで、 AMD の CPU にしておけばよかったのでした。

てなわけで、PAEを使うことになるのですが、これが困ったことに、日本語でかかれた割と新しい説明がない。 しかたないので英語の方で読んで作業をしたのですが、せっかくなのでメモをのこしました。


  1. rootになって、カーネルソースを最新にしておく。この辺の説明は適当に調べて下さい。
  2. カスタムカーネルの設定名前を決める。ここでは、HOGEとします。そしたら、次のコマンドを入力して下さい。
    cd /usr/src/sys/i386/conf/
    mv GENERIC GENERIC.original
    cp -p GENERIC.original HOGE
    mv PAE PAE.original
    cp -p PAE.original PAEHOGE
  3. 次に、emacsやviなどで、コンフィグファイル HOGE を編集する。

    かならず

    options PAE
    を入れる。他は適切に。

  4. 次に、emacsやviなどで、PAE用のコンフィグファイル PAEHOGE を編集する。

    まず、冒頭のGENERICという文字があるところの include を、自分のコンフィグに変える。

    include HOGE
    次に、identを変える。
    ident PAEHOGE
    以上(2行のみ)を変更する。他は触ってはいけない。

    以上の修正により、コンフィグファイル PAEHOGEが呼び出されると、 そのなかの include で、HOGEが読み出されて設定され、 その後、PAEHOGEの下の行で PAEとぶつかるデバイスはすべて nodevice で除去されるということになります。

  5. カーネル再構築をする。ただし、ここで重要なのは、カーネル名が HOGE ではなく、PAEHOGE となることです。
    cd /usr/src/
    make KERNCONF=PAEHOGE buildkernel
    make KERNCONF=PAEHOGE installkernel
    reboot

    これでうまくbootすれば、メデタシメデタシ。しかし、やっぱり最初からamdにしておけばよかった。だって、PAEカーネルだと agpgart が駄目で、結果として X11は動かないんですよ。(サーバだったので平気ですけど…)

|

« Windows 7が入ったパソコンを無線LANのアクセスポイントにする | トップページ | 【続】FreeBSD-8.2 / Intel Celeron でPAEを利用して巨大メモリを認識させる »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: FreeBSD-8.2 / Intel Celeron でPAEを利用して巨大メモリを認識させる:

« Windows 7が入ったパソコンを無線LANのアクセスポイントにする | トップページ | 【続】FreeBSD-8.2 / Intel Celeron でPAEを利用して巨大メモリを認識させる »