Diskless operation

原作: Martin Renters

訳: 鈴木 康修

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

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

セットアップの手順

  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 bc dh sv ブートフラグの設定

    完全にディスクレスな場合の一般的な 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を作成します.

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

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

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

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