戻る | 進む | 目次

Diskless NetBSD HOW-TO, 序説 (i386固有な部分)

'diskless' 運用時に NetBSD のカーネルをロードするにはいくつかの 方法があります:

  1. netboot rom を用いる

    この場合、ネットワークからのブートをサポートしている BIOS と対応する ネットワークカードが必要です。これは新しい PC, 特にネットワークアダプターが 付属しているものでは普及しつつあります。 ネットワーク上にサーバーを設置し(詳細はマニュアル diskless(8)) 参照)、 BIOS の設定を最初にネットワークからブートを試みるように変更してください。

    もし、BIOS は対応していないが、NetBSD の 'netboot' bootloader が対応している ネットワークカードをお持ちの場合、DOS をブートし(以下の dosboot.comの 部分を参照してください)、network 上のカーネルをロードするために 'netboot.com' を使用することができます。 適当な 'netboot.com' を作成するためには /usr/src/sys/arch/i386/stand/netbootに移動し、 Makefileにお持ちのネットワークカードに対応するオプションを 付け加えて "make netboot.com" を実行してください。

  2. PXE を用いる

    お使いのハードウェアが PXE を使ったネットブートに対応している場合、 そのハードウェアは最初に動的ホスト設定プロトコル (DHCP) を使って IP アドレスの取得を試みます。 dhcpd サーバーは、クライアントのイーサネットアドレス (MAC) をもとに、 IP アドレスとブートローダーのファイル名を決めます。 この要求が成功すると、PXE は二段階目のブートプログラムを簡易ファイル転送プロトコル (TFTP) でダウンロードできるものと判断します。 DHCP 要求に先に応えたサーバーに対して TFTP 接続をして、サーバーから返されたファイル名を要求し、 二段階目のブートプログラムのダウンロードが行なわれます。 それから、このブートプログラムが、 DHCP 要求によって指定されたサーバーとパスから NFS を使ってカーネルをロードします。

    NetBSD 配布物の base.tgz 中の /usr/mdec/ ディレクトリーには、二つの PXE ブートローダーファイルがあります。ほとんどの場合は pxeboot_ia32.bin を使うべきです。 pxeboot_ia32_com0.bin は、クライアントの一つ目のシリアルポートをコンソールとして使わせるものだからです。 後者のシリアルコンソール版 PXE ファイルは、 (Soekris のハードウェアのような) シリアルコンソールしかない組み込みシステムで必要になるかもしれません。 9600 8N1 の設定で使ってください。

    /etc/dhcpd.conf には以下のように書くことができます。

    host pxehost {
      hardware ethernet 01:23:45:67:89:ab;       # PXE ホストの MAC アドレス
      fixed-address 192.168.17.42;               # PXE ホストの IP アドレス
      
      # stage 1: 
      filename "pxeboot_ia32.bin";               # /tftpboot からの相対パス
      
      # stage 2:
      next-server 192.168.42.1;                  # NFS サーバーの IP アドレス
      option root-path "/usr/tmp/pxestuff/root"; # NFS サーバー上のパス
    }

    PXE システムがたくさんある場合、手短に済ます方法として、 その PXE システム全部に対してまとめて /etc/dhcpd.conf を設定することができます。

    class "pxe-clients-ia32" {
            match if substring (option vendor-class-identifier, 0, 20)
                     = "PXEClient:Arch:00000";
            filename "pxeboot_ia32_com0.bin";
    }
    

  3. GRUB を用いる

    GRUB は、複数の異なる OS のブートに対応したブートローダーで、いくつかの OS のネットワーク経由の ブートも可能です。 GRUB 自体はディスクから、またはネットワークから PXE または NBI (Etherboot のように) ローダーによってロードされます。 Etherboot および GRUB は、 NetBSD の 'netboot' ブートローダーよりも多くの種類の NIC に対応しています。 GRUB バージョン 0.90 以降を使う必要がありますので注意してください。 GRUB と Etherboot は、 GCC および GNU Binutils 2.9.1 以降を必要とします。これらは任意のシステム上でコンパイル可能であり、 NetBSD ホスト上でのコンパイルは必須ではありません。

    EtherBoot が GRUB イメージをロードして実行するよう環境変数を設定し、 また、 GRUB が NetBSD カーネルをロードするように設定する必要があります。 必要な手順の概要は以下のとおりです。

    1. お使いの EPROM に応じた適切な EtherBoot EPROM イメージを put する。
    2. GRUB 0.90 を構築します。 --enable-diskless および、お使いの NIC に応じた --enable-* オプションを付けて configure する必要があります。
    3. 構築した GRUB の stage2/nbgrub イメージを TFTP サーバーに put する。
    4. ディスクレスマシン用に dhcpd を設定する。 dhcpd に以下のような項目を用意します:
       option option-150 code 150 = text;
       group {
        subnet 192.168.0.0 netmask 255.255.255.0 {
          option log-servers 192.168.0.1;
          option domain-name-servers 192.168.0.1;
          # location of GRUB configuration file
          option option-150 "/tftpboot/grub.conf";
          # NFS root path
          option root-path "/home/dolecek/netbsd-root";
          # path of image EtherBoot should load and execute
          filename "/tftpboot/nbgrub";
        }
        host foobar { fixed-address foobar; hardware ethernet 00:c0:6c:76:17:46; }
       }
      
    5. GRUB 用の設定ファイルを作り、 dhcpdoption-150 で設定したとおりに TFTP サーバーに put します。 NetBSD 用の設定例は下記のとおりです。
      # uncomment following two lines to use serial terminal
      # serial --unit=0 --speed=57600
      # terminal --timeout=0 serial
      
      # Boot automatically after 5 secs.
      timeout 5
      
      # By default, boot the first entry.
      default 0
      
      # Fallback to the first entry.
      fallback 0
      
      # For booting the NetBSD
      title NetBSD
      kernel --type=netbsd /tftpboot/netbsd
      
    6. GRUB は NetBSD にブート情報を渡しません。よって、自動的に NetBSD をブートさせたければ、下記のように、カーネルに明示的にルートを 設定しておく必要があります:
      config netbsd root on ? type nfs
      
      そして、カーネルを構築し、 GRUB 設定ファイルに設定したとおりに TFTP サーバーに置いておきます。
    7. シリアルコンソールを使いたい場合、 GRUB とカーネルの両方を それ用に設定する必要があります。 GRUB でシリアル線を使うには、 上記の GRUB 設定例にある serial および terminal の項目のコメントを外します。 NetBSD のコンソールとしてシリアル線を使うには、 カーネルコンフィギュレーションに次のようなオプションを追加します。
      options "CONSDEVNAME=\"com\"",CONADDR=0x2f8,CONSPEED=57600
      
    8. 以上です!

  4. フロッピーディスクから

    フロッピーにネットワークから root ファイルシステムをマウントするように 設定したカーネルを入れておくこともできます。この場合、カーネルの 設定ファイルには次の行を加えておきます:

    	config netbsd root on ? type nfs
        
    カーネルのコンパイルをした経験がない場合、 カーネルの 作り方を読んだ方が良いでしょう。

  5. DOS または Windows (NT は含みません)を経由する方法

    NetBSD は特殊な boot loader を"dosboot.com" という 名前の小さな DOS プログラムとして提供しています。 これはインストールされたシステム中では /usr/mdec にありますし、 base.tgz にも含まれています。これを使うためには、 dosboot.comとカーネルの両方を FAT (msdos) パーティションに コピーして、DOS をブートしてください。

    • Windows 95 または 98 の場合

      "Loading Windows XX" と表示されている間に F8 を押して、 ブートメニューに入ってください。表示されるメニューの内容は インストールしているものによって異なるかもしれません。

      HIMEM.SYS と EMM386.SYS ドライバーをロードしないように設定する 必要があるかもしれません。この場合には "Step-by-step confirmation" を 選択し、全ての質問に "n" または ESC と答えてください。

      もし、HIMEM.SYS について気にしないのならば、"Command prompt only" を 選択してください。

    • DOS または Windows 3.1

      コンピューターがブートしている間、SHIFT キーを押し続けて config.sys と autoexec.bat を実行させないでください。

    DOS プロンプトで、"dosboot.com" とカーネルを置いたディレクトリーに 移動してください。"netbsd" をブートする場合には "dosboot"と、 カーネルが異なる名前の場合には "dosboot filename" と 入力してください。

    dosboot コマンドは HIMEM.SYS ドライバーが提供するのと同様な extended メモリーの取り扱いが可能です。残念なことに、NetBSD が APM BIOS を 呼び出す場合には問題が起こります。 もし、APM BIOS が搭載されていない場合や、お使いの NetBSD カーネルが 使用しない("apm0 at mainbus0"が含まれていない)場合は、何の問題も ありません。 APM を用いる場合には、dosboot を使用する場合 HIMEM.SYS をロードしないでください。

    もし、カスタマイズした dosboot.com を作成したい場合は、 /usr/src/sys/arch/i386/stand/dosboot に移動して、 Makefile に特別なオプション(シリアルコンソール, ...)を加えて、 "make" を実行してください。

  6. NT boot selector を使用する

    NT のブートセレクターを用いて NetBSD を直接起動することができます。 詳しくは NetBSD/i386 FAQ のWindows NT のブートメニューに NetBSD を加える方法節を御覧下さい。

設定を始める (次の順番に読むのが良いでしょう):

  1. dhcpd
  2. tftpd (PXE)
  3. nfs
  4. クライアントのファイルシステム
  5. 終了

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

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