2010.12.03
FreeBSD-8.1のkernel再構築・・・(FreeBSD)
サーバーの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秒の場合)のように指定できる。← 気の短い人向き (私)
スペースキーで止まったら、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
で、起動できる。
コメント
コメントフィードを購読する
コメント投稿