Linux: USB Boot できない機種で CD-ROM からカーネルを起動し、USB デバイスで Linux を運用する

うちのサーバとして使用しているノート PC の内蔵 HDD がそろそろやばい感じなので、今のうちに、CD-ROM ブートで、USB デバイス上にインストールしてある Debian GNU/Linux 5.0 lenny システムを運用できるようにした。これはその時の備忘録。

Ubuntu日本語フォーラム / Ubuntu9.04 USB-HDD ブートCD作成について」を参考にさせていただいて、実際には以下のように作業した。

※事前に起動時点で既に USB デバイスが読めるようなカーネルであることが前提。
※今回は、PCMCIA の USB 2.0 カード経由で接続している USB デバイスを使用するため、こちらで書いている手順の通り、カーネルに PCMCIA を組み込んでいる。

・必要なパッケージをインストール
# apt-get install syslinux-common mkisofs
※ syslinux-common は不要かも知れない。
※ isolinux を使用した場合、何故かエラーが出たので (今から考えると、ブートイメージ作成ディレクトリに isolinux.bin をコピーしていなかったからかも知れない) mkisofs (lenny では genisoimage へのシンボリックリンク) を使用した。

・作業用ディレクトリを作成
# mkdir -p ~/bootimage/boot/grub

・カーネルと必須ファイルをコピー
# cp /boot/vmlinuz-2.6.26-686-custom ~/bootimage/boot/
# cp /boot/initrd.img-2.6.26-686-custom ~/bootimage/boot/
# cp -a /usr/lib/grub/i386-pc/stage2_eltorito ~/bootimage/boot/grub/

・menu.lst ファイルを作成する
以下のような内容で ~/bootimage/boot/grub/menu.lst を作成
※ kernel や initrd は実際にコピーしたファイル名を指定。
timeout 3
title 2.6.26-686-custom
kernel /boot/vmlinuz-2.6.26-686-custom root=/dev/sda1 ro quiet
initrd /boot/initrd.img-2.6.26-686-custom

・iso ファイルを作成
# export LANG=C
# cd ~/bootimage
# genisoimage -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o ../bootimage.iso .

・~/bootimages.iso を CD-R に焼き、その CD-R を該当マシンにセットして再起動

これで、上手く起動できた。