PXEBOOT を使ってネットワークインストールの巻 その 1

Panasonic LetsNote CF-R1 に FreeBSD をネットワークインストールした時のメモを書いておきます。かなりテキトーなのでおかしな所があったらすみません。

環境

  • FreeBSD 4.7-RELEASE/5.1-RELEASE で動作確認してます。
  • DHCP、TFTP を動作させるマシン 192.168.20.1
  • DHCP で配布する IP アドレス 192.168.20.128-254
  • TFTP のルートディレクトリ /tftpboot
  • ブートイメージファイルを置くディレクトリ /nfs/bootimg/

□ tftpd 設定
/tftpboot を作成し、インストール CD-ROM から boot/ 以下にある pxeboot ファイルをコピーする。

/etc/inetd.conf を編集(tftp のコメントを外す)して inetd を再起動する。

tftp    dgram   udp     wait    root    /usr/libexec/tftpd      tftpd -s /tftpboot

5.1R では標準では inetd が動いてないので注意。
実際に tftp してファイルが取得できるか確認しておく。

# tftp 192.168.20.1 
tftp> get pxeboot
Received 240353 bytes in 0.2 seconds
tftp> quit

□ nfsd 設定
/etc/rc.conf

nfs_server_enable="YES"
nfs_server_flags="-u -t -n 4"
mountd_flags="-r"

/etc/exports

/nfs/bootimg -maproot=root -ro -network 192.168.20.0 -mask 255.255.255.0

□ bootimg 作成
インストール用 CD-ROM の /floppy に boot.flp というファイルがあります。これを vnconfig (5.1-RELEASE では mdconfig) を使って中身を取り出します。

# cp /cdrom/floppy/boot.flp /tmp/
# vnconfig -c vn0 boot.flp
# mount /dev/vn0c /mnt/

中のファイル(boot/* kernel.gz mfsroot.gz)を /nfs/bootimg にコピーします。

nfs が機能しているか確認。

# mount_nfs 192.168.20.1:/nfs/bootimg /mnt/

□ dhcpd インストール
ports から isc-dhcp3 をインストール。
dhcpd.conf

option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

ddns-update-style none;
log-facility local7;

subnet 192.168.20.0 netmask 255.255.255.0 {
 range 192.168.20.128 192.168.20.254;
 option routers 192.168.20.1;
 option broadcast-address 192.168.20.255;
 next-server 192.168.20.1;
 filename "pxeboot";
 option root-path "/nfs/bootimg";
}

dhcpd を起動させます。

□ クライアント PC 起動
ネットワークブートを有効にしたクライアント PC を起動させます。

Intel UNDI, PXE-2.0 (build 078)
Copyright (C) 1997,1998,1999  Intel Corporation

CLIENT MAC ADDR: 00 D0 B7 ** ** **  GUID: ********-****-****-****-**********
DHCP.../

Relocating the loader and the BTX
Starting the BTX loader

BTX loader 1.00  BTX version is 1.01
Console: internal video/keyboard
BIOS drive A: is disk0
BIOS drive C: is disk1

PXE version 2.1, real mode entry point @9d77:0106
BIOS 638kB/261056kB available memory

FreeBSD/i386 bootstrap loader, Revision 1.1
(root@wv1u.btc.adaptec.com, Sat Jan 10 23:55:58 GMT 2004)
pxe_open: server addr: 192.168.20.1
pxe_open: server path: /nfs/bootimg
pxe_open: gateway ip:  192.168.20.1
/kernel text=0x257ba8 data=0x32d68+0x3fb78 |
/
Hit [Enter] to boot immediately, or any other key for command prompt.
Booting [/kernel] in 4 seconds...

Type '?' for a list of commands, 'help' for more detailed help.

シリアルコンソールに出力したい時はここで一旦止めて

set console=comconsole 

してやりましょう。後は普通のインストールと同様にすればよいかと思います。nfsftp 等経由でインストールしてあげましょう。

参考ページ

追記 2004.04.14
VLAN と VLAN スイッチを使ってスイッチのポート毎に違うバージョンをインストール出来るよう*1にしてるのでちょっと回りくどい感じになってます。(VLAN の部分は端折ってます。) もっと楽な方法があると思うのですが面倒くさがりなので直してません。ごめんなさい。

通常はインストール用の iso イメージをマウントして NFS でインストールするのが一番簡単で楽かと思います。

 # mdconfig -a -t vnode -f 4.9-RELEASE-p4-i386-miniinst.iso -u 1
 # mount -t cd9660 -o ro /dev/md1 /nfs 

*1:2番ポートだと4.9-RELEASE 3番ポートだと 5.1-RELEASE 4番だと 5.2.1-RELEASE 見たいな感じです。