[an error occurred while processing this directive]

FreeBSD の pxeboot を用いた Diskless 環境の構築

概要

pxeboot を用い FreeBSD のネットワークブートをする際の覚え書き.

各サーバの設定と必要なファイル

PXEboot シーケンス概略図

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
      |--    :
      |--    :
[an error occurred while processing this directive]