ネットワークブート時にクライアントにパッチを当てる - VIVER CORE Server
VIVER COREには、ブートパラメータでpostboot=
セミコロンで区切って複数のパッチを当てることもできます。半角スペースで区切ると、区切られたURLの中からランダムで選ばれ(負荷分散用)、そのURLのダウンロードに失敗したときには他のURLを試します(冗長化用)。これはrooturl=
このpostbootを使って、ネットワークブート時にクライアントにパッチを当ててみます。バージョン0.0.4でrsyncに対応したので、postbootでもrsyncが使えます。
VIVER CORE Serverをダウンロード
何はともあれまずダウンロード。これ以降はすべてVIVER CORE Serverパッケージの中で作業を行います。
wget http://syuki.skr.jp/core/release/viver-core-server-0.0.4.i386.tar.gz tar zxvf viver-core-server-0.0.5.i386.tar.gz cd viver-core-server-0.0.5.i386
Debain etchをインストール
ネットワークブート用にDebain etchでもインストールしてみます。前回のように仮想アプライアンスを使ってもOKです。
今回はrsyncを使うので、インストール先をVIVER CORE Serverの中の./script/rsync/viverにします。./script/rsync/viverはデフォルトで作成&設定済みです。
せっかくなのでdebootstrapの全自動インストールスクリプトも使ってみます。
./script/install-debootstrap sudo ./script/debootstrap --arch i386 etch ./rsync/viver http://ftp.jp.debian.org/debian
カーネルモジュールをインストールしておきます。
sudo cp -a /lib/modules/`uname -r` ./rsync/viver/lib/modules/
postbootを作る
「/var/www/にコンテンツを置いて、lighttpdをインストールする」というパッチを作ってみます。
今回はrsyncを使うので、まずはrsync用にディレクトリを一つ作ります。ここにファイルを配置していきます。
mkdir ./rsync/patch # デフォルトの設定ファイルを変更 vi ./rsync/rsyncd.conf ## 以下を追記 # [patch] # path = ./rsync/patch
パッチの中に「/run」というファイルがあると、それが実行されるようになっています。というわけで、./rsync/patch/runにlighttpdをインストールするスクリプトを書きます。
#!/bin/sh echo "installing lighttpd" echo "Yes" | aptitude install -y lighttpd
もちろん実際はこんなテキトーな事をやっていけませんが!とりあえず気にしない気にしない :-p
実行権限を付けるのを忘れずに。
chmod 0700 ./rsync/patch/run
./rsync/patch/以下にファイルを置いていきます。/var/www/以下にコンテンツを適当に配置してください。
$ find ./rsync/patch rsync/patch/ rsync/patch/run rsync/patch/var rsync/patch/var/www rsync/patch/var/www/index.html rsync/patch/var/www/test.html
tftpbootを用意
カーネルとinitramfsを用意します。今使っているカーネルが使えるので、カーネルの再構築は必要ありません。initramfsの作成にはmkviverrdコマンドが使えます。
# initramfsを作る ./mkviverrd \ ./tftpboot/viver-core.img \ ./skel/viver-core-skel.i386.tar.gz \ `uname -r` # カーネルをコピーしてくる cp /boot/vmlinuz-`uname -r` ./tftpboot/
ブートパラメータを書く
./tftpboot/pxelinux.cfg/defaultにブートパラメータを書きます。
default viver prompt 0 label viver kernel vmlinuz-2.6.19.7-vs2.2.0.3-vcore12 append initrd=viver-core.img rootsize=350m rooturl=rsync://192.168.0.2:9100/viver postboot=rsync[-v]://192.168.0.2:9100/patch
kernelは先ほどコピーしてきたカーネルの名前に、192.168.0.2(2カ所)は自ホストのIPアドレスに変えてください。
rsyncサーバーは9100番ポートで起動します。
postbootのrsyncは-vオプション付きにしてみました。
サーバーを起動する
ではサーバーを起動します。rsyncのバイナリはパッケージに入っていないので、インストールされていることを確認してください。
sudo ./script/start-rsyncd sudo ./script/start-tftpd sudo ./script/start-pxe-pdhcp eth0
以上で準備完了です。近隣のマシンをPXEでブートすると、ディストリビューションのブートプロセスが始まる前にlighttpdがインストールされるはずです。
そして起動したクライアントにHTTPでアクセスすると、./rsync/patch/var/wwwに配置しておいたhtmlが見えるはずです。