目次

Diskless NetBSD HOW-TO, 序説

あらまし

この手引きは、ディスクレス NetBSD ワークステーションの設定の一助となることを 目指しています。もし下記のアーキテクチャーにお使いのクライアントが 含まれていなければ、ここで読むのをやめて結構です:

この手引きでは、サーバーの設定と立ち上げに必要な手順の始めから終わりまですべてと、 クライアントの設定に関する基本的な情報のいくらかを網羅しています。

この文書では、 NetBSD システムをネットワークからブートする手順についてのみを 扱います。 NetBSD をブートするためのローカルハードドライブのセットアップ方法は 説明しません。そういった情報は、お使いのプラットフォーム用の INSTALL ノートに あります。この文書で説明する手順は、 NetBSD インストーラーのネットブート (ローカルハードドライブの設定のため) と、ローカルストレージのないシステム上での 完全な NetBSD 配布物のネットブートのいずれにも使えます。

インストーラーをネットブートするだけの場合は、お使いのアーキテクチャー用の指示に従いながら、 NFS の設定ページまで読み進んでください。 NFS の設定ページに、 インストールツールの説明へのリンクがあります。お使いのクライアントシステムが (hp425e や iBook のように) ローカルコンソールシリアルコンソールの いずれもサポートしていない場合であっても、動作するシステムのネットブートが 可能です。お使いのアーキテクチャー用の指示に従いながら、 ファイルシステムのページまで読み進んでください。ファイルシステムのページに、 やらなければならない特別な手順の説明ページへのリンクがあります。

この文書は、完全なものを目指したため、非常に長いものになっています。 ネットブートのことを概ね知っている方でも、序説ページは斜め読みすべきです。 その場合、このページは飛ばして、お使いの プラットフォーム別の序説ページに直行してもかまいません。

上記の各アーキテクチャーでは、それぞれ異なる方法で、最初の ブートローダーのコードをロードします。 ここで、ネットブート手順の概観を説明します:

  1. クライアント用のブートローダーがサーバーから呼び出されます

    • hp300 と一部の hp700 では、 rbootd が NetBSD ブートプログラムをロードします
      1. HP bootrom は、ユーザーからの指定が特になければ、 ブート可能なシステムを探して最初に見つかったものを使います。
      2. ブート可能なシステムを探す過程の中で、 bootrom は RMP (HP Remote Maintenance Protocol) 要求を送出します。 rbootd サーバーは これに応えて、ブートプログラムの名前を返します。
      3. HP bootrom は、そのブートプログラムをサーバーから取り寄せて、 実行を開始します。
    • alpha、一部の hp700、一部の i386、 macppc、 next68k、 pmax、 sparc64 では、 NetBSD ブートプログラムを ロードするために、 bootpd または dhcpdtftp をセットアップします。
      1. ファームウェアが (最初に) bootptftp を使って ブートプログラムをロードするよう、手動で設定しておきます。
      2. ファームウェアが、 bootp/dhcp 要求を送出して、 必要な情報を bootpd/dhcp サーバーからもらいます。
      3. ファームウェアが、 bootp/dhcp の結果知らされたサーバーから、 tftp を使ってブートプログラムを取り寄せ、 それの実行を開始します。
    • sun2 では、 ndbootd が NetBSD ブートプログラムをロードします
      1. お使いのマシンに本当にディスクが付いていない場合、ファームウェアは ネットワークディスク (ND、 ndbootd によってサービスされます) からブートプログラムをロードしようとします。そうでない場合は、 毎回モニターに入ってネットブートコマンドをいちいち打つ必要があります。
      2. ファームウェアは上記 ND の結果知らされたマシンから、 ND を使ってブートプログラムを取り寄せ、 それの実行を開始します。
    • sparc と sun3 では、 NetBSD ブートプログラムをロードするために、 rarpdtftp をセットアップします
      1. ファームウェアが (最初に) tftp を使ってブートプログラムを ロードするよう、手動で設定しておきます。
      2. ファームウェアが rarp 要求を送出して、必要な情報を rarp サーバーからもらいます。
      3. ファームウェアが、 rarp の結果知らされたサーバーから、 tftp を使ってブートプログラムを取り寄せ、 それの実行を開始します。
    • vax では、 mop が NetBSD ブートプログラムをダウンロードします
      1. ファームウェアが mop を使ってブートプログラムを ロードするよう、手動で設定しておきます。
      2. ファームウェアが mop 要求を送出して、必要な情報を mop サーバーからもらいます。
      3. ファームウェアが、 mop の結果知らされたサーバーから、 mop を使ってブートプログラムを取り寄せ、 それの実行を開始します。
  2. ブートローダーがサーバーからカーネルを入手します。

    この段階では、プラットフォームによって 4 種類の方法が使われます。

    • rarpdbootparamdnfsd の場合
      1. NetBSD ブートプログラムは、自分自身の IP アドレスを知るために RARP (Reverse ARP (Address Resolution Protocol)) 要求を送出します。 サーバーは、イーサネットハードウェアアドレスを IP アドレスに対応させる RARP 応答を返します。
      2. NetBSD ブートプログラムは、クライアント名と IP アドレスをサーバーに 尋ねるために RPC/BOOTPARAMS/WHOAMI 要求をブロードキャストします。
      3. NetBSD ブートプログラムは、 nfs サーバーとルートディレクトリーを 知るために、上記 RPC/BOOTPARAMS/WHOAMI 要求で決まったクライアント名を 使い、 RPC/BOOTPARAMS/GETFILE 要求をします。
      4. NetBSD ブートプログラムは、ルートディレクトリーを nfs サーバーからマウントします。
      5. NetBSD ブートプログラムは、指定されたカーネルを、 NFS read コール群を使ってロードします
      6. その後、 NetBSD ブートプログラムは制御をカーネルに移します。
    • bootptftp の場合
      1. NetBSD ブートローダーは、各種の情報 (具体的には、 自分自身の IP アドレス、サブネットマスク、 TFTP サーバー、カーネル名と NFS パス) を知るために bootp 要求を送出します。
      2. その情報をもとに NetBSD ブートプログラムは TFTP サーバーに接続して カーネルをダウンロードします。
      3. その後、 NetBSD ブートプログラムは制御をカーネルに移します。
    • dhcptftp の場合
      1. NetBSD ブートローダーは、各種の情報 (具体的には、 自分自身の IP アドレス、サブネットマスク、 TFTP サーバー、カーネル名と NFS パス) を知るために dhcp 要求を送出します。
      2. その情報をもとに NetBSD ブートプログラムは TFTP サーバーに接続して カーネルをダウンロードします。
      3. その後、 NetBSD ブートプログラムは制御をカーネルに移します。
    • rbootndbootdmopd の場合
      1. NetBSD ブートローダーは、ファームウェアを使って rboot, ndbootd または mopd 要求を送出し、カーネルをダウンロードします。
      2. その後、 NetBSD ブートプログラムは制御をカーネルに移します。
  3. カーネルに制御が移り、 nfs ファイルシステムのマウントを始め、 マルチユーザーへ移行します。

    カーネルは、ブートローダーがしたことをまた行う必要があります。すでに ブートローダーが得た情報をカーネルに渡すための標準的な方法がないからです。 つまり、 IP アドレス、 NFS サーバー上の NFS パスを知るために、上記の方法 のいずれかを使うということです。

    普通はブートローダーと同じ手順を使うようカーネルを設定しますが、 カーネル構築時に別の方法を使うよう設定することも可能です。

サーバーハードウェア/OS に必要なもの

サーバーは、イーサネットに対応していることと、 (クライアント用の) NetBSD ファイル一式を置けるだけのディスクスペースの余裕があることが必要です。 必要なパッケージとその容量について詳細は、お使いのプラットフォーム向けの INSTALL 手引き書を見てください。

サーバーがクライアントと同じアーキテクチャー (例えば、 NetBSD/hp300 や next68k なら Motorola 680X0 マイクロプロセッサー、 NetBSD/sparc なら Sparc マイクロプロセッサー、 NetBSD/vax なら Vax マイクロプロセッサー) で、しかも NetBSD が動いている場合は、クライアントはサーバーの /usr ディレクトリー構造を利用して、ディスク容量を相当量節約することができます。

サーバーがクライアントと (同じマイクロプロセッサーというだけでなく) 同じポート の場合は、クライアントとサーバーでほとんどを共用した疑似クラスター環境を 作り上げることができます。

特筆すべきは、ネットブート手順の各段階は、それぞれ別のサーバーや別の OS で行うことが出来るということです。つまり、 rbootd 要求の処理 (例えば NetBSD/hp300 向け) には HP-UX を使い、 rarpbootparams 要求には SunOS が応答し、 nfs ファイルシステムは NeXTSTEP が担当する、といったこともできます。このため、 非常に柔軟性を持たせることができます。また、このページが OS ではなくデーモン別に分かれた構成になっているのはこのためです。

プラットフォーム/デーモン対応表

この表は、クライアントアーキテクチャー別に、どのデーモンがサーバーで走っている 必要があるかを示した、汚い早見表です。

プラットフォーム \ デーモン

rbootd

mopd

ndbootd

rarpd

bootparamd

bootpd (1)

dhcpd (1)

tftpd

nfsd

alpha no no no no no yes no yes yes
hp300 yes no no yes yes no no no yes
hp700 yes (2) no no no no yes no yes (2) yes
i386 no no no no no no yes yes yes
macppc no no no no no yes  no yes yes
next68k no no no no no yes no yes yes
pmax no no no no no yes no yes yes
sparc no no no yes (3) no no yes (3) yes yes
sparc64 no no no yes no no yes yes yes
sun2 no no yes yes yes no no no yes
sun3 no no no yes yes no no yes yes
vax no yes no yes yes yes no no yes

(1) dhcpdbootpd サーバーとして機能します。
(2) hp700 ワークステーションの最近の機種では、 rbootd ではなく tftp が必要です。
(3) 一部のバージョンの JavaStation では、 rarp を必要としません。

サーバー/デーモン対応表

この表は、どのデーモンがどのサーバー OS で利用可能かをまとめたものです。 これらのソフトウェアは、特に指定がなければ、サポート OS のどのアーキテクチャー でも動作します (例えば Solaris では、 sparc と i386 アーキテクチャーの どちらでも動作するはずです) 。

サーバー側に必要なソフトウェアを、 2 個追加しています: gzipgnutar です。以下の表で、お使いのサーバーの オペレーティングシステムの欄に (c) とある場合は、ここで gzip gnutar を入手してコンパイルしておくとよいでしょう。 gnutar は、クライアントの ファイルシステムを展開する際に、 uidgid 番号を適切なままで展開してくれます。

OS\デーモン

rbootd

mopd

ndbootd

rarpd

bootparamd

bootp

dhcp

tftp

nfs

gzip

gnutar

NetBSD yes yes yes yes yes yes yes yes yes yes yes
OpenBSD yes yes yes (c) yes yes yes yes yes yes yes yes
FreeBSD yes (c) yes (c) yes (c) yes yes yes yes yes yes yes yes (c)
Mac OS X/Darwin yes no no yes (?) yes yes (2) yes (c) yes yes yes yes (3)
Linux yes (c) yes (c) no yes (k) yes (c) yes yes (c) yes yes yes yes (c)
SunOS 4 yes (c) no no yes yes yes (c) yes (c) yes yes yes (c) yes (c)
Solaris 2 yes (c) no no yes yes (1) yes (c) yes yes yes yes (c) yes (c)
NEWS-OS 4.x yes (c) no no yes yes yes no yes yes yes (c) yes (c)
NEXTSTEP 3.3 no no no yes (?) yes (?) yes (?) yes (c) yes yes yes (c) yes (c)
HP-UX 7, 9 yes (c) no no no no no no yes yes (k) yes (c) yes (c)
HP-UX 10 yes (c) no no yes no yes yes yes yes yes yes (c)
DomainOS no no no no no ? ? ? no yes (c) yes (c)

(1) Solaris には bootparamd がありますが、 NetBSD ブートローダーとは うまく協調しません。ただしこれは回避策があります
(2) Mac OS X と Darwin にはネイティブの bootpd がありますが、 NetBSD システムのネットブートには使えません
(3) Mac OS X と Darwin には gnutar と古い tar があります ─ ファイルの展開には gnutar を使うようにしてください
(c) のものは、プログラムをソースからコンパイルする必要があります
(k) のものは、カーネルを再構築して再起動する必要があります
(?) のものは、ネイティブ版のデーモンがありますが、 それが使えるかどうかは不明です

ネットワークの構成

知っておくべきイーサネットメディアは 3 種類あります。 いずれも複数の名前がありますので、ここではっきりさせておきます:

名前 説明
10Base2,
Thin LAN,
Thin net,
Coax
同軸ケーブルを数珠繋ぎに接続するもので、 BNC コネクターを使います。 チェーンの各末端には 50 オームの終端抵抗が必要で、チェーン内のマシンは T 字型コネクターを使って接続します。
10Base5,
Thick,
AUI
数珠繋ぎ/スター型接続 (つまり、どのワークステーションも、 バックボーンまたはバックボーンに接続された「ファンアウト」箱に接続) で、 DB 15 コネクター (15 ピンの D 型コネクター) を使います。 Thick ネットワークのトポロジーは、 実際にはもっと複雑なものにもなります。

最も重要なことは、 US$30 ほどで買えるトランシーバーを使って、 Thick コネクターを他の種類のイーサネット (Thin、 10BaseT、 FDDI、その他いろいろ) に接続できることです。

10BaseT,
UTP,
Twisted Pair
スター型の構成で、 RJ45 コネクター (ピン数が多いほかは米国の電話線のジャックと同様) を使います。また、 10Base-T のネットワークには "T" 字型分岐があってもよく、 そこからワークステーションを数珠繋ぎに接続できます。

これでメディアがはっきりしましたが、クライアントはサーバーと同じ サブネットに繋げなければならないので注意してください。 ルーターを越えることは絶対にできないからです。 ハブやスイッチを介して接続することは問題ありません。 これについて不安があれば、ネットワーク管理者に相談してください。 ただし、 nfs サーバーだけはこの限りでなく、 同じサブネットにいる必要はありません。

注意事項:

サーバーのイーサネットメディアを変更する

お使いのネットワーク接続に問題がある場合 (つまり、イーサネットメディアの 種類がまずい場合) 、お使いのサーバーのイーサネットカードが使っている イーサネットメディアを変える必要があるかもしれません。 その方法を簡単に説明します。詳細は、イーサネットカード (内蔵イーサネットの 場合はコンピューター) の附属ドキュメントに書いてあるかもしれません。 この手のことに詳しくない方は、ネットワーク管理者に相談してください。 簡単にまとめると、以下のとおりになります:

別の方法として、もしサーバーに 2 枚目のイーサネットカードが付いていれば、 そのサーバーとクライアントだけの専用のネットワークを作ってしまうという方法も あります。こうしたときにクライアントがアクセスできるように サーバーを設定する方法については、この HOW-TO の管轄外です。

始める前に

以下に示すのは、この HOW-TO で例示される名前の書き方です。実際に設定する際は、 それぞれ適切な名前やアドレスに置き換えることになるでしょう:

le0 イーサネットインターフェースのデバイス名 (sun、 HP、 DEC のハードウェアで共通)
192.168.1.10 ディスクレスクライアントの IP アドレス (十進数) 。
client.test.net ディスクレスクライアントのインターネット規準名。
C0A8010A ディスクレスクライアントの IP アドレス (十六進数) 。
SunOS、 Solaris および sun-rbootd デーモンでのみ使います。
CCCCCCCCCCCC
CC:CC:CC:CC:CC:CC
ディスクレスクライアントのイーサネットハードウェアアドレス。
192.168.1.5 ディスクレスサーバーの IP アドレス (十進数) 。
rbootdserver.test.net ディスクレス rbootd サーバーのインターネット規準名。
(hp300 でのみ使用)
mopserver.test.net ディスクレス mop サーバーのインターネット規準名。
(vax でのみ使用)
SSSSSSSSSSSS
SS:SS:SS:SS:SS:SS
ブートローダーサーバーのイーサネットハードウェアアドレス。
tftpserver.test.net ディスクレス tftp サーバーのインターネット規準名。
rarpserver.test.net ディスクレス rarp サーバーのインターネット規準名。
bootparamserver.test.net ディスクレス bootparams サーバーのインターネット規準名。
bootpserver.test.net ディスクレス bootp サーバーのインターネット規準名。
dhcpserver.test.net ディスクレス dhcp サーバーのインターネット規準名。
nfsserver.test.net ディスクレス nfs サーバーのインターネット規準名。
/export/client/root クライアント用ファイルシステムの、 nfsserver 上でのパス。
dns.test.net ドメインネームサーバー (DNS) のインターネット規準名。
router.test.net クライアントの属するサブネットのルーターのインターネット規準名。
255.255.255.0 クライアントが使うサブネットマスク (bootpddhcpd の設定に使います) 。
192.168.1.255 クライアントが使うブロードキャストアドレス (bootpddhcpd の設定に使います) 。

いくつか注意しておきます:

NetBSD をダウンロードする

OK 。ここで、サーバー側に、 (クライアントが利用する) ファイルを用意しましょう ─ NetBSD をダウンロードします。ここでは web ブラウザーではなく ftp プログラムそのものを使うのが一番です。 ftp プログラムなら複数のファイルを まとめてダウンロードできるからです。 NetBSD の最新のリリース版については、 NetBSD 公式リリース をご覧ください。

  1. mkdir -p /export/client/NetBSD-release/installation/misc

  2. mkdir -p /export/client/NetBSD-release/binary/security
    注意: 米国の暗号輸出規制に抵触する場合は、 これを行なってはいけません。

  3. mkdir -p /export/client/NetBSD-release/binary/sets

  4. # cd /export/client/NetBSD-release

  5. # ftp ftp.NetBSD.org
    この ftp.NetBSD.org は、最寄りの ftp ミラーで読み替えてください。

  6. ftp> bin

  7. ftp> prompt

  8. ftp> cd /pub/NetBSD/NetBSD-release/<client-arch>/

  9. ftp> mget *
    これで、サブディレクトリーのファイルも含め、全ファイルをダウンロード できるはずです。お使いの ftp プログラムがサブディレクトリーを ダウンロードしてくれない場合は、手動で各サブディレクトリーに cdlcd して mget する必要があります。

    サーバー側に全ファイルを置けるだけの容量がなくても心配は無用です。 NetBSD の最低限の機能を使うために 本当に 必要なのは、以下のものだけです (/pub/NetBSD/NetBSD-release/<client-arch>/ からの相対パス) :

    INSTALL.txt
    binary/sets/kern.tgz
    binary/sets/base.tgz
    binary/sets/etc.tgz
    installation/misc/SYS_UBOOT.gz (hp300 の場合)
    installation/misc/rbootd.tgz  (hp300 の場合)
    

  10. ftp> exit

  11. /export/client/NetBSD-release/INSTALL にある公式 INSTALL ノートを、 くれぐれも よくお読みください。

プラットフォーム固有の序説

では、お使いのクライアントプラットフォームの詳細についての導入をお読みください:

目次
NetBSD ホームページ
NetBSD Documentation top level

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