SS1610にネットワークインストールするためにPXEサーバーを立てる

 dynabook ss1610をゲットしたが、CD-ROMもFDDも付いてない。手持ちにあったCD-ROMをUSB-ATAアダプターをくっつけて起動してみたが、認識せず。ss1610はネットワークブートに対応しているので、これを機にPXEサーバーを用意して、ネットワークインストールをする。ハードディスクを外してインストールとかできなくはないが、トラブったときに面倒なので、まともな環境は容易しておいて損はない。

 ターゲットはme6000のDebian ecthがサーバー、クライアントはダイナブックSS1610,インストールOSはMandriva linux 2010。

tftpd

 pxeサーバーはdhcpとtftpの組み合わせなので、まず先にtftpdを動かす。なんでかというと、確認が簡単だから。

#apt-get install tftpd

tftpdはxinetdもしくはinetd経由で使用する。なので、/etc/xinetd.d/の中にtftpというファイルを作り

service tftp
{
        disable = no
        protocol = udp
        port     = 69
        socket_type     = dgram
        wait    = yes
        user    = nobody
        server  = /usr/sbin/in.tftpd
        server_args = /tftpboot
}

 こんな風に書く。で、とりあえず、xinetdを再起動#/etc/init.d/xinetd restartと。
 動作確認をする。

#mkdir /tftpboot
#cd /tftpboot
#touch test

 でexitして通常ユーザーに戻って

$tftp localhost
tftp> get test
Received 32 bytes in 0.0 seconds
tftp>

 とReceivedになればOK。ここまででtftpdの設定は終わり。

DHCPサーバー

 dhcpサーバーだが、通常は自分で立てないで、ブロードバンドルーターの初期設定でOnになっているdhcpサーバーを使っている。んでも、PXEってdhcpの拡張機能を使っているらしく、ブロードバンドルーターのdhcpでは動かない。そこでdebianで立てて、pxeブートする時はルーター側のdhcpはoffにする。
 まずはインストール。

#apt-get install dhcp3-server

 インストール時にはエラーが出る。まぁしょうがない。dhcpが2つ動いていたら困るから。そして、dhcp.confを修正。

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;

use-host-decl-names on;
subnet 192.168.11.0 netmask 255.255.255.0{
	option routers 192.168.11.1;
	option broadcast-address 192.168.11.255;
	option domain-name-servers 192.168.11.1;
}
host Be{
	filename "pxelinux.0";
	hardware ethernet 00:0e:xx:xx:xx:22;
	fixed-address 192.168.11.30;
	next-server 192.168.11.9;
}

 長いのでコメントは全部削除。hostのBeはNotePCの名前ね。うちは光モデムに更に無線LANルータをつないでいるので、内部のルータのアドレスが192.168.11.1。fixed-addressは、与えたいアドレス。192.168.11.12くらいまで使っていたので30にした。んで、debianは192.168.11.9。

 そんでもって、dhcpサーバーを起動。

  #/etc/init.d/isc-dhcp-server start

これでNotePCをPXEブートしてみる(F12を押しながら起動して、ネットワークっぽいのを選択する)。

PXE boot agentほりゃらら
MACアドレス  00:0e:xx:xx:xx:xx
DHCP ../ ←くるくる回って取得できたアドレスがでる。
TFTP:.

 とTFTPのところで止まる。この時にsyslogを見ると↓こんな感じ。んでファイルがないので落ちてwindowsが起動する(入れてあれば)。

Apr 10 12:07:55 me6 dhcpd: DHCPDISCOVER from 00:0e:xx:xx:xx:22 via eth0
Apr 10 12:07:55 me6 dhcpd: DHCPOFFER on 192.168.11.30 to 00:0e:xx:xx:xx:22 via eth0
Apr 10 12:07:57 me6 dhcpd: DHCPREQUEST for 192.168.11.30 (192.168.11.9) from 00:0e:xx:xx:xx:22 via eth0
Apr 10 12:07:57 me6 dhcpd: DHCPACK on 192.168.11.30 to 00:0e:xx:xx:xx:22 via eth0
Apr 10 12:07:57 me6 tftpd[12613]: tftpd: trying to get file: pxelinux.0 
Apr 10 12:07:57 me6 tftpd[12613]: tftpd: serving file from /tftpboot 
Apr 10 12:07:57 me6 tftpd[12615]: tftpd: trying to get file: pxelinux.0 
Apr 10 12:07:57 me6 tftpd[12615]: tftpd: serving file from /tftpboot 

syslinux

 次、pxelinux.0がないので入れる。もうよくわからん、なんだこれ。この中にpxelinux.0があるらしいが。

#apt-get install syslinux

んで、pxelinux.0が何処にあるのか探す。見つかったら、それを/tftpboot/にコピー

# find / | grep pxelinux.0
/usr/lib/syslinux/gpxelinux.0
/usr/lib/syslinux/pxelinux.0
^C
#cp /usr/lib/syslinux/pxelinux.0 /tftpboot/

これを入れた時点で再び立ち上げてみると、linuxのブートメッセージが出る。これ、ネットワークブートするときの最初のブートプログラムみたいだね。入れなきゃだめだけど、入れるOSがMandrivaであってもDebianのsyslinuxで良いということ。


Mandrivaのインストーラーを取ってくる

 インストールするOSはMandrivaLinuxで、debianではないので、Mandriva linuxのインストーラーを取ってくる。って、どこよ?。"mandriva pxe"でググるとすぐにMandriva PXE Installという公式のwikiが出てきた。

 これによると、まずcd1.isoをマウントして、isolinux/alt0にいくと、最初のステージのkernelとinitrdが見える。う〜ん、後わからん。「dhcpを立ち上げてスクリーンの右側にあるPXEEntry項目をクリックすると・・」はぁ?。
 まぁいいや、/tftpbootにisolinux/alt0の中にある2つをwゲッツする(近くから)。

#http://ftp.kddilabs.jp/Linux/packages/Mandriva/official/2010.0/i586/isolinux/alt0/vmlinuz
#wget http://ftp.kddilabs.jp/Linux/packages/Mandriva/official/2010.0/i586/isolinux/alt0/all.rdz

 vmlinuzがkernelでall.rdzがinitrdかな?。initrdってなんだっけ・・。

 で、/tftpboot/以下にpxelinux.cfgというディレクトリを作ってその中にdefaultというファイルを作る。中身はこう?。freebsdのドキュメントから取って来たんだが・・。

PROMPT 1
DEFAULT ghost
DISPLAY messages
TIMEOUT 100
label local
        LOCALBOOT 0

label ghost
        KERNEL vmlinuz
        APPEND initrd=all.rdz

今のところ、tftpbootの中身はこうだ。当然pxelinux.cfgの中には

#cd /tftpboot
# ls -al
total 16292
drwxrwxrwx  3 root root     4096 2010-04-10 12:06 .
drwxr-xr-x 23 root root     4096 2010-04-06 22:33 ..
-rw-r--r--  1 root root 14469871 2009-10-23 23:26 all.rdz
-rwxr-xr-x  1 root root    15820 2010-04-10 12:06 pxelinux.0
drwxr-xr-x  2 root root     4096 2010-04-09 19:55 pxelinux.cfg
-rwxrwxrwx  1 root root       26 2010-04-06 22:37 test
-rw-r--r--  1 root root  2152480 2009-10-23 23:26 vmlinuz

 で、ルータのDHCP機能をOffして、PXEクライアント(というかノートPC)を起動っと。なんか起動してる・・・。boot:で止まった・・・。おもむろにEnterキー押してみる。

おぉ、Mandriva Linuxのインストール画面出たよ!。あとは普通のインストールと一緒か。HTTPインストールにしてさっきのkddiのMandrivaLinuxのディレクトリを指定してやれば良い。はず。

OpenSuseのインストーラーを取ってくる

(2011.05.28)やっぱり、OpenSuseにしたい。最新は11.4。Mandriva linuxの時と同様に、OpenSuseのインストーラーを取ってくる。

#cd /tftpboot
#wget http://ftp.kddlabs.co.jp/Linux/distributions/opensuse/distribution/11.4/repo/oss/boot/i386/loader/linux
#wget http://ftp.kddlabs.co.jp/Linux/distributions/opensuse/distribution/11.4/repo/oss/boot/i386/loader/initrd

Mandraiva同様に/tftpboot/pxelinux.cfgを作って、その中にdefaultを作る。そんでもって、OpenSuse用にメニュを作る。

PROMPT 1
DEFAULT suse11.4

DISPLAY messages
TIMEOUT 100
label local
        LOCALBOOT 0

label ghost
        KERNEL vmlinuz
        APPEND initrd=all.rdz

label suse11.4
   kernel linux
   append initrd=initrd

Mandrivaと違うのは、kernelがlinuxになり、initrdがその名のままinitrdになってる。んで、デフォルトがghostだったのをsuse11.4にして、そこにデフォルトで飛ぶようにしている。

 これで、ブロードバンドルーターのdhcpをoffして、ss1610をF12を押しながら起動し、pxeブートを選択すると・・・。お、出た。mandrivaよりinitrdの読み込みに時間がかかるね。でも後は、指示されるままに、ネットワークインストールを選択し、HTTP,サーバーがftp.kddlabs.co.jp、ディレクトリに、Linux/distributions/opensuse/distribution/11.4/repo/oss/を指定すれば、普通にインストーラーが動き出す。後は一緒だ。

あとがき

 実はここまですげー時間掛かった。apt-cache search pxeとやったらFree PXE Daemonって言うのが出て来て。あ、これ入れりゃいいのか、と。

色々な資料を読んでみると、ルーターのDHCPでipアドレスを獲得して、DCHP拡張機能のPXE部分を別でやらせるとかできるみたいだった。つまり最初はブロードキャストしてIPアドレスを取得。その後、ルーターのdhcpが反応しなければポート4011に2段目をアクセスしにいくと。そうしたら、そこにkernelのファイル名とかが書いてあるので、そっちから渡すと。

お!、なるほど、話としては成り立つね。と。んで、free PXE deamonを入れて設定して、色々やっても全くうごかね。あげくのはてにPXE daemonのソースまで見ちゃって、デバッグモードで動かしてみたりして。。でも4011ポートにアクセスしに来ている気配もない。

なんのこっちゃ?。原因はよくわからない。もしかしたら古いPCなので最新のPXEクライアントには成っていないのかも。だから、ルータに要求しにいって、いつまでもファイル名を待っていて止まっていると。4011でブロードキャストしてくれないからFree PXE daemonは何の仕事もさせてもらえず、しーーん。と。逆にルータのDHCPが半端に返しているのかもしれん。

ま、結局、今回はMACアドレス指定にしてしまったので、通常はルータのDHCPを使って。PXEインストールするときはルータのDHCPをOffで成り立つと。

 普段はというと、me6000のDHCPはそのままでルーターのDHCPの動かしてる。反応がme6000のDHCPサーバーの方が早いので、今回の設定で確定しまう。まぁ、仕事用なので、家で使う事はほとんどない。この設定でOK。

ME6000 前へ戻る