会社のネットワーク環境は既にDHCPが動いているのでPXEブートをしようと思ったらルータのDHCPを停止させてPXEに対応させたDHCPサーバを立ててやる必要がある。
最近のサーバはDVDドライブなんて普通についてるからメディアからインストールすりゃ良いやって思ってたら、古くなったサーバを検証用に引き上げてきたらCDドライブしかついてない(--;
インストーラーを起動させるだけのCDを作ってもいいのだけど、OSやバージョン毎に作るのもなぁ~と思い既にDHCPサーバが稼動している環境でPXE bootが出来ないか調べてみたら案外簡単に見つかった(w
参考
daily dayflower
Geek Not Found
どうやらProxy DHCPサーバ(pxe-pdhcp)ってのを使えば良いようだ
詳しい解説はこちら(古橋貞之の日記)
まずはtftpサーバをインストール
CentOSなのでyumでほにょっとインストールしてしまいます
# yum -y install tftp-server
設定は後回しにしてpxe-pdhcpもインストールしてしまう
# svn co http://svn.coderepos.org/share/lang/c/pxe-pdhcp # cd pxe-pdhcp # make #install -m 755 pxe-pdhcp /usr/local/bin
ネットワーク環境が悪かったのか、ファイルをダウンロードするまにで10分程度だんまりが続いたのでファイルが消えてるのかと思った(--;
CentOSのtftpはxinetdで起動するので必要に応じてxinetdもyumでインストールしといて
/ext/xinetd.d/tftpを修正
service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = no ← ここをyesからnoに変更 per_source = 11 cps = 100 2 flags = IPv4 }
pxelinux.0をコピー
cd /tftpboot cp /usr/lib/syslinux/pxelinux.0 .
設定ファイルを修正したらxinetdを再起動しておく
# service xinetd restart
pxeサーバにはsyslinuxが必要だが、普通にCentOSをインストールしていれば入ってるはず・・・会社でインストールする際に選択する最小の構成でも入ってたのでたぶん(^^;
心配な場合は以下のコマンドで確認
# rpm -qa | grep syslinux
インストールするOSイメージをマウントする
# mkdir /mnt/iso/ # mount -t iso9660 -o loop CentOSのisoファイル /mnt/iso
PXE boot用のイメージファイルをtftpの公開エリアにコピーする
デフォルトの公開エリアが/tftpbootなのでここにコピーすることにする
# cp /mnt/iso/images/pxeboot/vmlinuz /tftpboot/ # cp /mnt/iso/images/pxeboot/initrd.img /tftpboot
PXE boot用の設定ファイルを作成。
defaultにしとけば何も設定ファイルが無い場合に読んでくれる
個別に設定ファイルを準備する場合はファイル名に注意!!適当にファイル名をつけても読んでくれない。
基本的にはMacアドレスかIPアドレスをヘキサに変換した文字列をファイル名に用いる
# cd /tftpboot/pxelinux.cfg/ # vi default default CentOS5 prompt 1 timeout 50 label CentOS5 menu label ^CentOS5 kernel vmlinuz append initrd=initrd.img
基本的な設定
default・・・bootプロンプトで何も入力されなかった場合に実行されるラベルを指定します
prompt・・・bootプロンプトを表示させるか、させないかを設定。0に設定するとプロンプトが表示されません
timeout・・・指定した秒数だけbootプロンプトで入力待ちをします
個別設定
label…bootプロンプトで入力すると指定した設定でインストールを行う
menu label…labelとどう違うのか不明
kernel・・・インストールするOSのメジャーバージョンにより違うので注意
append・・・initrd.imgのファイル名をinitrdにしとけばいらないはず。ただしvmlinuzと同様OSのメジャーバージョンにより違うので注意
CentOS5とCentOS4を指定してインストールを実行する方法
vmlinuzとinitrdはそれぞれのisoイメージからコピーする。
それぞれ/mnt/cent5/iso/と/mnt/cent4/iso/にisoファイルをマウントしているとします。 # cp /mnt/cent5/iso/images/pxeboot/vmlinuz.cent5 /tftpboot/ # cp /mnt/cent5/iso/images/pxeboot/initrd.cent5 /tftpboot # cp /mnt/cent4/iso/images/pxeboot/vmlinuz.cent4 /tftpboot/ # cp /mnt/cent4/iso/images/pxeboot/initrd.cent4 /tftpboot