ネットワークブートでインストール

古いマシンや光学ドライブの無いマシンにインストールする時に インストールCD が起動できない状況がままある。 そんな場合でも、PXEBOOT (LANDesk) から行けるかもしれない。

流れは以下の通りだ。

  1. クライアントは PXEBOOT で起動する。
  2. PXEBOOT は DHCP サーバから IP アドレスを貰う。
  3. PXEBOOT は DHCP サーバからブートイメージの場所を教えてもらう。
  4. PXEBOOT は TFTP サーバからブートイメージを取得し、それを起動させる。
  5. ブートイメージは root path を NFS mount し、それを起動させる。
  6. インストーラが動き出す。

ここでは、実績ある構成についてメモしておく。

マシン構成

以下のものがあればよい。

  • 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 で起動すれば、インストーラが上がってくるはずだ。

[$Revision: 1.2 $ $Date: 2009.12.07 00:14:35 $]
[EOF]