FreeBSD の pxeboot を用いた Diskless 環境の構築
概要
pxeboot を用い FreeBSD のネットワークブートをする際の覚え書き.
各サーバの設定と必要なファイル
DHCP Server
- Config File(/etc/dhcpd.conf)
-
ddns-update-style none; shared-network HOGE{ option subnet-mask 255.255.255.0; option domain-name-servers 192.168.0.1; option domain-name "test.net"; default-lease-time 3600; max-lease-time 7200; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.100 192.168.0.200; option subnet-mask 255.255.255.0; option domain-name-servers 192.168.0.1; option domain-name "test.net"; } host foo{ hardware ethernet 00:02:2d:XX:YY:ZZ; <--- Client の MAC Address fixed-address 192.168.0.100; <--- Client に割り当てるべき IP Address option dhcp-client-identifier "PXEboot_foo"; filename "/FreeBSD/pxeboot"; <--- Client に送る boot loader の tftpd 的 path } }
tftp Server
- Config
- inetd 等から tftpd が起動されるように設定を行う. inetd より tftpd が起動されている場合は /etc/inetd.conf で tftp が 希望するディレクトリを chroot し起動する様設定されているか確認する.
- 用意するファイル
-
サーバ側の /tftpboot を tftpd 的 root(/) とすると以下のファイルを用意
する必要がある.
- /tftpboot/FreeBSD/pxeboot
-
FreeBSD の /usr/src/sys/boot/i386 で以下のように make し
/usr/src/sys/boot/i386/pxeldr 以下に出来た pxe 対応の loader.
# make -D LOADER_TFTP_SUPPORT
- /tftpboot/boot/loader.rc
-
FreeBSD の bootloader (pxeboot) の設定ファイル.
load /FreeBSD/kernel_${boot.netif.ip}.gz <--------- load する kernel の tftpd 的 path load -t mfs_root /FreeBSD/diskimage_${boot.netif.ip} <- load する diskimage の tftpd 的 path autoboot 10設定ファイル中の変数 ${boot.netif.ip} は,DHCP Server より Client に 割り当てられた IP Address (上の図の場合 192.168.0.100) に置き換わる. - /tftpboot/FreeBSD/kernel_192.168.0.100.gz
- MFS と MD_ROOT を有効にした kernel を kgzip したもの.
- /tftpboot/FreeBSD/diskimage_192.168.0.100
- root (/) となるファイルシステムのディスクイメージ. (mkdiskimageで作成)
ftp server
mkdiskimageによって作成されたディスク イメージは,各クライアント毎で個別の設定を行える様にするため /etc/rc の最初の部分で Anonymous ftp によりクライアント毎のファイルを get する 様にしている. その際の URL は
ftp://<ftp server ip address>/pxeboot/<client ip address>.gz
となる.
この際 ftp server ip address は,現在 DHCP Server の IP Address
を用いている.
- Config
- Anonymous ftp でアクセスした際,任意のディレクトリに chroot する様に 設定する.
- 用意するファイル
-
Anonymous ftp でアクセスした際の root (/) が Server の /hoem/ftp で有っ
たとすれば以下のファイルを用意する.
- /home/ftp/pxeboot/192.168.0.100.tgz
-
192.168.0.100.tgz は以下に示す様に,root 以下を固めたものとなっ
ている.
/ | |-- usr | : | : | |-- etc | |-- rc.conf |-- resolv.conf |-- : |-- :
