戻る | 進む | 目次

Diskless NetBSD HOW-TO, インストールの仕上げ

この最後の節では、サーバーをブートしたときに、これまでに設定したデーモンが すべて自動的に動くようにする方法を説明します。

さらに、クライアントのカーネルを再コンパイルしたいと思われるかもしれません。 DISKLESS コンフィグファイルを使うと、小さい (SCSI、 HP-IB、 NFS サーバーなどを含まない) カーネルが作られ、 ロードが早くでき、また RAM を節約できるようになります。 これについての詳しい情報は NetBSD カーネル FAQ の カーネルの作り方 にあります。

このほか、ネットワーク経由でのロードを速くするため、 (遅いクライアントであっても) nfs サーバー上のカーネルを gzip で圧縮するという方法もあります。 このカーネルの名前が netbsd でなくても、クライアントはブートしますが、 これは netbsd という名前のファイルが nfs サーバー上になかったので 次のカーネル名を試したら、それが単に netbsd.gz だった、というだけのことです。 NetBSD のブートローダーは、ロードと実行が成功するまで、以下のファイルを順に ロードしようとします:

	netbsd
	netbsd.gz
	netbsd.bak
	netbsd.bak.gz
	netbsd.old
	netbsd.old.gz
	onetbsd
	onetbsd.gz

NetBSD での仕上げ
OpenBSD での仕上げ
FreeBSD での仕上げ
Mac OS X と Darwin での仕上げ
Linux での仕上げ
SunOS での仕上げ
Solaris での仕上げ
NEWS-OS での仕上げ
NEXTSTEP での仕上げ
HP-UX 9 での仕上げ
HP-UX 10 での仕上げ


NetBSD

NetBSD では、 rc 設定パラメーターはすべて /etc/defaults/rc.conf に含まれています。このファイルを書き換えてはいけません。そのかわりに、 必要な行を /etc/rc.conf にコピーして、そちらを書き換えます。

  1. クライアント固有のデーモンの設定:

    • hp300 の rbootd の設定のため、 /etc/rc.conf を編集して、 下記の行があることを確かめます:
      rbootd=YES              rbootd_flags=""

    • vax の mopd の設定のため、 /etc/rc.conf を編集して、 下記の行があることを確かめます:
      mopd=YES              mopd_flags="-a"
  2. rarpd と bootparamd の設定:
    /etc/rc.conf を編集して、下記の行があることを確かめます:
    rarpd=YES               rarpd_flags="-a"
    bootparamd=YES          bootparamd_flags=""

  3. dhcpd の設定:
    /etc/rc.conf を編集して、下記の行があることを確かめます:
    dhcpd=YES               dhcpd_flags="-q"

  4. nfs の設定:
    /etc/rc.conf を編集して、下記の行があることを確かめます:
    nfs_server=YES                             # enable server daemons
                            mountd_flags=""
                            nfsd_flags="-6tun 4"

おめでとうございます、これで終わりです !


OpenBSD

OpenBSD 2.3 以降向け (それより前のバージョンでは、 /etc/netstart ファイルを編集する必要があります):

  1. クライアント固有のデーモンの設定:

    • hp300 の rbootd の設定のため、 /etc/rc.conf を編集して、 下記の行があることを確かめます:
      rbootd=""

    • vax の mopd の設定のため、 /etc/rc.conf を編集して、 下記の行があることを確かめます:
      mopd_flags="-a"
  2. rarpd と bootparamd の設定:
    /etc/rc.conf を編集して、下記の行があることを確かめます:
    rarpd="-a"
    bootparamd=""

  3. dhcpd の設定:
    /etc/rc.conf を編集して、下記の行があることを確かめます:
    dhcpd_flags="-q"

  4. nfs の設定:
    /etc/rc.conf を編集して、下記の行があることを確かめます:
    nfs_server=YES

おめでとうございます、これで終わりです !


FreeBSD

最近のバージョンの FreeBSD では、 rc 設定パラメーターはすべて /etc/defaults/rc.conf に含まれています。このファイルを書き換えてはいけません。そのかわりに、 必要な行を /etc/rc.conf にコピーして、そちらを書き換えます。

  1. クライアント固有のデーモンの設定:

    • hp300 の rbootd の設定のため、 /etc/rc.local を編集して、 下記の行を追加します:
      echo -n ' rbootd'
      /usr[/local]/libexec/rbootd
      echo -n ' bootparamd'
      /usr/sbin/bootparamd

    • vax の mopd の設定のため、 /etc/rc.local を編集して、 下記の行を追加します:
      echo -n ' mopd'
      /usr/local/sbin/rbootd
      echo -n ' bootparamd'
      /usr/sbin/bootparamd
  2. rarpd の設定:
    /etc/rc.conf (古いバージョンでは /etc/sysconfig ) を編集して、下記の行があることを確かめます:
    rarpd_enable="YES"
    rarpd_flags="-a -s"

  3. dhcpd の設定:
    おそらく、 dhcpd を起動するための行が /etc/rc.conf にあります。

  4. nfs の設定:
    FreeBSD nfs サーバーには、 NetBSD が使っているような 8KB ブロックサイズを 扱えないものがあります ( http://www.freebsd.org/doc/handbook/network-nfs.html 参照; 訳註: 日本語訳 http://www.jp.FreeBSD.org/www.FreeBSD.org/doc/ja_JP.eucJP/books/handbook/nfs.html) 。 非常に悪い性能 (2 KB/sec 程度) しか出ない場合や、 深刻な問題が起きた場合は、次のようにする必要があるかもしれません:

    1. クライアントの /etc/rc の冒頭に、次の行を追加する:
      mount -t nfs -a -o -I=1024,-r=1024,-w=1024 nfsserver:/export/client/root/ /

    2. より小さいブロックサイズを使うようクライアントのカーネルを構築し直す、 特に、次の行がコンフィグファイルに必要です:
      options NFS_BOOT_RWSIZE=1024

    3. NetBSD カーネル FAQ の項目 カーネルの作り方 に従ってください。

    また、いくつかの FreeBSD バージョンでは NFS3 に問題があります。 nfs を試したときに問題がある場合は、 mountd の起動時に -r2 フラグを含めるようにしてください。

    /etc/rc.conf (古いバージョンでは /etc/sysconfig ) を編集して、下記の行が設定されていることを確かめます:

    nfs_server_enable="YES"
    mountd_flags="-[2]r"

  5. 詳細なロギングの設定 (任意):
    クライアントがブートしようとする都度 /var/log/bootlog に記録するよう、 /etc/syslog.conf に下記の行を追加 したいと思う方がいるかもしれません:
    !rbootd
    *.*                                             /var/log/bootlog
    !rarpd  
    *.*                                             /var/log/bootlog

おめでとうございます、これで終わりです !


Mac OS X と Darwin

Mac OS X と Darwin では、システム起動スクリプト群は /System/Library/StartupItems/ に置かれます。ユーザー起動スクリプト群 このようなスクリプト群を作り、ネットブートサービスの起動のために、 /Library/StartupItems 内に置きたいところでしょう。 NFS サービスは、 /exports という NetInfo ディレクトリーが存在していれば常に起動します。

/etc/hostconfig では、組み込まれているサービスのうちどれが自動的に 起動するかを記述します。ネイティブの bootpd が起動しないようにするため (これはネットブートに使えませんし dhcpd と衝突します)、 以下の行を設定しておきます:

CONFIGSERVER=-NO-
NETBOOTSERVER=-NO-

SystemStarter HOWTO が、スタートアップファイル群の作成方法を学ぶうえでの よい参考資料となるでしょう。

  1. # mkdir -p /Library/StartupItems/NetBSDNetBoot

  2. 下記の内容の /Library/StartupItems/NetBSDNetBoot/StartupParameters.plist ファイルを作成します:
    {
      Description     = "NetBoot services for NetBSD clients";
      Provides        = ("DHCPD",
                         "bootparams",
                         "rbootd");
      Requires        = ("NetInfo",
                         "Network");
      OrderPreference = "None";
      Messages =
      {
        start = "Starting NetBSD NetBoot services";
        stop  = "Stopping NetBSD NetBoot services";
      };
    }

  3. 下記の内容の /Library/StartupItems/NetBSDNetBoot/NetBSDNetBoot ファイルを作成します:
    #!/bin/sh
    
    . /etc/rc.common
    
    ##
    # Start up NetBSD NetBoot services
    ##
    
    ConsoleMessage "Starting NetBSD NetBoot Services"
    
    ##
    # Start NetBSD NetBoot services
    ##
    /usr/libexec/rbootd
    bootparamd
    dhcpd -q

  4. # chown -R root /Library/StartupItems/NetBSDNetBoot
    # chmod a+rx /Library/StartupItems/NetBSDNetBoot/NetBSDNetBoot

おめでとうございます、これで終わりです !


Linux

Linux の nfs サーバーには、 NetBSD が使っているような 8KB ブロックサイズを 扱えないものがあります。非常に悪い性能 (2 KB/sec 程度) しか出ない場合や、 深刻な問題が起きた場合は、次のようにする必要があるかもしれません:

  1. クライアントの /etc/rc の冒頭に、次の行を追加する:
    mount -t nfs -a -o -I=1024,-r=1024,-w=1024 nfsserver:/export/client/root/ /

  2. より小さいブロックサイズを使うようクライアントのカーネルを構築し直す、 特に、次の行がコンフィグファイルに必要です:
    options NFS_BOOT_RWSIZE=1024

  3. NetBSD カーネル FAQ の項目 カーネルの作り方 に従ってください。

また、いくつかの linux の実装は NFS3 に問題があります。 nfs を試したときに問題がある場合は、 rpc.mountd の起動時に --no-nfs-version 3 フラグを含めるようにしてください。

linux によって、デーモンの起動方法は異なります。 下記からお使いのディストリビューションを選び、それぞれの指針に従ってください。


Slackware Linux での仕上げ

  1. クライアント固有のデーモンの設定:

    • hp300 の rbootd の設定のため、下記の行を /etc/rc.d/rc.local ファイルに追加します
      #Start the daemons to netboot a NetBSD client
      echo -n 'Starting diskless server daemons:'
      if [ -f /usr/local/bin/rbootd ]; then
          echo -n ' rbootd'; /usr/local/bin/rbootd > /dev/null
      fi

    • vax の mopd の設定のため、下記の行を /etc/rc.d/rc.local ファイルに追加します
      #Start the daemons to netboot a NetBSD client
      echo -n 'Starting diskless server daemons:'
      if [ -f /usr/local/sbin/mopd ]; then
          echo -n ' mopd'; /usr/local/sbin/mopd > /dev/null
      fi
  2. rarpd と bootparamd の設定:
    下記の行を、 /etc/rc.d/rc.local の、お使いのクライアント固有のデーモンの部分の後に追加します
    echo -n ' arp'
    /sbin/arp -s client CC:CC:CC:CC:CC:CC
    /sbin/rarp -s client CC:CC:CC:CC:CC:CC
    if [ -f /usr/[local]/sbin/rpc.bootparamd ]; then
        echo -n ' rpc.bootparamd'; /usr/[local]/sbin/rpc.bootparamd > /dev/null
    fi
    echo '.'

  3. dhcpd の設定:
    これはお使いのディストリビューションに dhcpd が附属しているかどうかによって異なります。 もし附属していれば、おそらく何らかの起動スクリプトが使えるでしょう。 そうでなければ、下記の行を /etc/rc.d/rc.local に追加します。
    echo -n ' dhcpd'
    if [ -f /usr/[local]/sbin/dhcpd ]; then
        /usr/[local]/sbin/dhcpd -q
    fi
    echo '.'

  4. nfs の設定
    /etc/rc.d/rc.inet2 で下記の行が (# で) コメントアウトされて いないことを確かめます:
    if [ -f ${NET}/rpc.portmap ]; then
      # Start the NFS server daemons.
      if [ -f ${NET}/rpc.mountd ]; then
        echo -n " mountd"
        ${NET}/rpc.mountd
      fi
      if [ -f ${NET}/rpc.nfsd ]; then
        echo -n " nfsd"
        ${NET}/rpc.nfsd
      fi
    fi # Done starting various SUN RPC servers.

おめでとうございます、これで終わりです !


Red Hat Linux での仕上げ

VAX Network Booting HOWTO には、 Red Hat linux 用の SysV 風のスクリプト 設定方法についての議論があります。

もしこれについて面倒な思いをしたくなければ、単に /etc/rc.d/rc.local にデーモンを追加することができます。

  1. クライアント固有のデーモンの設定:

    • hp300 の rbootd の設定のため、下記の行を /etc/rc.d/rc.local ファイルに追加します
      #Start the daemons to netboot a NetBSD client
      echo -n 'Starting diskless server daemons:'
      if [ -f /usr/local/bin/rbootd ]; then
          echo -n ' rbootd'; /usr/local/bin/rbootd > /dev/null
      fi

    • vax の mopd の設定のため、下記の行を /etc/rc.d/rc.local ファイルに追加します
      #Start the daemons to netboot a NetBSD client
      echo -n 'Starting diskless server daemons:'
      if [ -f /usr/local/sbin/mopd ]; then
          echo -n ' mopd'; /usr/local/sbin/mopd > /dev/null
      fi
  2. rarpd と bootparamd の設定:
    下記の行を、 /etc/rc.d/rc.local の、お使いのクライアント固有のデーモンの部分の後に追加します
    echo -n ' arp'
    /sbin/arp -s client CC:CC:CC:CC:CC:CC
    /sbin/rarp -s client CC:CC:CC:CC:CC:CC
    if [ -f /usr/[local]/sbin/rpc.bootparamd ]; then
        echo -n ' rpc.bootparamd'; /usr/[local]/sbin/rpc.bootparamd > /dev/null
    fi
    echo '.'

  3. dhcpd の設定:
    これはお使いのディストリビューションに dhcpd が附属しているかどうかによって異なります。 もし附属していれば、おそらく何らかの起動スクリプトが使えるでしょう。 そうでなければ、下記の行を /etc/rc.d/rc.local に追加します。
    echo -n ' dhcpd'
    if [ -f /usr/[local]/sbin/dhcpd ]; then
        /usr/[local]/sbin/dhcpd -q
    fi
    echo '.'

  4. nfs の設定:
    実際、 NFS は Red Hat システムではデフォルトで有効になっているでしょう。 もし NFS3 エラーが起きた場合は、 /etc/rc.d/init.d/nfs の読まれる行を書き換えます:
    daemon rpc.mountd --no-nfs-version 3

おめでとうございます、これで終わりです !


Debian Linux での仕上げ

VAX Network Booting HOWTO には、 Red Hat linux 用の SysV 風のスクリプト 設定方法についての議論があります。重要な相違点は、 Red Hat は /etc/rc.d/init.d/ を使い、 Debian は /etc/init.d/ を使うということだけです。

注意: Debian の rbootd パッケージは、インストール時に rbootd および bootparam 用の SysV init スクリプトをインストールします。

もしこれについて面倒な思いをしたくなければ、単に /etc/rc.local にデーモンを追加することができます。

  1. クライアント固有のデーモンの設定:

    • Debian rbootd パッケージをインストールしていない場合、 hp300 の rbootd の設定のため、下記の行を /etc/rc.local ファイルに追加します
      #Start the daemons to netboot a NetBSD client
      echo -n 'Starting diskless server daemons:'
      if [ -f /usr/local/bin/rbootd ]; then
          echo -n ' rbootd'; /usr/local/bin/rbootd > /dev/null
      fi

    • vax の mopd の設定のため、下記の行を /etc/rc.local ファイルに追加します
      #Start the daemons to netboot a NetBSD client
      echo -n 'Starting diskless server daemons:'
      if [ -f /usr/local/sbin/mopd ]; then
          echo -n ' mopd'; /usr/local/sbin/mopd > /dev/null
      fi
  2. rarpd と bootparamd の設定:
    下記の行を /etc/init.d/network に追加します
    /sbin/arp -s client CC:CC:CC:CC:CC:CC
    /sbin/rarp -s client CC:CC:CC:CC:CC:CC
    if [ -f /usr/[local]/sbin/rpc.bootparamd ]; then
        /usr/[local]/sbin/rpc.bootparamd > /dev/null
    fi
    echo '.'

  3. dhcpd の設定:
    これはお使いのディストリビューションに dhcpd が附属しているかどうかによって異なります。 もし附属していれば、おそらく何らかの起動スクリプトが使えるでしょう。 そうでなければ、下記の行を /etc/rc.d/rc.local に追加します。
    echo -n ' dhcpd'
    if [ -f /usr/[local]/sbin/dhcpd ]; then
        /usr/[local]/sbin/dhcpd -q
    fi
    echo '.'

  4. nfs の設定:
    /etc/init.d/netstd_nfs で重要な行が (# で) コメントアウトされて いないことを確かめます。 nfsdmountd を含む 6 行が、コメントされていないことを確かめる必要のある部分です。

おめでとうございます、これで終わりです !


SunOS

  1. クライアント固有のデーモンの設定:

    • hp300 の rbootd の設定のため、下記の行を /etc/rc.d/rc.local ファイルに追加します
      #Start the daemons to netboot a NetBSD client
      echo -n 'Starting diskless server daemon:'
      if [ -f /usr/local/sbin/sun-rbootd ]; then
          echo ' rbootd.'; /usr/local/sbin/sun-rbootd -a > /dev/null
      fi
  2. rarpd と bootparamd の設定:
    # mkdir -p /tftpboot

  3. dhcpd の設定:
    下記の行を /etc/rc.d/rc.local ファイルに追加します
    #Start the daemons to netboot a NetBSD client
    echo -n 'Starting diskless server daemon:'
    if [ -f /usr/local/sbin/dhcpd ]; then
        echo ' dhcpd.'; /usr/local/sbin/dhcpd -q
    fi

  4. nfs の設定:
    # touch /etc/exports

おめでとうございます、これで終わりです !


Solaris

  1. クライアント固有のデーモンの設定:

    • hp300 の rbootd の設定のため、下記を実行する SysV スタイルの init スクリプトを作ります:
      /usr/local/sbin/sun-rbootd -a
  2. rarpd と bootparamd の設定:
    # mkdir -p /tftpboot

  3. ISC dhcpd の設定のため、下記を実行する SysV スタイルの init スクリプトを作ります:
    /usr/local/sbin/dhcpd -q

  4. nfs の設定:
    /etc/rc3.d/S15nfs.server が存在することを確かめます (デフォルトでは存在します)
    /etc/dfs/dfstab 中の share コマンドの形式を確かめます:
    share -F nfs ...

  5. ブート時に何が起こるか確認するため、下記を実行します (任意):
    # /etc/init.d/nfs.server stop; /etc/init.d/nfs.server start
    これで rarpd、 bootparam、 nfs が起動するはずです。

    後日、これらのサービスを削除することにした場合は、下記を忘れずに実行します
    # rm -rf /tftpboot
    /etc/dfs/dfstab 中の share 行の削除

おめでとうございます、これで終わりです !


NEWS-OS

  1. クライアント固有のデーモンの設定:

    • hp300 の rbootd の設定のため、下記の行を /etc/rc.net ファイルに追加します
      #Start the daemons to netboot a NetBSD client
      echo -n 'Starting diskless server daemon:'
      if [ -f /usr/local/bin/rbootd ]; then
          echo ' rbootd.'; /usr/local/sbin/sun-rbootd -a > /dev/null
      fi
  2. rarpd と bootparamd の設定:
    /etc/rc.net を編集して、下記の行がコメントされていないことを 確かめます:
    if [ -f /usr/etc/rpc.bootparamd ]; then   
           /usr/etc/rpc.bootparamd & (echo -n ' bootparamd' >/dev/console)
    fi
    if [ -f /etc/rarpd ]; then
           /etc/rarpd;               (echo -n ' rarpd'      >/dev/console)
    fi
    

  3. nfs の設定:
    /etc/rc.custom を編集して、下記のことを確かめます:
    NET=on

おめでとうございます、これで終わりです !


NEXTSTEP

  1. rarpd、 bootparamd と bootpd の設定:
    /etc/hostconfig を編集し、 NETMASTER 行を読んでいることを 確かめます
    NETMASTER=-YES-
    

  2. nfs の設定:
    NFS は、 nfs ページで説明した段階で 自動的に設定されています。

おめでとうございます、これで終わりです !


HP-UX 9 以前

  1. クライアント固有のデーモンの設定:

    • hp300 の rbootd の設定のために、何かをする必要はありません。 SAM がマシンをクラスターサーバーとしてセットアップする際に、 /etc/rc が rbootd を起動するよう、すべて設定してくれます。

    • sun-rbootd の設定のため、 /etc/rc を編集して、 下記の 4 行が (# で) コメントアウトされていることを確かめます:
      #            if /usr/bin/rtprio 64 /etc/rbootd $RBOOTD_DEVICES; then
      #                echo "remote boot daemon started"
        [...]
      #                if /usr/bin/rtprio 64 /etc/rbootd; then
      #                    echo "remote boot daemon started"
      そして、起動ファイルのいずれか (できれば /etc/netlinkrc) を編集して、下記の行を追加します:
      #Start the daemons to netboot a NetBSD client
      echo -n 'Starting diskless server daemon:'
      if [ -f /usr/local/sbin/sun-rbootd ]; then
          echo ' rbootd.'; /usr/local/sbin/sun-rbootd -a > /dev/null
      fi
  2. rarpd と bootparamd の設定:
    HP-UX 9 以前には、 rarpd や bootparamd はありません。

  3. dhcpd の設定:
    起動ファイルのいずれか (できれば /etc/netlinkrc) を編集して、下記の行を追加します:
    #Start the daemons to netboot a NetBSD client
    echo -n 'Starting diskless server daemon:'
    if [ -f /usr/local/sbin/dhcpd ]; then
        echo ' dhcpd.'; /usr/local/sbin/dhcpd -q
    fi

  4. nfs の設定:
    /etc/netnfsrc を編集して、下記のことを確かめます:
    NFS_SERVER=1
    START_MOUNTD=1

おめでとうございます、これで終わりです !


HP-UX 10

  1. クライアント固有のデーモンの設定:

    • hp300 の HP-UX rbootd の設定のため、 /etc/rc.config.d/netdaemons を編集して、下記のことを確かめます
      START_RBOOTD=1

    • hp300 の sun-rbootd の設定のため、 SYSV init スクリプトを作り、 それが実行されるように (つまり /sbin/rc2.d 以下にリンク) します。 また、 /etc/rc.config.d/netdaemons を編集して、 下記のことを確かめます
      START_RBOOTD=0
  2. rarpd と bootparamd の設定:
    HP-UX 10 は bootparamd をサポートしていません
    /etc/rc.config.d/netconf を編集して下記のことを確かめます:
    RARPD=1

  3. dhcpd の設定のため、 SYSV init スクリプトを作り、 それが実行されるように (つまり /sbin/rc2.d 以下にリンク) します。

  4. nfs の設定:
    /etc/rc.config.d/nfsconf を編集して、下記のことを確かめます:
    NFS_SERVER=1
    START_MOUNTD=1

おめでとうございます、これで終わりです !


戻る | 進む | 目次
NetBSD ホームページ
NetBSD Documentation top level

(連絡先 - 英語, 日本語: www@jp.NetBSD.org)
$NetBSD: finish.html,v 1.3 2007/08/01 15:36:01 kano Exp $
Copyright © 1998-2004 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.