diskless.8 revision 1.6.2.3

Submitted by:<kuma@jp.FreeBSD.org> Norihiro Kumagai
This commit is contained in:
Kazuo Horikawa 2001-04-23 14:04:19 +00:00
parent d8fde782cd
commit ab35b57046
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=9280

View file

@ -1,6 +1,8 @@
.\" %NetBSD: diskless.8,v 1.11 1997/06/16 07:50:35 mrg Exp % .\" %NetBSD: diskless.8,v 1.11 1997/06/16 07:50:35 mrg Exp %
.\" %FreeBSD: src/share/man/man8/diskless.8,v 1.6.2.3 2001/04/20 23:15:25 luigi Exp %
.\" .\"
.\" Copyright (c) 1994 Gordon W. Ross, Theo de Raadt .\" Copyright (c) 1994 Gordon W. Ross, Theo de Raadt
.\" Updated by Luigi Rizzo
.\" All rights reserved. .\" All rights reserved.
.\" .\"
.\" Redistribution and use in source and binary forms, with or without .\" Redistribution and use in source and binary forms, with or without
@ -25,9 +27,8 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" %FreeBSD: src/share/man/man8/diskless.8,v 1.6.2.2 2000/12/29 10:18:06 ru Exp %
.\" .\"
.Dd October 2, 1994 .Dd April 18, 2001
.Dt DISKLESS 8 .Dt DISKLESS 8
.Os .Os
.Sh 名称 .Sh 名称
@ -42,15 +43,13 @@
修復中に一時的に利用するために有用です。 修復中に一時的に利用するために有用です。
このファイルは、クライアントがネットワークを介してブートする時に、 このファイルは、クライアントがネットワークを介してブートする時に、
クライアントとサーバとの間で行われる通信の一般的な解説を提供します。 クライアントとサーバとの間で行われる通信の一般的な解説を提供します。
一般的な解説の後に、ディスクレスの Sun クライアントのためのサーバ設定
を行うための詳細な指示を説明します。
.Sh 操作 .Sh 操作
ネットワークを介してシステムをブートする時に、 ネットワークを介してシステムをブートする時に、
クライアントとサーバの間で 3 フェーズのやりとりがあります: クライアントとサーバの間で 3 フェーズのやりとりがあります:
.Pp .Pp
.Bl -enum -compact .Bl -enum -compact
.It .It
PROM (もしくはステージ 1 のブートストラップ) がブートプログラムを ステージ 1 のブートストラップがブートプログラムを
読み込みます。 読み込みます。
.It .It
ブートプログラムがカーネルを読み込みます。 ブートプログラムがカーネルを読み込みます。
@ -58,286 +57,157 @@ PROM (
カーネルがルートを NFS マウントします。 カーネルがルートを NFS マウントします。
.El .El
.Pp .Pp
これの各フェーズについて、以降で詳しく記述します。 これの各フェーズについて、以降で詳しく記述します。
.Pp .Pp
フェーズ 1 では、PROM がブートプログラムを読み込みます。 フェーズ 1 では、ステージ 1 のブートストラップコードが
PROM の設計の種類はたくさんありますので、 ブートプログラムを読み込みます。このブートプログラムは、
このフェーズは本質的にマシンに依存しています。 普通ネットワークカードを制御できます。
Sun のマシンは ブートプログラムを、BIOS や、ネットワークカード上の BOOT ROM
クライアントの (PXE, etherboot, netboot) に格納することもできます。また、
.Tn IP ディスクユニット (etherboot, netboot 等) からロードさせることもできます。
アドレスを決定するために
.Tn RARP
を利用し、その後
.Tn RARP
リプライを送ったところからブートプログラムをダウンロードするために
.Tn TFTP
を使います。
HP 300 シリーズのマシンでは、ブートプログラムをダウンロードするために
.Tn HP リモートメンテナンスプロトコル
を利用します。
典型的なパーソナルコンピュータはネットワークブートプログラムを
ディスケットもしくはネットワークカードの特別な PROM をつかって読み込むかも
しれません。
.Pp .Pp
フェーズ 2 では、ブートプログラムがカーネルを読み込みます。 フェーズ 2 では、ブートプログラムがカーネルを読み込みます。
このフェーズの操作はブートプログラムの設計に依存します。 このフェーズの操作はブートプログラムの設計に依存します。
(ここで記述する設計は Sun と NetBSD/hp300 で使われているものです。) 普通、ブートプログラムは
ブートプログラムは以下を行います: .Tn BOOTP
プロトコルまたは
.Tn DHCP
プロトコルを用い、クライアントの IP アドレスと
その他のブート情報を取得します。ブート情報は、
NFS サーバ、ルータ、ネームサーバの IP アドレス、
ロードするカーネル名を含みます (これに限らず他の情報が含まれる
こともあります)。
その後、カーネルがロードされます。これには、
(etherboot や netboot の場合のように) NFS を使って直接ロードされる場合と、
pxeboot と呼ばれる中間ローダを通じて、TFTP や NFS を使ってロードされる
場合とがあります。
.Pp .Pp
.Bl -tag -width \&2.2 -compact フェーズ 3 では、カーネルが DHCP や BOOTP を用いて設定情報を獲得し、
.It 2.1 ルートファイルシステムのマウントに進み、動作を開始します。
.Tn RARP ディスクレスシステムの開始処理中に行なわれるいくつかの動作は、
を使ってクライアントの IP アドレスを入手します。 .Pa /etc/rc.diskless1
.It 2.2
.Tn RPC / BOOTPARAMS / WHOAMI .Pa /etc/rc.diskless2
要求をクライアントの IP アドレスとともにブロードキャストして、 とに列挙されています。
クライアント名とサーバの
.Tn IP
アドレスを入手します。
.It 2.3
.Tn RPC / BOOTPARAMS / GETFILE
要求をクライアント名とともに使うことで、
クライアントのルートのサーバにおけるパスを入手します。
.It 2.4
クライアントのルートに対するサーバのパスを指定して
.Xr mountd 8
を呼ぶことで、ルートファイルハンドルを入手します。
.It 2.5
ルートファイルハンドル上で
.Tn NFS
ルックアップを呼ぶことで、カーネルのファイルハンドルを入手します。
.It 2.6
カーネルファイルハンドルに対して
.Tn NFS
読み出しをつかって、カーネルを読み込みます。
.It 2.7
カーネルのエントリポイントに制御を移します。
.El
.Pp
フェーズ 3 では、カーネルはルートを NFS マウントします。
カーネルは、ブートプログラムによって行われた多くの作業を繰り返します。
なぜなら、ブートプログラムが集めた情報をカーネルに受け渡す
標準的な方法が無いからです。
カーネルで利用される工程は以下のようなものです:
.Pp
.Bl -tag -width \&2.2 -compact
.It 3.1
カーネルは、上記の 2.1 と 2.2 で記述されたのと同じ工程を使うことで、
ブートサーバを見付けます。
.It 3.2
カーネルは、上記の 2.3 から 2.5 で記述されたのと同じ工程を使うことで
ルートのための
.Tn NFS
ファイルハンドルを入手します。
.It 3.3
カーネルは、ルートディレクトリが最後に更新された時間を入手するために
.Tn NFS
属性入手機能 (getattr function) を呼び出し、システム時計を調べるために
これを使います。
.El
.Sh 設定 .Sh 設定
クライアントがネットワークを介してブートするためには、 ディスクレスクライアントを実行させるためには、次に示すものが必要です。
サーバは正しく設定されていなければなりません。
この例では、 どのように Sun クライアントが設定されれば良いかを示します。
他のクライアントの設定も似たようなものです。
.Pp .Pp
クライアントのホスト名 (hostname) を "myclient" .Bl -bullet -compact
と仮定します。 .It
NFS サーバ。これは、適切なパーミッションを付けて
ルートパーティションと /usr パーティションをエクスポートします。
いくつかのシステムファイルにアクセスできるようにするために、
ルートパーティションが -maproot=0 でエクスポートされている限り、
スクリプト rc.diskless{1,2} は読み込み専用パーミッションで動作します。
例として
.Pa /etc/exports
は次に示す行を含みます。
.Bd -literal -offset indent
<ROOT> -maproot=0 -alldirs <list of diskless clients>
/usr -alldirs <list of diskless clients>
.Ed
.Pp
ここで <ROOT> は、ルートパーティションのサーバ上でのマウントポイントです。
スクリプト
.Pa /usr/share/examples/diskless/clone_root
を使い、共用可能な読み込み専用ルートパーティションを
生成することができます。
しかし、同様に、サーバ自身が使用するルートディレクトリを
(読み込み専用で) エクスポートさせると決めることもできます。
.Pp .Pp
.Bl -enum
.It .It
.Pa /etc/ethers bootp または dhcp サーバ。bootpd は
に適切なクライアントのイーサネットアドレスのエントリを追加します:
.Bd -literal -offset indent -compact
8:0:20:7:c5:c7 myclient
.Ed
これは、
.Xr rarpd 8
が使用します。
.It
.Pa /etc/hosts
もしくは DNS データベースに myclient のための
IP アドレスを割り当てます:
.Bd -literal -offset indent -compact
192.197.96.12 myclient
.Ed
.It
Sun のマシンをブートする場合、
.Pa /tftpboot
ディレクトリで
.Xr tftpd 8
を実行するために
.Pa /etc/inetd.conf .Pa /etc/inetd.conf
が設定されているようにします。
.Pp .Pa bootps
HP 300 シリーズのマシンをブートする場合、 行のコメントを外すことで使用可能にすることができます。
ブートプログラムがクライアントに転送されるように .Pa /etc/bootptab
.Pa /etc/rbootd.conf の例は次のようになります。
が正しく設定されているようにします。 .Bd -literal -offset indent
エントリは以下のようになるでしょう: .default:\
.Bd -literal -offset indent -compact hn:ht=1:vm=rfc1048:\
08:00:09:01:23:E6 SYS_UBOOT # myclient :sm=255.255.255.0:\
:sa=<SERVER>:\
:gw=<GATEWAY>:\
:rp="<SERVER>:<ROOT>":
<CLIENT>:ha=0123456789ab:tc=.default
.Ed .Ed
.Pp .Pp
さらなる情報は、 SERVER, GATEWAY, CLIENT の意味は明らかでしょう。
.Xr rbootd 8 .Pp
を参照して下さい。
.It .It
SPARC マシンをブートする場合、 ルートパーティション上に、ディスクレスクライアント用の設定ファイルを
( 生成します。これらは、
.Pa /usr/mdec/boot .Pa /cont/${i}/etc
のような) に置きます。ここで、${i} は、"default"、またはクライアントの
適当なディスクレスブートローダのコピーを サブネットブロードキャストアドレス、またはクライアントの
.Pa /tftpboot IP アドレスです。
ディレクトリにインストールします。 .Pp
ブートプログラムが、16 進のクライアントの IP アドレスとドットと /etc/rc の主要な部分の実行 (これには、rc.conf の読み込みも含まれます)
アーキテクチャ名からなるファイル名 (全て英語の大文字) で の前に、/etc/rc.diskless.1 によって、ファイルが
アクセスできるようにリンクを作成します。 上に記したディレクトリから /etc にコピーされ
例えば以下のようになります: (/etc にあったそれ以前の内容は上書きされます)、
.Bd -literal -offset indent -compact 最も汎用のものから開始されます。
# cd /tftpboot .Pp
# ln -s boot C0C5600C.SUN4 最低でも、
.Pa /conf/default/etc/fstab
に次の内容を含める必要があります。
.Bd -literal -offset indent
<SERVER>:<ROOT> / nfs ro 0 0
<SERVER>:/usr /usr nfs ro 0 0
proc /proc procfs rw 0 0
.Ed .Ed
.Pp .Pp
Sun3 のマシンに対しては、この名前は C0C5600C となるようにします また、
(Sun3 の PROM はアーキテクチャ名を付加しません)。 .Pa /conf/default/etc/rc.conf
使われる名前はアーキテクチャに依存します。 を変更し、ディスクレスクライアント用のスタートアップオプションを
これは、単純にブートクライアントの PROM が何を望んでいるかに 含むようにしたバージョンを用意する必要もあります。
一致させます。 .Pp
クライアントの PROM が期待されるファイルを読み込むことに スタートアップコードで既に設定されているため、
失敗する場合には、 hostname や ifconfig_* を指定する必要はまずないでしょう。
クライアントがどんなファイル名を読み込もうとしているのかを知るために 一方、サーバのローカルスタートアップファイルを使用しないようにするため、
.Xr tcpdump 1 local_startup="" を設定する必要があるでしょう。
を使うことができます。 最後になりますが、
複数のディスクレスクライアントで同じ設定ファイルを共有する場合、
`hostname` の値をスイッチ変数に使う case 文を用いて、
マシン固有の設定を行なうようにするといいかもしれません。
.Pp .Pp
HP 300 シリーズのマシンをブートする場合、
ネットワークブートプログラム
.Pa SYS_UBOOT
(これは、インストール前に
.Pa uboot.lif
から呼び出されます
) がディレクトリ
.Pa /usr/mdec/rbootd
にインストールされているようにします。
.It .It
myclient をブートパラメータデータベース カーネルを構築します。その際、設定ファイル
.Pa /etc/bootparams (/sys/i386/conf/DISKLESS など) には、少なくとも
に追加します: 次のオプションを含めておきます。
.Bd -literal -offset indent -compact .Bd -literal -offset indent
myclient root=server:/export/myclient/root options MFS
options BOOTP
options BOOTP_NFSROOT
options BOOTP_COMPAT
.Ed .Ed
.Pp .Pp
注: スワップファイルをマウント可能とするには、mountd が ファイアウォールを使用する場合、デフォルトをオープンにしておかねば
.Fl r ならないことは覚えておいて下さい。オープンにしておかないと、
フラグ付きで開始されていることを確認することが必要です。 カーネルで bootp パケットの読み書きができなくなります。
.It
myclient のためのスワップファイルを作成します:
.Bd -literal -offset indent -compact
# mkdir /export/myclient
# cd /export/myclient
# dd if=/dev/zero of=swap bs=16k count=1024
.Ed
ここでは、16 メガバイトのスワップファイルを作成しました。
.It
myclient の
.Pa /
ファイルシステムをサーバ上に作成します。
これがどのように行われるかはクライアントのアーキテクチャと
NetBSD ディストリビューションのバージョンに依存します。
サーバのルートファイルシステムをコピーし変更するように
単純であるか、おそらく標準バイナリディストリビューションから
これらのファイルを入手する必要があるかも知れません
.Pp
SunOS とはちがって、クライアントのスワップのためにマウントポイントを
作成する必要があることに注意が必要です:
.Bd -literal -offset indent -compact
# mkdir /export/myclient/root/swap
.Ed
.It
.Pa /etc/exports
にある必要とされるファイルシステムを公開します:
.Bd -literal -offset indent -compact
/usr -ro myclient
# for SunOS:
# /export/myclient -rw=myclient,root=myclient
# for NetBSD:
/export/myclient -maproot=root -alldirs myclient
.Ed
.Pp
サーバとクライアントが同じアーキテクチャである場合、
クライアントはサーバの
.Pa /usr
を共有することができます (これは上記のように実現します)。
そうでない場合、クライアントのための
.Pa /usr
パーティションを別の場所に正しく作成する必要があります。
.Pp
もしサーバが sparc の場合でクライアントが sun3 の場合、
.Pa /export/usr.sun3
を作成し中身も作り、その後以下の
.Pa /etc/exports
行を作成します:
.Bd -literal -offset indent -compact
/export/usr.sun3 -ro myclient
/export/myclient -rw=myclient,root=myclient
.Ed
.It
最低限、
.Pa /export/myclient/root
にある以下のファイルをコピーしカスタマイズします:
.Bd -literal -offset indent -compact
# cd /export/myclient/root/etc
# cp fstab.nfs fstab
# cp /etc/hosts hosts
# echo myclient > myname
# echo 192.197.96.12 > hostname.le0
.Ed
.Pp
上記の "le0" はクライアントがブートのために使う
ネットワークインタフェース名に置き換えなければなりません。
.It
クライアントの
.Pa /etc/fstab
(これはつまり
.Pa /export/myclient/root/etc/fstab
です)
にあるクリティカルなマウントポイントとスワップファイルを
正しく設定します。
つまり以下のようにします:
.Bd -literal -offset indent -compact
myserver:/export/myclient/root / nfs rw 0 0
myserver:/usr /usr nfs rw 0 0
myserver:/export/myclient/swap none swap sw,nfsmntpt=/swap
.Ed
.Pp
.Pa /etc/fstab
にスワップファイルを指定しなければならないことに注意してください。
指定しないとスワップが使用されません。
.El
.Sh 関連ファイル
.Bl -tag -width /usr/mdec/rbootd -compact
.It Pa /etc/ethers
わかっているクライアントのイーサネットアドレス
.It Pa /etc/bootparams
クライアントのルートパス名
.It Pa /etc/exports
公開された NFS マウントポイント
.It Pa /etc/rbootd.conf
HP リモートブートデーモンのための設定ファイル
.It Pa /tftpboot
Sun PROM によって読み込まれるブートプログラムの場所
.It Pa /usr/mdec/rbootd
HP ブート ROM によって読み込まれるブートプログラムの場所
.El .El
.Sh セキュリティ上の問題
暗号化されない NFS を使用してルートパーティションと
ユーザパーティションをマウントすると、暗号化キーなどの
情報が洩れるかもしれないことに注意して下さい。
.Pp
.Sh バグ
このマニュアルページはおそらく不完全です。
.Pp
FreeBSD はときどきルートパーティションに書き込みを要求します。
ですから、スタートアップスクリプトでは、元の内容を保存する間、
MFS ファイルシステムをいくつかの位置 (/etc や /var など) に
マウントします。この処理はすべての場合を扱えないかもしれません。
.Sh 関連項目 .Sh 関連項目
.Xr bootparams 5 ,
.Xr ethers 5 , .Xr ethers 5 ,
.Xr exports 5 , .Xr exports 5 ,
.Xr bootparamd 8 , .Xr bootpd 8 ,
.Xr mountd 8 , .Xr mountd 8 ,
.Xr nfsd 8 , .Xr nfsd 8 ,
.Xr rarpd 8 , .Xr pxeboot 8 ,
.Xr rbootd 8 ,
.Xr reboot 8 , .Xr reboot 8 ,
.Xr tftpd 8 .Xr tftpd 8 ,
.Xr ports/net/etherboot