diskless.8 revision 1.6.2.3
Submitted by:<kuma@jp.FreeBSD.org> Norihiro Kumagai
This commit is contained in:
parent
d8fde782cd
commit
ab35b57046
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=9280
1 changed files with 137 additions and 267 deletions
|
@ -1,6 +1,8 @@
|
|||
.\" %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
|
||||
.\" Updated by Luigi Rizzo
|
||||
.\" All rights reserved.
|
||||
.\"
|
||||
.\" 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
|
||||
.\" 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
|
||||
.Os
|
||||
.Sh 名称
|
||||
|
@ -42,15 +43,13 @@
|
|||
修復中に一時的に利用するために有用です。
|
||||
このファイルは、クライアントがネットワークを介してブートする時に、
|
||||
クライアントとサーバとの間で行われる通信の一般的な解説を提供します。
|
||||
一般的な解説の後に、ディスクレスの Sun クライアントのためのサーバ設定
|
||||
を行うための詳細な指示を説明します。
|
||||
.Sh 操作
|
||||
ネットワークを介してシステムをブートする時に、
|
||||
クライアントとサーバの間で 3 フェーズのやりとりがあります:
|
||||
.Pp
|
||||
.Bl -enum -compact
|
||||
.It
|
||||
PROM (もしくはステージ 1 のブートストラップ) がブートプログラムを
|
||||
ステージ 1 のブートストラップがブートプログラムを
|
||||
読み込みます。
|
||||
.It
|
||||
ブートプログラムがカーネルを読み込みます。
|
||||
|
@ -58,286 +57,157 @@ PROM (
|
|||
カーネルがルートを NFS マウントします。
|
||||
.El
|
||||
.Pp
|
||||
これかの各フェーズについて、以降で詳しく記述します。
|
||||
これらの各フェーズについて、以降で詳しく記述します。
|
||||
.Pp
|
||||
フェーズ 1 では、PROM がブートプログラムを読み込みます。
|
||||
PROM の設計の種類はたくさんありますので、
|
||||
このフェーズは本質的にマシンに依存しています。
|
||||
Sun のマシンは
|
||||
クライアントの
|
||||
.Tn IP
|
||||
アドレスを決定するために
|
||||
.Tn RARP
|
||||
を利用し、その後
|
||||
.Tn RARP
|
||||
リプライを送ったところからブートプログラムをダウンロードするために
|
||||
.Tn TFTP
|
||||
を使います。
|
||||
HP 300 シリーズのマシンでは、ブートプログラムをダウンロードするために
|
||||
.Tn HP リモートメンテナンスプロトコル
|
||||
を利用します。
|
||||
典型的なパーソナルコンピュータはネットワークブートプログラムを
|
||||
ディスケットもしくはネットワークカードの特別な PROM をつかって読み込むかも
|
||||
しれません。
|
||||
フェーズ 1 では、ステージ 1 のブートストラップコードが
|
||||
ブートプログラムを読み込みます。このブートプログラムは、
|
||||
普通ネットワークカードを制御できます。
|
||||
ブートプログラムを、BIOS や、ネットワークカード上の BOOT ROM
|
||||
(PXE, etherboot, netboot) に格納することもできます。また、
|
||||
ディスクユニット (etherboot, netboot 等) からロードさせることもできます。
|
||||
.Pp
|
||||
フェーズ 2 では、ブートプログラムがカーネルを読み込みます。
|
||||
このフェーズの操作はブートプログラムの設計に依存します。
|
||||
(ここで記述する設計は Sun と NetBSD/hp300 で使われているものです。)
|
||||
ブートプログラムは以下を行います:
|
||||
普通、ブートプログラムは
|
||||
.Tn BOOTP
|
||||
プロトコルまたは
|
||||
.Tn DHCP
|
||||
プロトコルを用い、クライアントの IP アドレスと
|
||||
その他のブート情報を取得します。ブート情報は、
|
||||
NFS サーバ、ルータ、ネームサーバの IP アドレス、
|
||||
ロードするカーネル名を含みます (これに限らず他の情報が含まれる
|
||||
こともあります)。
|
||||
その後、カーネルがロードされます。これには、
|
||||
(etherboot や netboot の場合のように) NFS を使って直接ロードされる場合と、
|
||||
pxeboot と呼ばれる中間ローダを通じて、TFTP や NFS を使ってロードされる
|
||||
場合とがあります。
|
||||
.Pp
|
||||
.Bl -tag -width \&2.2 -compact
|
||||
.It 2.1
|
||||
.Tn RARP
|
||||
を使ってクライアントの IP アドレスを入手します。
|
||||
.It 2.2
|
||||
.Tn RPC / BOOTPARAMS / WHOAMI
|
||||
要求をクライアントの 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
|
||||
フェーズ 3 では、カーネルが DHCP や BOOTP を用いて設定情報を獲得し、
|
||||
ルートファイルシステムのマウントに進み、動作を開始します。
|
||||
ディスクレスシステムの開始処理中に行なわれるいくつかの動作は、
|
||||
.Pa /etc/rc.diskless1
|
||||
と
|
||||
.Pa /etc/rc.diskless2
|
||||
とに列挙されています。
|
||||
|
||||
.Sh 設定
|
||||
クライアントがネットワークを介してブートするためには、
|
||||
サーバは正しく設定されていなければなりません。
|
||||
この例では、 どのように Sun クライアントが設定されれば良いかを示します。
|
||||
他のクライアントの設定も似たようなものです。
|
||||
ディスクレスクライアントを実行させるためには、次に示すものが必要です。
|
||||
.Pp
|
||||
クライアントのホスト名 (hostname) を "myclient"
|
||||
と仮定します。
|
||||
.Pp
|
||||
.Bl -enum
|
||||
.Bl -bullet -compact
|
||||
.It
|
||||
.Pa /etc/ethers
|
||||
に適切なクライアントのイーサネットアドレスのエントリを追加します:
|
||||
.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
|
||||
が設定されているようにします。
|
||||
.Pp
|
||||
HP 300 シリーズのマシンをブートする場合、
|
||||
ブートプログラムがクライアントに転送されるように
|
||||
.Pa /etc/rbootd.conf
|
||||
が正しく設定されているようにします。
|
||||
エントリは以下のようになるでしょう:
|
||||
.Bd -literal -offset indent -compact
|
||||
08:00:09:01:23:E6 SYS_UBOOT # myclient
|
||||
.Ed
|
||||
.Pp
|
||||
さらなる情報は、
|
||||
.Xr rbootd 8
|
||||
を参照して下さい。
|
||||
.It
|
||||
SPARC マシンをブートする場合、
|
||||
(
|
||||
.Pa /usr/mdec/boot
|
||||
のような)
|
||||
適当なディスクレスブートローダのコピーを
|
||||
.Pa /tftpboot
|
||||
ディレクトリにインストールします。
|
||||
ブートプログラムが、16 進のクライアントの IP アドレスとドットと
|
||||
アーキテクチャ名からなるファイル名 (全て英語の大文字) で
|
||||
アクセスできるようにリンクを作成します。
|
||||
例えば以下のようになります:
|
||||
.Bd -literal -offset indent -compact
|
||||
# cd /tftpboot
|
||||
# ln -s boot C0C5600C.SUN4
|
||||
.Ed
|
||||
.Pp
|
||||
Sun3 のマシンに対しては、この名前は C0C5600C となるようにします
|
||||
(Sun3 の PROM はアーキテクチャ名を付加しません)。
|
||||
使われる名前はアーキテクチャに依存します。
|
||||
これは、単純にブートクライアントの PROM が何を望んでいるかに
|
||||
一致させます。
|
||||
クライアントの PROM が期待されるファイルを読み込むことに
|
||||
失敗する場合には、
|
||||
クライアントがどんなファイル名を読み込もうとしているのかを知るために
|
||||
.Xr tcpdump 1
|
||||
を使うことができます。
|
||||
.Pp
|
||||
HP 300 シリーズのマシンをブートする場合、
|
||||
ネットワークブートプログラム
|
||||
.Pa SYS_UBOOT
|
||||
(これは、インストール前に
|
||||
.Pa uboot.lif
|
||||
から呼び出されます
|
||||
) がディレクトリ
|
||||
.Pa /usr/mdec/rbootd
|
||||
にインストールされているようにします。
|
||||
.It
|
||||
myclient をブートパラメータデータベース
|
||||
.Pa /etc/bootparams
|
||||
に追加します:
|
||||
.Bd -literal -offset indent -compact
|
||||
myclient root=server:/export/myclient/root
|
||||
.Ed
|
||||
.Pp
|
||||
注: スワップファイルをマウント可能とするには、mountd が
|
||||
.Fl r
|
||||
フラグ付きで開始されていることを確認することが必要です。
|
||||
.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
|
||||
を作成し中身も作り、その後以下の
|
||||
NFS サーバ。これは、適切なパーミッションを付けて
|
||||
ルートパーティションと /usr パーティションをエクスポートします。
|
||||
いくつかのシステムファイルにアクセスできるようにするために、
|
||||
ルートパーティションが -maproot=0 でエクスポートされている限り、
|
||||
スクリプト rc.diskless{1,2} は読み込み専用パーミッションで動作します。
|
||||
例として
|
||||
.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
|
||||
は次に示す行を含みます。
|
||||
.Bd -literal -offset indent
|
||||
<ROOT> -maproot=0 -alldirs <list of diskless clients>
|
||||
/usr -alldirs <list of diskless clients>
|
||||
.Ed
|
||||
.Pp
|
||||
上記の "le0" はクライアントがブートのために使う
|
||||
ネットワークインタフェース名に置き換えなければなりません。
|
||||
ここで <ROOT> は、ルートパーティションのサーバ上でのマウントポイントです。
|
||||
スクリプト
|
||||
.Pa /usr/share/examples/diskless/clone_root
|
||||
を使い、共用可能な読み込み専用ルートパーティションを
|
||||
生成することができます。
|
||||
しかし、同様に、サーバ自身が使用するルートディレクトリを
|
||||
(読み込み専用で) エクスポートさせると決めることもできます。
|
||||
.Pp
|
||||
.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
|
||||
bootp または dhcp サーバ。bootpd は
|
||||
.Pa /etc/inetd.conf
|
||||
の
|
||||
.Pa bootps
|
||||
行のコメントを外すことで使用可能にすることができます。
|
||||
.Pa /etc/bootptab
|
||||
の例は次のようになります。
|
||||
.Bd -literal -offset indent
|
||||
.default:\
|
||||
hn:ht=1:vm=rfc1048:\
|
||||
:sm=255.255.255.0:\
|
||||
:sa=<SERVER>:\
|
||||
:gw=<GATEWAY>:\
|
||||
:rp="<SERVER>:<ROOT>":
|
||||
|
||||
<CLIENT>:ha=0123456789ab:tc=.default
|
||||
.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 によって読み込まれるブートプログラムの場所
|
||||
SERVER, GATEWAY, CLIENT の意味は明らかでしょう。
|
||||
.Pp
|
||||
.It
|
||||
ルートパーティション上に、ディスクレスクライアント用の設定ファイルを
|
||||
生成します。これらは、
|
||||
.Pa /cont/${i}/etc
|
||||
に置きます。ここで、${i} は、"default"、またはクライアントの
|
||||
サブネットブロードキャストアドレス、またはクライアントの
|
||||
IP アドレスです。
|
||||
.Pp
|
||||
/etc/rc の主要な部分の実行 (これには、rc.conf の読み込みも含まれます)
|
||||
の前に、/etc/rc.diskless.1 によって、ファイルが
|
||||
上に記したディレクトリから /etc にコピーされ
|
||||
(/etc にあったそれ以前の内容は上書きされます)、
|
||||
最も汎用のものから開始されます。
|
||||
.Pp
|
||||
最低でも、
|
||||
.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
|
||||
.Pp
|
||||
また、
|
||||
.Pa /conf/default/etc/rc.conf
|
||||
を変更し、ディスクレスクライアント用のスタートアップオプションを
|
||||
含むようにしたバージョンを用意する必要もあります。
|
||||
.Pp
|
||||
スタートアップコードで既に設定されているため、
|
||||
hostname や ifconfig_* を指定する必要はまずないでしょう。
|
||||
一方、サーバのローカルスタートアップファイルを使用しないようにするため、
|
||||
local_startup="" を設定する必要があるでしょう。
|
||||
最後になりますが、
|
||||
複数のディスクレスクライアントで同じ設定ファイルを共有する場合、
|
||||
`hostname` の値をスイッチ変数に使う case 文を用いて、
|
||||
マシン固有の設定を行なうようにするといいかもしれません。
|
||||
.Pp
|
||||
.It
|
||||
カーネルを構築します。その際、設定ファイル
|
||||
(/sys/i386/conf/DISKLESS など) には、少なくとも
|
||||
次のオプションを含めておきます。
|
||||
.Bd -literal -offset indent
|
||||
options MFS
|
||||
options BOOTP
|
||||
options BOOTP_NFSROOT
|
||||
options BOOTP_COMPAT
|
||||
.Ed
|
||||
.Pp
|
||||
ファイアウォールを使用する場合、デフォルトをオープンにしておかねば
|
||||
ならないことは覚えておいて下さい。オープンにしておかないと、
|
||||
カーネルで bootp パケットの読み書きができなくなります。
|
||||
.El
|
||||
.Sh セキュリティ上の問題
|
||||
暗号化されない NFS を使用してルートパーティションと
|
||||
ユーザパーティションをマウントすると、暗号化キーなどの
|
||||
情報が洩れるかもしれないことに注意して下さい。
|
||||
.Pp
|
||||
.Sh バグ
|
||||
このマニュアルページはおそらく不完全です。
|
||||
.Pp
|
||||
FreeBSD はときどきルートパーティションに書き込みを要求します。
|
||||
ですから、スタートアップスクリプトでは、元の内容を保存する間、
|
||||
MFS ファイルシステムをいくつかの位置 (/etc や /var など) に
|
||||
マウントします。この処理はすべての場合を扱えないかもしれません。
|
||||
.Sh 関連項目
|
||||
.Xr bootparams 5 ,
|
||||
.Xr ethers 5 ,
|
||||
.Xr exports 5 ,
|
||||
.Xr bootparamd 8 ,
|
||||
.Xr bootpd 8 ,
|
||||
.Xr mountd 8 ,
|
||||
.Xr nfsd 8 ,
|
||||
.Xr rarpd 8 ,
|
||||
.Xr rbootd 8 ,
|
||||
.Xr pxeboot 8 ,
|
||||
.Xr reboot 8 ,
|
||||
.Xr tftpd 8
|
||||
.Xr tftpd 8 ,
|
||||
.Xr ports/net/etherboot
|
||||
|
|
Loading…
Reference in a new issue