nmtysh.log

Tech系のネタや日々の独り言などを書いています。

Ubuntu 11.04 PXEブート環境の構築

PXEブート環境を構築してみたかったので、チャレンジ。

 

サーバーは仮想マシン上に構築。

サーバーに使用した OS は Ubuntu 11.04。

 

PXE ブートさせる OS も Ubuntu 11.04。

 

すでにネットワーク上に DHCP サーバーが存在するので、 Proxy DHCP というものを利用。

PXEには3種類ある - 古橋貞之の日記

 

以下、試行錯誤で成功した後にまとめた作業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

 

# Proxy DHCP のダウンロードとコンパイル

$ 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

 

以上の手順で出来るはず。

 

参考:

PXEには3種類ある - 古橋貞之の日記

Proxy DHCPを使ってネットワークブートサーバーを構築する - 古橋貞之の日記

ライブUbuntuをネットワークブートする - ディスクレスサーバ構築 - adsaria mood

Proxy DHCP サーバで PXE ブート - daily dayflower