4.5. TFTP ネットブート用ファイルの準備

インストール対象のマシンが LAN に接続されている場合、TFTP を用いると、そのマシンをネットワーク越しに他のマシンから起動できます。インストールシステムを別のマシンから起動するには、その「別のマシン」の特定の場所に起動ファイルを置き、またインストール対象のマシンの起動をサポートするよう設定しなければなりません。

TFTP サーバをセットアップする必要があり、そして多くのマシンでは DHCP サーバ、または BOOTP サーバのセットアップも必要です。

BOOTP は IP プロトコルのひとつです。 クライアントに対して、使うべき IP アドレスと、 ブートイメージをネットワークのどこから取得するかを伝えます。 DHCP (Dynamic Host Configuration Protocol) は、 BOOTP との後方互換性を保ちつつ、より柔軟に拡張させたものです。 システムによっては DHCP でしか設定できないこともあります。

Trivial File Transfer Protocol (TFTP) は、 ブートイメージをクライアントに提供するために用います。 理論的には、どんなサーバでも、どんなプラットフォームでも、 これらのプロトコルを実装してさえいれば利用できます。 この節では、SunOS 4.x, SunOS 5.x (Solaris), GNU/Linux での例を示します。

4.5.1. DHCP サーバの設定

フリーソフトウェアの DHCP サーバのひとつに、 ISC の dhcpd があります。 Debian GNU/Linux では、isc-dhcp-server パッケージをお勧めします。 以下に、設定ファイルの例を示します。 (/etc/dhcpd.conf を参照)

option domain-name "example.com";
option domain-name-servers ns1.example.com;
option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;
server-name "servername";

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.200 192.168.1.253;
  option routers 192.168.1.1;
}

host clientname {
  filename "/tftpboot.img";
  server-name "servername";
  next-server servername;
  hardware ethernet 01:23:45:67:89:AB;
  fixed-address 192.168.1.90;
}

この例では、servername というサーバがひとつあり、 DHCP サーバ, TFTP サーバ, ネットワークゲートウェイの仕事をすべて行っています。 domain-name オプション、サーバ名、クライアントのハードウェアアドレスは、 必ず変更する必要があります。 filename オプションは TFTP 経由で取得するファイルの名前です。

dhcpd の設定ファイルの編集を終えたら、 /etc/init.d/isc-dhcp-server restartdhcpd を再起動してください。

4.5.2. BOOTP サーバの設定

GNU/Linux で使える BOOTP サーバは 2 つあります。 ひとつは CMU の bootpd です。 もう 1 つは実際は DHCP サーバですが、ISC の dhcpd です。 Debian GNU/Linux では、 bootp パッケージと isc-dhcp-server パッケージにそれぞれ入っています。

CMU bootpd を使う場合は、まず /etc/inetd.conf ファイルの 該当行をアンコメント (または追加) する必要があります。 Debian GNU/Linux では update-inetd --enable bootps を実行し、 続いて /etc/init.d/inetd reload とすれば OK です。 BOOTP サーバが Debian で動かない場合は、以下のようにします。

bootps  dgram  udp  wait  root  /usr/sbin/bootpd  bootpd -i -t 120

ここで次に /etc/bootptab を作成します。 このファイルの書式は、 printcap, termcap, disktab ファイルなどでお馴染みの、 例のわかりにくい形式になっています。 詳細は bootptab マニュアルページを見てください。 CMU bootpd では、 クライアントのハードウェア (MAC) アドレスを知っておかなければなりません。 /etc/bootptab の例を示します。

client:\
  hd=/tftpboot:\
  bf=tftpboot.img:\
  ip=192.168.1.90:\
  sm=255.255.255.0:\
  sa=192.168.1.1:\
  ha=0123456789AB:

少なくともクライアントのハードウェアアドレスを指定している ha オプションは変更する必要があるでしょう。 bf オプションはクライアントが TFTP で取得するファイルを指定しています。 詳細は 「TFTP イメージを適切な場所に配置する」 を参照してください。

By contrast, setting up BOOTP with ISC dhcpd is really easy, because it treats BOOTP clients as a moderately special case of DHCP clients. Some architectures require a complex configuration for booting clients via BOOTP. If yours is one of those, read the section 「DHCP サーバの設定」. Otherwise you will probably be able to get away with simply adding the allow bootp directive to the configuration block for the subnet containing the client in /etc/dhcp/dhcpd.conf, and restart dhcpd with /etc/init.d/isc-dhcp-server restart.

4.5.3. TFTP サーバの立ち上げ

TFTP サーバの準備をする際に、まず、tftpd が有効であることを確認してください。

tftpd-hpa の場合には、サービスを走らせるのに 2 種類の方法があります。システムの inetd デーモンにより必要に応じて起動する方法と、独立したサーバとして起動する方法です。どちらにするかは、パッケージのインストール時や再設定時に選択できます。

注記

歴史的に TFTP サーバは、 イメージを提供するディレクトリに /tftpboot を使用します。 しかし Debian GNU/Linux のパッケージでは、 Filesystem Hierarchy Standard を満たす別のディレクトリを使用する可能性があります。 例えば、tftpd-hpa では /srv/tftp をデフォルトで使用します。 必要に応じて、本節の設定例を調整してください。

Debian で利用できる in.tftpd の代替はすべて、デフォルトで TFTP リクエストをシステムログに出力します。いくつかは、出力を冗長にする -v 引数をサポートしています。ブート時に問題がある場合、エラーの原因を診断する出発点として、ログメッセージをチェックすることをお勧めします。

4.5.4. TFTP イメージを適切な場所に配置する

次に行うことは、 「どこでインストールイメージを探すか」 の記述にある、必要な TFTP ブートイメージを、 tftpd のブートイメージディレクトリに置く作業です。 tftpd が特定のクライアントの起動に用いるファイルへのリンクを、 ここに作成してください。 残念ながら、ファイルの名前は TFTP クライアントによって決まり、 強制力のある標準は存在しません。