ネットワークブートでインストール
古いマシンや光学ドライブの無いマシンにインストールする時に インストールCD が起動できない状況がままある。 そんな場合でも、PXEBOOT (LANDesk) から行けるかもしれない。
流れは以下の通りだ。
- クライアントは PXEBOOT で起動する。
- PXEBOOT は DHCP サーバから IP アドレスを貰う。
- PXEBOOT は DHCP サーバからブートイメージの場所を教えてもらう。
- PXEBOOT は TFTP サーバからブートイメージを取得し、それを起動させる。
- ブートイメージは root path を NFS mount し、それを起動させる。
- インストーラが動き出す。
ここでは、実績ある構成についてメモしておく。
マシン構成
以下のものがあればよい。
- DHCP サーバ 兼 TFTP サーバ
- NFS サーバ
- インストールされる機械
言うまでもないが、これらが LAN 接続されている必要がある。
DHCP サーバと TFTP サーバは、うまく分離できない。 このサーバは、IP アドレスとブートイメージを提供する役割である。 TFTP サーバには、インストーラディスクの /boot/pxeboot を配置する。
NFS サーバは、DNS / TFTP サーバと相乗りでも構わない。 このサーバは、ブートイメージが起動する物を提供する役回りである。
DHCP サーバ設定
DHCP サーバの役割は、IP アドレスを与えてブートイメージの場所を教えてあげることだ。 ports から isc-dhcp31-server などを入れて使う。 具体的には、以下のような設定となる。
host xxxx { hardware ethernet 00:00:12:ab:cd:ef; fixed-address 12.34.56.78; filename "pxeboot"; option dhcp-client-identifier "pxe_foo"; option root-path "12.34.56.90:/usr/pxeroot"; }
キモとなるのは filename と root-path の指定だ。
filename には、tftp でアクセスして取得できるパスを書く。
root-path には、NFS mount する場所を書く。
TFTP サーバ設定
TFTP サーバの役割は、クライアントが ブートイメージを持っていけるようにすることだ。 inetd から起動するようにする。 具体的には、以下のような設定となる。
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /pxe
この例では、/pxe ディレクトリに tftp でのアクセスを許可している。
先の DHCP の設定と合わせて読むと、 ブートイメージの実体の場所はサーバ上の /pxe/pxeboot だ、ということになる。
NFS サーバ設定
NFS サーバの役割は、インストールディスクの中身を提供することだ。 今どきの FreeBSD であれば iso イメージを tar で展開できるので、 /etc/exports に書いたパスに置いておく。 exports ファイルが以下のようになるとすると、
/usr/pxeroot -maproot=root -network 12.34.56.0 -mask 255.255.255.0
/usr/pxeroot 以下に README.TXT とか 8.0-RELEASE とかが見えればOKだ。
最後に、loader に mfs の指定を行う。上記例で言えば、 /usr/pxeroot/boot/loader.conf を編集し、以下のようにする。
mfsroot_load="YES" mfsroot_type="mfs_root" mfsroot_name="/boot/mfsroot" vfs.root.mountfrom="ufs:/dev/md0" ← 追加
以上で、クライアントを PXEBOOT で起動すれば、インストーラが上がってくるはずだ。