FreeBSD ハンドブック
Prev | Chapter 21. 高度なネットワーク | Next

# 21.5. Diskless operation

原作: Martin Renters `<martin@FreeBSD.org>`

訳: 鈴木 康修 `<yasu@hike.te.chiba-u.ac.jp>`

`netboot.com`/`netboot.rom` によって、 ディスクのないクライアントでネットワーク経由で FreeBSD マシンのブートを行い FreeBSD を走らせることができます。 2.0 ではローカルなスワップを持つことができます。 NFS 経由のスワッピングもサポートされています。

サポートされているイーサネットカード: Western Digital/SMC 8003, 8013, 8216 とその互換ボード, NE1000/NE2000 とその互換カード (再コンパイルが必要)

## 21.5.1. セットアップの手順

1. サーバにするマシンを見つけます。 このマシンには、 FreeBSD 2.0のバイナリとbootpを 記憶するだけの十分なディスクスペースが必要です。 tftp と NFS も使えます。 テストしたマシン:

   - HP9000/8xx / HP-UX 9.04以降 (9.04以前では動きません)

   - Sun/Solaris 2.3. (bootpが必要)

2. クライアントにIP、gateway、netmaskを提供する bootpサーバをセットアップします。

       diskless:\
               :ht=ether:\
               :ha=0000c01f848a:\
               :sm=255.255.255.0:\
               :hn:\
               :ds=192.1.2.3:\
               :ip=192.1.2.4:\
               :gw=192.1.2.5:\
               :vm=rfc1048:

3. クライアントにブート情報を提供する TFTP サーバを (bootp サーバと同じマシンに) セットアップします。 このファイルの名前は、 `cfg.`X.X.X.X`` (もしくは `/tftpboot/cfg.`X.X.X.X`` )で、 ここで `X.X.X.X` はクライアントの IP アドレスです。 このファイルの内容は netboot コマンドで有効です。 2.0では、 netboot は以下のようなコマンドを持ちます:

   help | helpリストの表示
   ip ``X.X.X.X`` | クライアントのIPアドレスの表示/セット
   server ``X.X.X.X`` | bootp/tftp サーバのアドレスの表示/セット
   netmask ``X.X.X.X`` | netmaskの表示/セット
   hostname `name` | hostnameの表示/セット
   kernel ``name`` | カーネル名の表示/セット
   rootfs ``ip:/fs`` | root ファイルシステムの表示/セット
   swapfs ``ip:/fs`` | swap ファイルシステムの表示/セット
   swapsize ``size`` | diskless swapsize を KBytes単位でセット
   diskboot | ディスクからのブート
   autoboot | ブートプロセスの続行
   trans `on`|`off` | トランシーバのオン|オフ
   flags `b` `c` `d` `h` `s` `v` | ブートフラグの設定

   完全にディスクレスな場合の一般的な cfg ファイルは以下のようになります:

       rootfs 192.1.2.3:/rootfs/myclient
       swapfs 192.1.2.3:/swapfs
       swapsize 20000
       hostname myclient.mydomain

   ローカルに swap を持つマシンについては以下のようになります:

       rootfs 192.1.2.3:/rootfs/myclient
       hostname myclient.mydomain

4. NFS サーバがクライアントにroot(必要ならswapも) ファイルシステムをexportしているか、 また、 クライアントがこれらのファイルシステムに ルートアクセスできるか確認します。 FreeBSDにおける一般的な `/etc/exports` ファイルは 以下のようになります:

       /rootfs/myclient -maproot=0:0 myclient.mydomain
       /swapfs -maproot=0:0 myclient.mydomain

   そして、 HP-UX側では以下のようになります:

       /rootfs/myclient -root=myclient.mydomain
       /swapfs -root=myclient.mydomain

5. NFS経由でスワッピングを行う場合 (完全にディスクレスな場合の設定)、 クライアントが使用する swap ファイルを `dd` で作成します。 もし、 `swapfs` コマンドが上記の例のように 引数 `/swapfs`を持ちそのサイズが 20000 である場合、 myclientに対するスワップファイルは `/swapfs/swap.`X.X.X.X`` で呼び出されます。 ここで `X.X.X.X` はクライアントの IP アドレスです。 例:

       # dd if=/dev/zero of=/swapfs/swap.192.1.2.4 bs=1k count=20000

   また、 スワッピングが開始されるとクライアントの スワップスペースはセンシティブな情報を含むようになるので、 不正なアクセスを防止するため、 このファイルへの 読み書きのアクセス制限がなされていることを確認して下さい:

       # chmod 0600 /swapfs/swap.192.1.2.4

6. クライアントがそれぞれのrootファイルシステムとして使う ディレクトリにrootファイルシステムを展開します (上記の例では`/rootfs/myclient`)。

   - HP-UX システム: サーバはHP9000/800 シリーズのマシンで、 HP-UX 9.04 以降が必要です。 これ以前のバージョンでは NFS を経由するデバイスファイルが作成ができません。

   - `/rootfs/myclient` に `/dev` を 展開する際に、 いくつかのシステム (HPUX) では FreeBSD に合った デバイスファイルが作成されないので 注意してください。 その際には最初の起動時にシングルユーザモードに 移行して (ブートの段階でCtrl-Cを押す)、 `/dev` に移って `sh ./MAKEDEV all` として、 クライアントからこれを 修正してください。

7. クライアントで `netboot.com` を実行するか、 `netboot.rom` ファイルから EPROMを作成します。

## 21.5.2. `/` および `/usr` ファイルシステムを共有して使用する

今のところ、 これを行う公式に認められた方法はありませんが、 私はそれぞれのクライアントで `/usr` ファイルシステムと個々の `/` ファイルシステムを共有して使っています。 どなたかこれをきちんと行うやり方の提案がありましたら、 私に、 もしくは FreeBSD core team グループに知らせてください。

## 21.5.3. 特定の設定についてnetbootをコンパイルする

`/sys/i386/boot/netboot/Makefile` の中の設定を変更して コンパイルすることで、 netbootでNE1000/2000 カードをサポートします。 このファイルの先頭にあるコメントを見てください。

Prev | Home | Next
NFS | Up | ISDN