さいきんの Debian は Live 起動用イメージも用意しているらしい。
んで,Live 起動イメージはネットワークブート用のイメージも用意されている。
たとえば,http://ftp.jaist.ac.jp/pub/Linux/Debian-CD/6.0.0-live/i386/net/ をみるといくつかの種類 (GNOME 環境とか Rescue 環境とか) のネットブート用 Live イメージ (*.tar.gz) がおいてあることがわかる。
そこで,CentOS で作った PXE ブート環境に,選択肢のひとつとして Debian 6.0 Live を追加してみた。index.rb [nofuture.tv] が参考になる。
なお PXE 環境自体の構築については今回触れない。
ライブイメージディストリビューションのなかから debian-live-6.0.0-i386-standard.tar.gz を選択してみた。standard といいつつほとんど何も入ってないプレーンな状態だけど。
取得して展開すると,だいたい下記のようなディレクトリツリーになってる。
+ debian-live/ + tftpboot/ + tftpboot/debian-live/ + tftpboot/debian-install/
おおまかにいうと,tftpboot/ フォルダ以下が TFTP による初期ブートに必要なファイル群 (カーネルとか initramfs とか)。debian-live/ は initramfs が起動したあとに NFS 経由で読み込むルートイメージ。NFS 経由といっても生ルートツリーを NFS マウントするわけじゃなくてルートイメージが SquashFS 形式でおいてあるんでそれを NFS 経由で読み込んでマウントする感じ。
なお tftpboot/debian-install/ のほうは,Debian をネットワークインストールする際に使う TFTP ブートイメージで,今回は使用しなかった。
NFS 用ルートイメージの用意
前述のとおり debian-live/ 以下が NFS 経由のルートイメージになるので適当な場所において NFS で公開する。
# cp -R debian-live /pub/linux/debian/squeeze
別にディレクトリはこの名前にする必要があるわけじゃない。自分の環境では上記のようにしているだけ。
上記例だと exports はこんな感じ。
# cat /etc/exports /pub/linux/debian *(ro,all_squash,no_subtree_check,crossmnt) /pub/linux/debian/squeeze *(ro,all_squash,no_subtree_check,crossmnt)
んで NFS デーモンを再起動。
# service nfs restart
PXE用ファイルの用意
こんどは TFTP ブート用ファイルを /tftpboot/ 以下の適当なディレクトリにコピー。
# cp -R tftpboot/debian-live /tftpboot/debian-squeeze
んで,Debian のドキュメントとかだと付属する pxelinux.cfg をそのまま使うような形で紹介されてるんだけど,そうするといままで使用していた他の PXE ブート環境がなくなってしまってもったいないので要所だけコピーする。
Debian Live の場合,たとえば debian-live/i386/boot-screens/live.cfg に PXE ブート用の設定が書いてある。
label live
menu label Live
kernel debian-live/i386/vmlinuz-2.6.32-5-486
append initrd=debian-live/i386/initrd.img-2.6.32-5-486 boot=live
config netboot=nfs nfsroot=192.168.1.1:/srv/debian-live quiet改行いれちゃってるけど,append 行のとこは1行で書く必要があると思う (以下も同様)。これをもとに,自分の pxelinux.cfg に書き足す。
今回の例示だと以下のような内容。/tftpboot/ の下とか NFS 用ディレクトリに好き勝手な名前をつけたので,対応する部分を変更してある。
LABEL squeezelive
MENU LABEL Debian 6.0 Live
KERNEL debian-squeeze/i386/vmlinuz-2.6.32-5-486
APPEND initrd=debian-squeeze/i386/initrd.img-2.6.32-5-486 boot=live config
netboot=nfs nfsroot=<NFS Server Address>:/pub/linux/debian/squeeze quiet
以上で無事 Debian 6.0 Squeeze の Live 環境が立ち上がった。あまりにプレーンなのでほんとにうまく動いてるか自信がないので今 GNOME 版の Live イメージをダウンロード中*1。
なお,Ubuntu でも同じようにすれば Live 環境の PXE 起動はできる。つっても違うところはいろいろあって
- TFTP ブート用のファイルは netboot.tar.gz というのをとってくる
- NFS 用ルートイメージは,Ubuntu インストール DVD をマウントしたものを NFS エクスポートすればそのまま使える
pxelinux.cfgまわりは preseed とか casper まわりとかをAPPEND行でいろいろ指定する必要がある
いろいろたいへんそうだけど,たいていの人は Ubuntu のライブイメージを手元に持ってるだろうから,ハードルは Debian より高くない。
Ubuntu の場合の pxelinux.cfg 例を下記においとく。
LABEL mavericklive
MENU LABEL Ubuntu 10.10 Live
KERNEL ubuntu-maverick/i386/casper/vmlinuz
APPEND initrd=ubuntu-maverick/i386/casper/initrd.lz
file=ubuntu-maverick/i386/preseed/ubuntu.seed
boot=casper netboot=nfs
nfsroot=<NFS Server Address>:/pub/linux/ubuntu/maverick quiet splash --TFTP 用ファイルは /tftpboot/ubuntu-maverick/ においており,NFS 用ルートイメージが /pub/linux/ubuntu/maverick/ においてあるという前提だけど。当然ながら KERNEL 行や APPEND 行のファイルパスは適宜書き換えること。