リリース: InetBoot (GRUB + BuildRoot + HTTP-FUSE)

Apr 22, 2008 From: k.suzaki@a...

須崎です。Xenが起動できるのでこちらにもポストします。

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

Last modified: 2008-04-22