FreeBSD7.1Rをpxeでインストールする。

最近、自宅で稼働しているFreeBSDが古く、パッチを充てるにも「新しいリリースにしてください」という事情が多くなってきたので、つい先日リリースされたFreeBSD7.1Rをインストールしてみようと思います。

今回、サーバとして使用するデスクトップマシンを準備したものの、CD-ROMドライブがありません。
「あぁ、USBの外付けDVDドライブで起動できるかな…。」なんて思っていたものの、なんとUSB起動できません。。。FDドライブはついているけれど、我が家にはFDついているマシンもなく…OSをどうやって入れるかが課題となりました。

「やったことないけど、pxeブートしてみるかな…。」ということで、ネットワークブートをし、そこからOSをインストールする方法を行ってみました。

今回、pxeのサーバにVirtualPC2007を使用して、まずはふつうにFreeBSD7.0(というか、なんでもよい)をインストールした環境を用いて、そこから実機にインストールします。

(1)isc-dhcpdをインストールし、 /etc/dhcpd.conf を記述します。
erver-identifier 10.1.1.1;
option domain-name “ixkenti.jp”;
option domain-name-servers 10.1.1.1;
option subnet-mask 255.255.255.0;
option routers 10.1.1.1;
option broadcast-address 10.1.1.255;
default-lease-time 31536000;
max-lease-time 63072000;
ddns-update-style ad-hoc;
subnet 10.1.1.0 netmask 255.255.255.0 {
}

host a {
hardware ethernet 00:xx:xx:xx:xx:D0;
fixed-address 10.1.1.2;
filename “pxeboot”;
option root-path “10.1.1.1:/tmp/nfs”;
}

(2)pxebootのbootローダを転送するためのtftpサーバを準備します。
こちらは、inetd.confより設定。

tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tmp/tftp

※この場合、/tmp/tftp に FreeBSDのCD内にある、pxeboot (/boot/pxeboot)をコピーします。

(3)nfsサーバの準備
1. /etc/rc.conf にnfs サーバーが起動するよう、記述します。
nfs_server_enable=”YES”
portmap_enable=”NO”

2. nfsサーバのマウント元となるディレクトリを /etc/exports に書きます。
/tmp/nfs -maproot=root 10.1.1.2
10.1.1.2はpxebootするクライアントのアドレスです。

3. /etc/hosts.allow で portmap へのアクセスを許可します。
portmap : 10.1.1.2 : allow

4.FreeBSD7.1rのCD-ROMを /mntへマウントさせ、/tmp/nfsへコピーします。
mount /cdrom
cp -pR /cdrom /tmp/nfs

5.上記でコピーした /tmp/nfs / boot/mfsroot は圧縮されているので、解凍しておきます。
gunzip -d /tmp/nfs/boot/mfsroot

6.pxebootしたときにインストーラが起動できるよう、loader.confを書き換えます。
#vi /tmp/nfs/boot/loader.conf

内容はこのように
mfsroot_load=”YES”
mfsroot_type=”mfs_root”
mfsroot_name=”/boot/mfsroot”
vfs.root.mountfrom=”ufs:/dev/md0c”

(4)dhcpサーバを起動し、あとはクライアントをネットワーク起動させれば、pxeboot可能なはずです。
dhcpd fxe0

すみません。防備録目的なので、かなり端折っているところがあると思いますがご愛嬌ということで。