dynabook ss1610をゲットしたが、CD-ROMもFDDも付いてない。手持ちにあったCD-ROMをUSB-ATAアダプターをくっつけて起動してみたが、認識せず。ss1610はネットワークブートに対応しているので、これを機にPXEサーバーを用意して、ネットワークインストールをする。ハードディスクを外してインストールとかできなくはないが、トラブったときに面倒なので、まともな環境は容易しておいて損はない。
ターゲットはme6000のDebian ecthがサーバー、クライアントはダイナブックSS1610,インストールOSはMandriva linux 2010。
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サーバーだが、通常は自分で立てないで、ブロードバンドルーターの初期設定で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
次、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で良いということ。
インストールする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のディレクトリを指定してやれば良い。はず。
(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。
Copyright (C) 2010 俺 All right reserved.