« | Home | »

2010.12.03

FreeBSD-8.1のkernel再構築

サーバーのHDDのミラー化も済み、各種設定も行い動作も良さそうなので、kernelの再構築(reconfiguration)を行うことにした。

1. 設定ファイルの編集

# cd /usr/src/sys/i386/conf      ← 設定ファイルのディレクトリーに移動
# cp GENERIC MYSERVER
# vi MYSERVER
ここで、下記の赤字部を追加 (4096 x nで100倍にした)
options         AUDIT                   # Security event auditing
options         MSGBUF_SIZE=409600
後は、RAID関連、Wireless LAN関係、PCMCIAカード関係をコメントアウト。
SCSI関連は、USBメモリーを使うので、SCSI peripheralのscbus, device  da, device pass, dev sesを除き、
後は全てコメントアウト。
また、NICで現在使用してしているもの、ならびに他に予備機がある場合はその予備機のNICも残し、他は
コメントアウト。(下記の注参照)
(ハッキリ理解出来ない行は残すのが、鉄則。)

注意:

サーバー内には、HDD2台でミラー構成を取っているが、もしHDD以外の要因(電源等)でサーバーが動作不能になった場合は、HDDを予備機に移し、起動すればデバイス名は、/dev/mirror/gm0で予備機のATAの構成が異なっても(起動ドライブ名がad2からad4に変わっても)起動でき、直ちに運用が継続できる。このためには、kernelに予備機のNICのドライバーも含めておく必要がある。

2. コンパイル作業

# config MYSERVER
以下のメッセージが表示された。
Kernel build directory is ../compile/MYSERVER
Don't forget to do ``make cleandepend; make depend''
作業を続行する
# cd ../compile/MYSERVER
# make clendepend  ← 10秒ぐらいか
# make depend   ← 3分ぐらいかかる
# make       ← 25分ぐらいかかる
# make install    ← 1分ぐらいかかる
# reboot      ← 新kernelを使って再起動

 kernelサイズが、11,783KB → 6,681KB となった。
 測定していないが、起動時間も早くなった感じである。

3. 新カーネルになったことを確認

$ uname -a
FreeBSD uls.fam.cx 8.1-RELEASE FreeBSD 8.1-RELEASE #0:
Fri Dec  3 19:54:02 JST 2010     xxxxxxxx@uls.fam.cx:
/usr/src/sys/i386/compile/MYSERVER  i386

 MYSERVERで作られたkernelとなっている。

4. コンパイルしたkernelに誤りがあり、立ち上がらなかった場合の処理

 下の画面が現れて、カウントダウンしている間にスペースキーを押す。
   なお、/boot/loader.conf でカウントダウン数を、例えば
   autoboot_delay=”3″ (3秒の場合)のように指定できる。← 気の短い人向き (私)
freebsd001.gif

スペースキーで止まったら、6を押して、OKのLoader Promptを出す。
これで、旧kernelで起動するように指定できる。

OK unload     ← 既に読み込まれているモジュールをunload
OK boot kernel.old    ← kernel.oldを使ってbootを指示

再度kernelコンパイルを最初からやり直すことになる。
再度のkernelも起動出来なかった場合、1つ前の起動出来ないkernelがkernel.oldとして保存され、さらにその前の起動出来たオリジナルのkernelは失くなってしまう。
 (1) kernel.old → 喪失   (オリジナルの起動出来たkernel)
 (2) kernel → kernel.old  (構築して起動出来なかったkernel)
 (3) 再コンパイルkernel → kernel(再度のkernelも起動出来ない場合が問題)
これでは、もう起動する手段が無くなってしまうので、再度のコンパイルに先立ち、起動できたkernelをkernel.orgとして保存しておくと良い。

# cd /boot
# mv kernel.old kernel.org

これで、最悪の事態でも、前の図のカウントダウン画面でスペースキーを押し、6を押してOKのPromptを出して、

OK unload
OK boot kernel.org

で、起動できる。

コメント

コメントはありません

コメントフィードを購読する

コメント投稿





コメント本文に次の(X)HTMLタグを使えます:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)