PXE boot

会社のネットワーク環境は既に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
linux/pxe.txt · 最終更新: 2010/01/28 08:26 by miyako
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0