2009年4月28日火曜日

pxe - undionly.kpxe by dnsmasq

昨日、プロフィール入れてみました。
IPnutsの開発が遅々として進まず、動作検証できてから公開なんてとてもおぼつかないので
アルファ品質、テスト版というか、開発中環境をそのままアップしようと考えています。

しばらくは、まだそれの準備段階になるのですが、それでもまだうだうだする気配。
#ようは、チラシの裏レベル

文章を書くのが苦手でここまできてしまいましたが、続けられたらいいなと思います。
よろしくです。
------

今日のメモ:
dnsmasqというアプリケーションがあって、dnsとdhcpとtftpを全部これにやらそうとしています。
なので、開発環境ではこれまでのdhcpサーバは置き換えられています。

現在、IPnutsの開発環境でネットワークブートのテストをしていて、
dnsmasq+gpxe で動作検証しています。

vmwareで gpxeのisoイメージを立ち上げると、非常に遅いので、pxeで立ち上げて、gpxe環境を持ってこようとしている。

1 pxe(BIOS)-> gpxelinux.0
 syslinux.cfg相等のコンフィグファイルとカーネル、ルートファイルシステムがhttpで読みこめる

または
2 pxe(BIOS)-> undionly.kpxe 
 httpでgpxeのスクリプトコンフィグファイルとカーネル、ルートファイルシステムがhttpで読みこめる

が選択肢
2の場合、
pxe(BIOS)-> undionly.kpxe -> スクリプト までがチェインするので最初のpxeではdhcpでbootファイルとしてundionly.kpxeを渡し、次にはスクリプトをdhcpで渡さないといけないので、dhcp3サーバだと


if exists user-class and option user-class = "gPXE" {
filename "http://192.168.0.15/gpxe/43a2-gw.scr";
} else {
filename "undionly.kpxe";
}
のような指定をする。

dnsmasqの場合、
http://www.etherboot.org/wiki/dnsmasq
に書いてあるようにdnsmasq.confを設定しても、gpxe.pxe(undionly.kpxeも)にfilename(ブートファイル)を渡してくれない。
訂正:dnsmasqの設定ファイルに、dhcp-no-override を追加すればできました。wikiにちゃんと書いてあった。

結論:
社内&vmwareの環境だとpxeブート->gpxelinux.0で起動させることにする。
これの欠点は、httpで各ファイルを持ってこようとするとdhcpサーバでいろいろ設定をやる必要がある。
gpxeのスクリプトが読めるとdhcpサーバで複雑な設定が不要になるので、2.の方法でやりたかった。

以下その設定。httpのパスと、設定ファイルを指定できる。

dhcpd.confの場合:

option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
site-option-space "pxelinux";

...

### ホストの指定内で
option pxelinux.pathprefix "http://192.168.0.15/gpxe/";
option pxelinux.configfile "43a2-gw";


dnsmasq.confの場合

dhcp-option-force=209,43a2-gw.cfg
dhcp-option-force=210,http://192.168.3.20/gpxe/


dnsmasqを使うのでこの設定をちゃんとしてやる必要がある。メニュー表示にして、コンフィグファイルは一つにしようかなと思っている。

0 件のコメント: