===== PXE boot =====
会社のネットワーク環境は既にDHCPが動いているのでPXEブートをしようと思ったらルータのDHCPを停止させてPXEに対応させたDHCPサーバを立ててやる必要がある。\\
最近のサーバはDVDドライブなんて普通についてるからメディアからインストールすりゃ良いやって思ってたら、古くなったサーバを検証用に引き上げてきたらCDドライブしかついてない(--;\\
\\
インストーラーを起動させるだけのCDを作ってもいいのだけど、OSやバージョン毎に作るのもなぁ~と思い既にDHCPサーバが稼動している環境でPXE bootが出来ないか調べてみたら案外簡単に見つかった(w\\
\\
参考\\
[[http://d.hatena.ne.jp/dayflower/20090810/1249875581|daily dayflower]]\\
[[http://d.hatena.ne.jp/int128/20090206/1233913925|Geek Not Found]]\\
\\
どうやらProxy DHCPサーバ(pxe-pdhcp)ってのを使えば良いようだ\\
詳しい解説は[[http://d.hatena.ne.jp/viver/20080720/p2|こちら(古橋貞之の日記)]]\\
\\
まずは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