PXE ブートで Ubuntu をインストール

テストであったり、先日のように Gutsy でパッケージをビルドするためであったりと理由は色々ですが、様々なマシンに Ubuntu を新規インストールすることが多くあります。基本的に CD からインストールするのですが、最近はデスクトップマシンですら CD ドライブを内蔵していないですし、CD を引っ張り出してくるのも面倒です。そこで前々から考えていた PXE ブートからのネットワークインストール環境を構築してみました。サーバになるマシンは常時稼働させてもよさげな GLANTANK。中身は Debian sarge です。
ネットワークブートさせるためにはサーバで dhcpd と tftpd を動作させる必要があります。既存の dhcp サーバは停止させておきましょう。

http://www.debian.org/releases/stable/i386/ch04s06.html.ja
このあたりが参考になります。dhcp サーバには dhcpd、tftp サーバには tftpd-hpa を使用しました。dhcpd.conf の設定は

option domain-name "hoge.org";
option domain-name-servers 192.168.1.x;

option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;
allow booting;
allow bootp;

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.xxx 192.168.1.yyy;
option broadcast-address 192.168.1.255;
option routers 192.168.1.x;
filename "/pxelinux.0";
next-server 192.168.1.z;
}

のような感じにしてみました。ぐぐってみると hardware ethernet を指定する例も見かけますが、特に指定しなくてもいいと思い省略です。
Debian の tftpd はデフォルトで /var/lib/tftpboot ディレクトリを使用するため、ここにインストーラを設置します。
http://archive.ubuntu.com/ubuntu/dists/hardy/main/installer-i386/current/images/netboot/netboot.tar.gz
を取ってきて、/var/lib/tftpboot で展開してください。pxelinux.0 というファイル*1ubuntu-installer があれば OK です。
あとはネットワークに接続した PC をブートすれば、dhcp でのアドレス取得に続いて Ubuntuインストーラが起動します。HP2133 でインストーラの起動、VMware Player でインストールの完了を確認しました。


各バージョンのインストーラをサーバ上に置いて選択できるようにしておけば、色々と便利そうです。手放せなくなりそう。

*1:というかリンク