[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[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