2008年4月22日

[debian-users:50410] リリース: InetBoot (GRUB + BuildRoot+ HTTP-FUSE)


須崎です。
Internetから KNOPPIX/Xenppix(GuestOS Plan9/NetBSD)を起動するブートローダ
"InetBoot(GRUB+BuildRoot+HTTP-FUSE)"をリリースしました。

-----------------------------------------------------------------------------
InetBoot (GRUB + BuildRoot+ HTTP-FUSE) リリース
HP: http://openlab.jp/oscircular/inetboot/

解説: http://openlab.ring.gr.jp/oscircular/inetboot/InetBoot-httpfuse080418-J.pdf
サンプルブータブルCD 5.4MB (MD5: cb93a918ebec70d1763a116a133a50ce)
http://www.ring.gr.jp/archives/linux/oscircular/iso/inetboot-http-fuse-20080418.iso

InetBoot(GRUB + BuildRoot+ HTTP-FUSE)はInternet上に公開されているハイ
パーバイザー、カーネル、ミニルートをダウンロードし、kexecで起動(Warm
Boot)するためのブートローダです。HTTP-FUSE版では公開されているInetnet
仮想ブロックデバイス(HTTP-FUSE CLOOP)をルートファイルシステムとして起
動します。サンプルブータブルCD版(5MB)の場合、
3種類のKNOPPIX(511, 501, 402) と
3種類の Xen環境Xenoppix-Xen2.0.6, Plan9(Xenoppix), NetBSD(Xenoppix)
の起動が可能です。
# Xen環境は古いカーネルを使っている為、NICが NE2000, RL8139 などに制
限されます。VMWare/QEMU/KQEMU 上での動作は可能でした。

■ 特徴
InetBootはHTTPのみでハイパーバイザー、カーネル、ミニルートの取得を行な
います。PXEブートのようにBOOTP、TFTPを使わないためLAN環境に限定されま
せん。また、ルートファイルシステムのためにステートフルなNFSサーバを用
意する必要がなく、ステートレスのHTTPのみのためロードバランスによる動的
なサーバ変更も可能です。
InetBootの実態はGRUB+BuildRoot (BusyBox)です。単純なブーロローダではな
く、小さなLinuxを一旦立ち上げて、ネットワークの設定、カーネルの取得、
ミニルートの再作成、kexecによる再起動(Warm Boot)、HTTP-FUSE CLOOPのルー
プバックマウントを行ないます。目的のOS起動の前に各種の操作を行なえるプ
レブート(PreBoot)機能を有しています。
BuildRoot内にスクリプトをダウンロード/実行する機能があります。これによ
りBuildRoot内の操作が柔軟になります。Xenoppixの起動ではこのスクリプト
機能を使っています。
HTTP-FUSE CLOOPではディスクイメージ(ブロックファイル)のキャッシュが
できます。USBメモリなどに \knxblock のフォルダを作り、起動前に挿してお
けば自動的に認識してブロックファイルをキャッシュします。これによりブロッ
クファイルのダウンロードを抑制し、アプリケーションや起動の高速化が行な
えます。

■ 使い方
BuildRoot 用の linux と minirt.gz はダウンロードしてください。
サンプルCDではGRUBメニューから起動したいOS(HTTP-FUSE CLOOP のURL)を指定するのみです。

例:通常のKNOPPIX場合
kernel /boot/grub/linux httpfuse http://knoppix.inetboot.net/archives/linux/oscircular/tcgeeks/v1.0/ ramdisk_size=100000 lang=en vga=normal nodhcp lang=us
initrd /boot/grub/minirt.gz

例:Xenoppix場合
kernel /boot/grub/linux iscript http://knoppix.inetboot.net/archives/linux/knoppix/xenoppix_http
/kexec.sh ramdisk_size=100000 lang=en vga=normal nodhcp lang=us
initrd /boot/grub/minirt.gz

サンプルブータブルCD(ISOファイル)には下記ISOファイルのURLを登録して
あります。これらはGSLB(Global Server Load Balance)により、北米3サイト、
欧州3サイト、国内7サイトから自動的に最適なサーバに接続します。
knoppix511 (linux 2.6.19)
knoppix501 (linux 2.6.17)
knoppix402 (linux 2.6.12)
Xenoppix (Xen2.0.6+Linux 2.6.12)
Plan9 on Xenoppix (Xen2.0.6+Linux 2.6.12)
NetBSD on Xenoppix (Xen2.0.6+Linux 2.6.12)
注:サンプルブータブルCDに含まれているURLはサンプルであり、一定期間の
後には公開を停止します。

ディスクイメージ(ブロックファイル)のキャッシュ
 USBメモリなどの \knxblockのフォルダを作ってください。USBはFAT32ある
いはext2/ext3などLinuxから書込みが可能なファイルシステムの必要がありま
す。容量としては100MB以上の書込み領域のあるものを使ってください。1GB程
度あれば1つのOSを丸ごと保存でき、再起動ではダウンロードをなしで起動で
きます。
注:キャッシュ機能を利用している時はUSBメモリなどへ頻繁に読み書きして
いるため抜き差しはしないでください。

■ 実装
下記の手順で起動します。
○ GRUB
GRUBメニュー内のカーネルオプション(httpfuse=, iscript=)として渡された
URLをBuildRootに渡します。

○ BuildRoot内
GRUBから起動したBuildRoot (BusyBox)では、
1) udhcpによるネットワーク設定
2) ハイパーバイザー、カーネル、ミニルートをダウンロード
3) kexecによる再起動(Warm Boot)
を行います。

○ ダウンロードしたカーネル
kexec後、ダウンロードしたハイパーバイザー、カーネル、ミニルートで起動
します。ミニルートでは、
1) HTTP上のブロックファイルをhttp-fuseにより /cdrom にマウント
2) /cdrom/Disk1/knoppix を /KNOPPIXにループバックマウント
3) 通常のKNOPPIXとしての起動
します。これ以降は通常のKNOPPIXとして振舞います。
この手順を図に表すと下記になります。

■ 既知の問題点
・ネットワークカードに強く依存します。
・ネットワークの設定を2度行なう(BuildRootとダウンロードカーネル)ため、
両方でネットワークドライバが設定できる必要があります。
・Xenoppixの環境はRealTeck RL8139 あるいはNE2000でのみ起動を確認して
います。QEMU, VMWareでも起動できます。
・ サーバ&ネットワークの状況に強く依存します。
・http-fuseマウントをしているのでネットワークの遅延やサーバの負荷に依存します。
・リブートするとGSLBの選択が変わり改善される場合があります。

■ ダウンロード
サンプルブータブルCD 5.4MB (MD5: cb93a918ebec70d1763a116a133a50ce)
http://www.ring.gr.jp/archives/linux/oscircular/iso/inetboot-http-fuse-20080418.iso
BuildRoot用カーネルとミニルート(サンプルCD内のものと同じです.通常のGRUBからも利用可能)
http://www.ring.gr.jp/archives/linux/oscircular/iso/inetboot-http-fuse-20080418/linux
http://www.ring.gr.jp/archives/linux/oscircular/iso/inetboot-http-fuse-20080418/minirt.gz

------
suzaki

投稿者 xml-rpc : 2008年4月22日 12:45
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/72404
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。