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

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

設定が必要なのは TFTP サーバです。 また CATS マシンでは BOOTP サーバ . のいずれかの設定が必要です。

Sparc や PowerPC マシンの Open Firmware とは異なり、 SRM コンソールは IP アドレスの取得に RARP を使いません。 従って Alpha をネットワークブートするには BOOTP を使う必要があります。 ネットワークインターフェースの IP の設定は、 直接 SRM コンソールから入力することもできます。 [3]

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

4.4.1. TFTP サーバの立ち上げ

TFTP サーバを立ち上げるには、 まず tftpd が有効になっているか確認します。 /etc/inetd.conf に次のような行があればおそらく大丈夫です。


tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd /tftpboot

Debian パッケージは一般的にインストールする際、 デフォルトで正しくセットアップできます。

/etc/inetd.conf を見て、in.tftpd の引数に与えられているディレクトリを覚えてください。 後でこのディレクトリを使います。 in.tftpd のバージョンによっては、 -l 引数をつけると、 すべての要求をシステムログに記録できます。 これは起動エラーの診断に有用です。 /etc/inetd.conf を変更したら、 変更したことを inetd に伝えなければなりません。 Debian マシンでは /etc/init.d/inetd reload を実行します。 他のマシンでは、inetd のプロセス ID を見つけて、 kill -HUP inetd-pid を実行します。

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

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

TFTP クライアントが検索するファイルは、 client-ip-in-hexclient-architecture であることが多いです。 client-ip-in-hex を計算するには、 クライアントの IP アドレスの各バイトを 16 進数表記に変換します。 bc プログラムが使えるマシンが手元にあるようなら、 これを使うのがいいでしょう。 まず obase=16 コマンドを実行し、 出力を 16 進にします。続いてクライアントの IP アドレスの各部を ひとつづつ入力します。 client-architecture の値には、 いろいろな値を入れて試してみてください。

4.4.2.1. Alpha TFTP ブート

Alpha では、SRM の boot コマンドの -file 引数を使うか、 BOOT_FILE 環境変数を使うかして、 ファイル名を (ブートイメージディレクトリからの相対パスとして) 与える必要があります。 あるいはファイル名は、BOOTP から (ISC dhcpd なら filename ディレクティブによって) 与えることもできます。 Open Firmware とは異なり、SRM には デフォルトのファイル名はありません。 従って、これらの方法のいずれかでファイル名を与えなければなりません。

4.4.3. メモリの少ないシステムでの TFTP インストール

システムによっては、標準のインストール RAM ディスクと、 TFTP ブートイメージに必要なメモリとをあわせると、 メモリが足りないことがあります。 この場合でも TFTP を用いたインストールは可能で、 ルートディレクトリを同様にネットワークから NFS でマウントするようにすればいいのです。 このタイプの設定は、 ディスクレスクライアントやデータレスクライアントにも適しています。

まず、項4.4. 「TFTP ネットブート用ファイルの準備」 に説明されている全ての手順を踏んでください。

  1. Linux カーネルイメージを TFTP サーバにコピーします。 起動させようとしているアーキテクチャの a.out イメージにしてください。

  2. root アーカイブを NFS サーバで untar します (NFS サーバは TFTP サーバと同じマシンでも構いません)。

    
    # cd /tftpboot
    # tar xvzf root.tar.gz
    
    

    GNU tar を使ってください。 (SunOS のものなど、他の tar プログラムでは、 デバイスを通常のファイルとして扱ってしまいます)

  3. /tftpboot/debian-sparc-root ディレクトリを、 クライアントから root でアクセスできるようにします。 つまり次の行を /etc/exports に追加します (GNU/Linux の書式ですが、SunOS でも同じようなもののはず):

    
    /tftpboot/debian-sparc-root client(rw,no_root_squash)
    
    

    注意: "client" は、起動しようとしているシステムの (このサーバから見た) ホスト名または IP アドレスにします。

  4. /tftpboot ディレクトリに、 debian-sparc-root に対するシンボリックリンクを、 IP アドレスの名前 (ドット区切り表記) で作ります。 例えばクライアントの IP アドレスが 192.168.1.3 なら次のようにします。

    
    # ln -s debian-sparc-root 192.168.1.3
    
    

4.4.4. TFTP と NFS Root でのインストール

項4.4.3. 「メモリの少ないシステムでの TFTP インストール」 の場合と似ています。 RAM ディスクをロードせず、 新しく作った NFS-root ファイルシステムから起動させたいわけですから。 tftpboot イメージへのシンボリックリンクは、 カーネルイメージへのシンボリック (例えば linux-a.out) に置き換える必要があります。

RARP/TFTP は、すべてのデーモンが同じサーバで動作している必要がありました (sparc ワークステーションは TFTP リクエストを以前の RARP リクエストに 返答したサーバに送ります)。



[3] Alpha システムは DECNet MOP (Maintenance Operations Protocol) を使ってもネットワークブートできます。 しかしここでは詳細については扱いません。 MOP を使って Alpha で Linux を起動する差し迫った必要が生じたら、 おそらくあなたの部門の OpenVMS 管理者が助けてくれるでしょう。