InetBootはInternet上に公開されているカーネルおよびディスクイメージから
起動するためのブートローダです。今回リリースするnetfs版ではHTTPで公開
されているKNOPPIX/VMKnopixのISOファイルから起動します。
サンプルブータブルCD版(5MB)の場合、
3種類の KNOPPIX(511,501, 402) と
5種類の VMKnoppix (Xen: 3.2.0, 3.1.1, 3.1.0, 3.0.4.1, 3.0.4)
の起動が可能です。
KNOPPIX4.02以降をベースとしたISOファイルが公開されていれば InetBoot で
起動できると思います(注:LCATなど特殊なカスタマイズには対応していません
ので全てを保証するものではありません。詳細は既知の問題点を参照して下さい)。
■ 特徴
InetBootはHTTPのみでカーネルの取得を行ないます。PXEブートのようにBOOTP、
TFTPを使わないためLAN環境に限定されません。ルートファイルシステムのた
めにステートフルなNFSサーバを用意する必要がなく、ステートレスのHTTPの
みのためロードバランスによる動的なサーバ変更も可能です。
netfs版では既にHTTPで公開されているKNOPPIXおよびその派生物のURLを指定
するだけで、そのKNOPPIXを起動することができます。これによりCD/DVDを作
成することなく新しいKNOPPIXが確かめられます。
Inetbootの実態はGRUB+BuildRoot (BusyBox)です。単純なブーロローダではな
く、小さなLinuxを一旦立ち上げて、ネットワークの設定、カーネルの取得、
ミニルートの再作成、kexecによる再起動(Warm Boot)、httpfsによるISOファ
イルのループバックマウントを行ないます。
■ 使い方
BRUBメニューから起動したいISOファイルのURLを指定するのみです。
BuildRoot 用の linux と minirt.gz はダウンロードしてください。
例:通常のKNOPPIX場合
kernel /boot/grub/linux netdir=http://***/knoppix.iso ramdisk_size=100000 lang=ja vga=normal
initrd /boot/grub/minirt.gz
例:Xenoppix場合。bootxen=1オプションを付加。
kernel /boot/grub/linux netdir=http://***/Xenoppix.iso bootxen=1 ramdisk_size=100000 lang=ja vga=normal
initrd /boot/grub/minirt.gz
サンプルとしてISOファイルには下記を登録してあります。これらは
GSLB(Global Server Load Balance)により、北米3サイト、欧州3サイト、国内
7サイトから自動的に最適なサーバに接続します。
・knoppix511 (linux 2.6.19)
・knoppix501 (linux 2.6.17)
・knoppix402 (linux 2.6.12)
・VMKnoppix (Xen3.2.0+Linux 2.6.18)
・VMKnoppix (Xen3.1.1+Linux 2.6.18)
・VMKnoppix (Xen3.1.0+Linux 2.6.18)
・VMKnoppix (Xen3.0.4.1+Linux 2.6.18) Oprofile
・VMKnoppix (Xen3.0.4) +Linux 2.6.18
■ 実装
GRUBメニュー内のカーネルオプションとして渡されたURLをBuildRootに渡します。
GRUBから起動したBuildRoot (BusyBox)では、
1) udhcpによるネットワーク設定
2) httpfsによりISOファイルをマウント
3) カーネルを抽出
4) ミニルート再作成
5) kexecによる再起動(Warm Boot)
を行います。
ダウンロードしたカーネルで起動します。再作成したミニルートでは、
1) HTTP上のISOファイルをhttpfsにより /cdrom にマウント
2) 通常のKNOPPIXとしての起動
します。これ移行は通常のKNOPPIXとして振舞います。
この手順を図に表すと下記になります。
■ 既知の問題点
・ ネットワークカードに強く依存します。
ネットワークの設定を2度行なう(BuildRootとダウンロードカーネル)
ため、両方でネットワークドライバが設定できる必要があります。
・ サーバ&ネットワークの状況に強く依存します。
httpfs マウントをしているのでネットワークの遅延やサーバの負荷に依存します。
リブートするとGSLBの選択が変わり改善される場合があります。
・ LCATを適用したKNOPPIXには対応していません。
cloopドライバの適用が現在のところできません。
・ 2GB上限があるHTTPサーバではDVDのisoファイルがhttpfsマウントできません。
■ 関連URL
[1] BuildRoot: http://buildroot.uclibc.org/
[2] httpfs: http://httpfs.sourceforge.net/
[4] Linux Symposium 08 BOF: OS Circular, http://www.linuxsymposium.org/2008/view_abstract.php?content_key=231
■ ダウンロード
・ 日本語版 (VMKnoppixでは英語になります)
注:含まれているURLは実験的サービスです。試したいURLを指定してお使い下さい。
http://www.ring.gr.jp/archives/linux/oscircular/iso/inetboot-netfs-20080409-ja.iso
MD5: e802d8fdaab3c0d45b632d41fab9effd
・ 英語版
注:含まれているURLは実験的サービスです。試したいURLを指定してお使い下さい。
http://www.ring.gr.jp/archives/linux/oscircular/iso/inetboot-netfs-20080409-us.iso
MD5: 1c32b27fbe93903ee2decaec220cfbc6
・ BuildRoot用カーネルとミニルート
http://www.ring.gr.jp/archives/linux/oscircular/iso/linux
http://www.ring.gr.jp/archives/linux/oscircular/iso/minirt.gz
■ Acknowledgement
本研究開発は OS Circular の一部として行なわれています。
# 本話題は Ottawa Linux Symposium 08 のBOF: OS Circular で議論します。
http://www.linuxsymposium.org/2008/view_abstract.php?content_key=231
------------------------------------------------------------
------
suzaki
> Inetbootの実態はGRUB+BuildRoot (BusyBox)です。単純なブーロローダではな
> く、小さなLinuxを一旦立ち上げて、ネットワークの設定、カーネルの取得、
> ミニルートの再作成、kexecによる再起動(Warm Boot)、httpfsによるISOファ
> イルのループバックマウントを行ないます。
おぉ、すごい。
kexec で起動できるカーネルと起動できないカーネル(バージョンとハードウェ
ア構成とドライバの成熟度による)があると思うのですが、そこらへんはどうやっ
て回避されていますか?
上川
--
dancer@{debian.org,netfort.gr.jp} Debian Project
>>From: Junichi Uekawa <dan...@netfort.gr.jp>
>>Subject: [debian-users:50383] Re: リリース: InetBoot(GRUB+BuildRoot)
>>
>>> Inetbootの実態はGRUB+BuildRoot (BusyBox)です。単純なブーロローダではな
>>> く、小さなLinuxを一旦立ち上げて、ネットワークの設定、カーネルの取得、
>>> ミニルートの再作成、kexecによる再起動(Warm Boot)、httpfsによるISOファ
>>> イルのループバックマウントを行ないます。
>>
>>おぉ、すごい。
>>
>>kexec で起動できるカーネルと起動できないカーネル(バージョンとハードウェ
>>ア構成とドライバの成熟度による)があると思うのですが、そこらへんはどうやっ
>>て回避されていますか?
回避していません。_o_
と言うより、現在 Warm Boot の対象が KNOPPIX (2.6.19, 2.6.17, 2.6.12,
または Xen+2.6.18) ばかりなのでカーネルに関しては問題が起きていません。
ドライバに関しては初期化できないものがありますが、幸い大きな問題になる
ものは出会っていません。
# 仕事的には TPM が組み込めないのが痛いのですが。
-----
suzaki