PXEブート用サーバを構築する

提供:maruko2 Note.
移動: 案内, 検索

目次

PXE での Linux ブートの大まかな流れ

PXE での Linux ブートの大まかな流れ
  1. PXE で起動。
  2. DHCP サーバから IP アドレス と ブートローダのファイル名(と場所)を取得する。
  3. TFTP サーバからブートローダファイル(pxelinux.0)を取得する。
  4. ブートローダ(pxelinux.0)でブート
  5. TFTP サーバから最終的に起動する方法が書かれた pxelinux.cfg/default を取得する。
  6. 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

参考: Fedora Documentation - 13.5.2. PXE Boot Configuration

LINEで送る このエントリーをはてなブックマークに追加
個人用ツール
名前空間
変種
表示
操作
案内
ツールボックス

注目のページ

このサイトのはてなブックマーク数