tftpとDHCP設定

  • PXEブート向けに設定してみる。
  • CentOS6.0 (x86_64) にて確認。

tftp設定

# インストール
# ※tftp クライアントは動作確認用に導入
# ※tftp-server 導入時に xinetd があわせて導入される
yum -y install tftp
yum -y install tftp-server

# xinetd と tftp-server 起動設定
# ※tftp は有効にしておき、xinetd は手動起動とする
chkconfig tftp on
chkconfig --level 0123456 xinetd off

chkconfig --list | grep xinetd # xinetd が全ランレベルで off になっていること
cat /etc/xinetd.d/tftp # disable = no になっていること

# 動作確認 (デフォルトではIPv4のみ有効になっているのでIPv4でアドレス指定すること)
cd /var/lib/tftpboot/ #tftp-serverのルートディレクトリ (/etc/xinetd.d/tftp の server_args の -s にて指定)
echo helloworld > greeting
cd /tmp
tftp -v -m binary 172.16.158.105 -c get greeting # /tmp/greeting にファイルがDLされること
  # mode set to octet
  # Connected to 172.16.158.105 (172.16.158.105), port 69
  # getting from 172.16.158.105:greeting to greeting [octet]

DHCP設定

# インストール
yum -y install dhcp

# dhcpd 起動設定
# ※dhcpd は手動起動とする (IPv4とIPv6の両方のサービスが登録されるので両方自動起動しないようにする)
chkconfig --level 0123456 dhcpd off
chkconfig --level 0123456 dhcpd off

# dhcpd 設定
vi /etc/dhcp/dhcpd.conf #ファイル内容は次項

dhcpd.conf

ddns-update-style interim;
ignore client-updates;

subnet 172.16.160.0 netmask 255.255.255.0 {
    option subnet-mask 255.255.255.0;
    option domain-name "localdomain";
    range 172.16.160.200 172.16.160.250;
    default-lease-time 21600;
    max-lease-time 43200;

    # PXEブートイメージを格納するサーバ(tftpサーバを入れたサーバ)
    next-server 172.16.160.105;
    # NBP(Network Bootstrap Program)パス
    filename "/centos60x64/pxelinux.0";
}

PXEブート用設定

# PXE関連ファイル格納ディレクトリを作成 (dhcpd.conf に指定した filename と整合させる)
mkdir /var/lib/tftpboot/centos60x64

# OSメディアからカーネルイメージをコピー
cp -a /mnt/osmedia/images/pxeboot/vmlinuz /var/lib/tftpboot/centos60x64/
cp -a /mnt/osmedia/images/pxeboot/initrd.img /var/lib/tftpboot/centos60x64/
rpm2cpio /mnt/osmedia/Packages/syslinux-3.86-1.1.el6.x86_64.rpm | cpio -ivr '*/pxelinux.0'
  # ファイル名変更プロンプトが表示されるので /var/lib/tftpboot/centos60x64/pxelinux.0 に出力する
  # rename ./usr/share/syslinux/pxelinux.0 -> /var/lib/tftpboot/centos60x64/pxelinux.0
  # /var/lib/tftpboot/centos60x64/pxelinux.0
  # 5278 blocks

# ファイル確認
ls -l /var/lib/tftpboot/centos60x64/
  # -rw-r--r-- 1 root root 30064721 Jul 10 01:43 initrd.img
  # -rw-r--r-- 1 root root    16794 Oct 23 11:23 pxelinux.0
  # -rwxr-xr-x 1  500  500  3791040 Jul 10 01:43 vmlinuz

# pxelinux.0 に読ませる設定ファイル
mkdir /var/lib/tftpboot/centos60x64/pxelinux.cfg
vi /var/lib/tftpboot/centos60x64/pxelinux.cfg/default #ファイル内容は次項

pxelinux.cfg/default

default centos6.0

label centos6.0
kernel vmlinuz
append load initrd=initrd.img ksdevice=eth0 devfs=nomount