PXE で SystemRescueCd をブートする
ディスクのブートブロックが壊れたとか,設定がおかしくなってうまく立ち上がらなくなったという時は,復旧用の汎用 Linux を利用すると便利。
もちろん LiveCD な Ubuntu や KNOPPIX(あと今は Fedora とかもいけるんだっけ)を立ち上げればいいんだけど,ディストリビューションによってはサポートしているファイルシステムにムラがあったりするので,SystemRescueCd を使っている。
いままではこれを CD ブートしてたんだけど,昨日 PXE ブートの環境を作ったので,せっかくだから PXE から SystemRescueCd が立ち上がるようにしてみた。
実は SystemRescueCd にはもともと PXE ブート用のしくみが備わっている。
- マスタとなるマシンで SystemRescueCd を立ち上げて
- そのマシンの IP 設定や PXE にまつわる設定を修正し
/etc/init.d/pxebootsrv start
とうちこむと PXE 用の各種サーバがたちあがる- ターゲットとなるマシンで PXE ブートする
とすればよい。
だけど,これだとマスタとなるマシンは SystemRescueCd を立ち上げっぱなしにしなきゃいけない。たしかに SystemRescueCd を使うのはなんらかのトラブル時だけなので,そのときにどこかのマシンで SystemRescueCd を立ち上げればいいんだけど,せっかく PXE ブートの環境をセットアップしたのでそれを利用することにする。
なお,SystemRescueCd はけっこう巨大なので,
- kernel ブート
- initramfs 起動
- 本体読み込み&起動
の手順を経ている。この3番目のために,HTTP サーバ(あるいは FTP サーバ)が必要になる。
下記の手順をあみだすうえで,SystemRescueCd - PXE network booting の 3.2 The PXE boot process が参考になった。
SystemRescueCd の PXE 用ファイルの準備
まず SystemRescueCd の CD イメージを取得して,適当な場所にマウントする。
# mkdir sysresc # mount -o loop,ro -t iso9660 systemrescuecd-x86-1.2.2.iso sysresc
SystemRescueCd の本体イメージ(けっこう大きい;1.2.2 で 190M ある)を WWW 公開用フォルダにコピーする。
# cp sysresc/sysrcd.dat /var/www/html/ # cp sysresc/sysrcd.md5 /var/www/html/
SystemRescueCd の initrd (initramfs) の init の中で,この sysrcd.dat
の MD5SUM をチェックしているため,sysrcd.md5
もコピーしておくことを忘れない。
SystemRescueCd のカーネルと初期 initramfs をコピーする。この initramfs は,CD ブートの場合でも PXE ブートの場合でも共通なので CD の isolinux/
フォルダからコピーすればよい。
# cp sysresc/isolinux/rescuecd /tftpboot/rescuecd # cp sysresc/isolinux/initram.igz /tftpboot/rescuecd.igz
もともとは initramfs は initram.igz
という名前で存在するんだけど,ドキュメントに倣って rescuecd.igz
という名前にしておいた。
これで CD イメージは用済みなのでアンマウントして大丈夫。
# umount sysresc # rmdir sysresc
PXELINUX の設定
pxelinux.cfg/default
は下記のような感じ。
default rescuecd prompt 1 timeout 50 label rescuecd kernel rescuecd append initrd=rescuecd.igz netboot=http://THIS_HOST/sysrcd.dat ip=dhcp
もちろん THIS_HOST
の部分は適宜書き換えること。この netboot=
というカーネルコマンドラインパラメータを SystemRescueCd の initramfs(の init スクリプト)がパースしている。
なお ip=dhcp
はなくても動いた(きちんと DHCP で取得してくれた)けど,ドキュメントに倣って一応つけたしといた。
起動
PXE ブートすると,CD で立ち上げたときと同じように SystemRescueCd が立ち上がる。
うぇぇコマンドラインかよ。って思った人は GUI (X) を立ち上げればよい。
さいしょ説明文を斜め読みして Xorg
とか入力したら何もでてこずに(plain な X の画面だけ)ちょっとあせった。ちゃんと読むと wizard
と入力しろって書いてあるね。