PXEブート環境を構築してみたかったので、チャレンジ。
サーバーは仮想マシン上に構築。
サーバーに使用した OS は Ubuntu 11.04。
PXE ブートさせる OS も Ubuntu 11.04。
すでにネットワーク上に DHCP サーバーが存在するので、 Proxy DHCP というものを利用。
以下、試行錯誤で成功した後にまとめた作業log。
必要な作業は全部網羅したはず。
$ sudo -i
で、以降 root で作業。
# フォルダの作成
$ mkdir /pxe
$ mkdir /pxe/images
$ mkdir /pxe/images/ubuntu-11.04
$ mkdir /pxe/pxelinux.cfg/
# syslinux のダウンロードとコピー
$ wget http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-4.04.tar.gz
$ tar zxf syslinux-4.04.tar.gz
$ cp syslinux-4.04/core/pxelinux.0 /pxe/
$ cp syslinux-4.04/com32/menu/menu.c32 /pxe/
# メニューファイルの作成
$ vi /pxe/pxelinux.cfg/default
# /pxe/pxelinux.cfg/default
DEFAULT menu.c32
PROMPT 1
NOESCAPE 0
ALLOWOPTIONS 0
TIMEOUT 100
MENU TITLE PXE Boot Menu
LABEL Ubuntu 11.04
kernel images/ubuntu-11.04/casper/vmlinuz
append boot=casper netboot=nfs nfsroot=192.168.1.110:/pxe/images/ubuntu-11.04 initrd=images/ubuntu-11.04/casper/initrd.lz -- splashd
LABEL Ubuntu 11.04(non splash)
kernel images/ubuntu-11.04/casper/vmlinuz
append boot=casper netboot=nfs nfsroot=192.168.1.110:/pxe/images/ubuntu-11.04 initrd=images/ubuntu-11.04/casper/initrd.lz
# live-cd のマウント
$ mount -o ro /dev/cdrom /pxe/images/ubuntu-11.04/
# TFTP サーバーのインストールと設定
$ apt-get install tftpd-hpa
$ vi /etc/default/tftpd-hpa
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/pxe"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"
RUN_DEAMON="yes"
$ /etc/init.d/tftpd-hpa restart
# NFS サーバーのインストールと設定
$ apt-get install nfs-kernel-server
# ネットワーク越しのマウントを許可
$ vi /etc/exports
# /etc/exports
/pxe/images/ubuntu-11.04 *(ro,all_squash,no_subtree_check,crossmnt)
$ /etc/init.d/nfs-kernel-server restart
$ svn co http://svn.coderepos.org/share/lang/c/pxe-pdhcp
$ cd pxe-pdhcp
# コード修正
$ vi pxe-pdhcp.c
# 330行目付近
ifr.ifr_name[IFNAMSIZ] = '\0';
↓
ifr.ifr_name[IFNAMSIZ-1] = '\0';
$ make # 出来れば一般ユーザーで実行
$ cd ..
$ cp pxe-pdhcp/pxe-pdhcp /pxe/
# 接続待機
$ /pxe/pxe-pdhcp -l 0.0.0.0 -b 255.255.255.255 -t 192.168.1.110 -d /pxe/pxelinux.0
以上の手順で出来るはず。
参考:
Proxy DHCPを使ってネットワークブートサーバーを構築する - 古橋貞之の日記