PXEブート用サーバを構築する
提供:maruko2 Note.
目次 |
PXE での Linux ブートの大まかな流れ
- PXE で起動。
- DHCP サーバから IP アドレス と ブートローダのファイル名(と場所)を取得する。
- TFTP サーバからブートローダファイル(pxelinux.0)を取得する。
- ブートローダ(pxelinux.0)でブート
- TFTP サーバから最終的に起動する方法が書かれた pxelinux.cfg/default を取得する。
- pxelinux.cfg/default に書かれている方法で起動する。
TFTPサーバ
起動ディスクイメージやブートローダを転送するための TFTP サーバをインストールする。
yum install tftp-server
TFTP サーバはインストール直後は OFF になっているので、chkconfig コマンドで有効にする。
chkconfig tftp on
xinetd を再起動し TFTP サーバを有効にする。
/etc/init.d/xinetd restart
/etc/xinetd.d/tftp
TFTP サーバは xinetd のサービスなので、直接 /etc/xinetd.d/tftp を編集し有効にする方法もある。
vi /etc/xinetd.d/tftp
disable を no にすると TFTP サービスが有効になる。 server_args で指定しているディレクトリが TFTP のルートになる。
server_args = -s /tftpboot
disable = no
Linux のブートローダを配置する
Linux のブートローダである pxelinux.0 を /tftpboot/pxeboot/ に配置する。 pxelinux.0 は syslinux パッケージに含まれているので、syslinux をインストールする。
yum install syslinux cp /usr/lib/syslinux/pxelinux.0 /tftpboot/pxeboot/
DHCP サーバ
DHCP サーバをインストールする。
yum install dhcp
設定のサンプルがあるのでコピー(上書き)し、編集する。
cp /usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample /etc/dhcpd.conf vi /etc/dhcpd.conf
dhcpd.conf
IP アドレスはネットワーク環境に合わせる。
- filename
- クライアントに読み込ませるブートローダーファイル(pxelinux.0)を指定する。
- 指定するパスは、TFTP のルートに対してのパスになるので注意。
- next-server
- filename で指定するファイルをホストするサーバのアドレスを指定する。
- next-server を指定しない場合、DHCP サーバのアドレスが使用される。
- DHCP サーバと TFTP サーバを別にする場合などに使う。
ddns-update-style interim;
ignore client-updates;
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
option domain-name "domain.org";
option domain-name-servers 192.168.1.1;
range 192.168.0.128 192.168.0.254;
default-lease-time 21600;
max-lease-time 43200;
filename "/pxeboot/pxelinux.0";
}
DHCP サーバを起動
/etc/init.d/dhcpd start
OS 起動イメージを用意
mkdir -p /tftpboot/pxeboot/{i386,x86_64} cd /tftpboot/pxeboot/i386 wget http://ftp.riken.jp/Linux/fedora/releases/13/Fedora/i386/os/images/pxeboot/initrd.img wget http://ftp.riken.jp/Linux/fedora/releases/13/Fedora/i386/os/images/pxeboot/vmlinuz cd /tftpboot/pxeboot/x86_64 wget http://ftp.riken.jp/Linux/fedora/releases/13/Fedora/x86_64/os/images/pxeboot/initrd.img wget http://ftp.riken.jp/Linux/fedora/releases/13/Fedora/x86_64/os/images/pxeboot/vmlinuz
PXE ブート時に、起動イメージを切り替える
mkdir /tftpboot/pxeboot/pxelinux.cfg vi /tftpboot/pxeboot/pxelinux.cfg/default
#default Fedora13_i386 label Fedora13_i386 kernel i386/vmlinuz append load initrd=i386/initrd.img devfs=nomount label Fedora13_x86_64 kernel x86_64/vmlinuz append load initrd=x86_64/initrd.img devfs=nomount
実際に PXE ブートすると、boot: というプロンプトになるので、label で指定している Fedora13_i386 か Fedora13_x86_64 を入力する。
Fedora 17 を pxeboot インストールする設定方法
Fedora 17 を pxeboot インストールする途中、次のようなエラーが起きて起動途中で止まってしまう。
dracut Warning: /dev/root does not exit Dropping to debug shell. dracut:/#
/tftpboot/pxeboot/pxelinux.cfg/default の記述方法を変えることで、うまく pxeboot できるようになる。append の部分を変える。
#従来の記述方法 label centos6_x86_64 kernel centos6_x86_64/vmlinuz append load initrd=centos6_x86_64/initrd.img devfs=nomount #Fedora17の場合の記述方法 label fedora17_x86_64 kernel fedora17_x86_64/vmlinuz append initrd=fedora17_x86_64/initrd.img \ inst.repo=ftp://ftp.riken.jp/Linux/fedora/releases/17/Fedora/x86_64/os