doc/ja_JP.eucJP/man/man8/diskless.8
2003-03-12 07:13:36 +00:00

373 lines
11 KiB
Groff

.\" %NetBSD: diskless.8,v 1.11 1997/06/16 07:50:35 mrg 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
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. The name of the author may not be used to endorse or promote products
.\" derived from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (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.18 2002/12/23 18:44:22 dillon Exp %
.\"
.\" $FreeBSD$
.Dd April 18, 2001
.Dt DISKLESS 8
.Os
.Sh 名称
.Nm diskless
.Nd ネットワークを介してシステムをブートする
.Sh 解説
ネットワークを介してマシンをブートする能力は、
.Em diskless
もしくは
.Em dataless
マシンのためや、ローカルのファイルシステムの再インストールまたは
修復中に一時的に利用するために有用です。
このファイルは、クライアントがネットワークを介してブートする時に、
クライアントとサーバとの間で行われる通信の一般的な解説を提供します。
.Sh 操作
ネットワークを介してシステムをブートする時に、
クライアントとサーバの間で 3 フェーズのやりとりがあります:
.Pp
.Bl -enum -compact
.It
ステージ 1 のブートストラップ、
典型的にはイーサネットカード組み込みの PXE が、
ブートプログラムを読み込みます。
.It
ステージ 2 ブートプログラム、
典型的には 'pxeboot' が、モジュールとカーネルを読み込み、
カーネルをブートします。
.It
カーネル NFS がルートディレクトリを NFS マウントし、そこから処理を継続します。
.El
.Pp
これらの各フェーズについて、以降で詳しく記述します。
.Pp
最初に、ステージ 1 ブートストラップがステージ 2 ブートプログラムを
ネットワーク経由でロードします。
ステージ 1 ブートストラップは典型的には BOOTP か DHCP を使用して
読み取るファイル名を取得し、
TFTP を使用してそのファイルをロードします。
このファイルは典型的には "pxeboot" と呼ばれ、
.Pa /boot/pxeboot
からサーバの tftp ディレクトリに、典型的には
.Pa /tftpdir
にコピーされるべきです。
.Pp
それから、
ステージ 2 ブートプログラムが追加モジュールとカーネルをロードします。
これらのファイルは DHCP サーバや BOOTP サーバには存在しないかもしれません。
DHCP 設定で使用可能な
.Sy next-server
オプションを使用して、
ステージ 2 ブートファイルとカーネルを持つサーバを指定可能です。
ステージ 2 プログラムは、
NFS または TFTP を使用してこれらのファイルを取得します。
デフォルトでは NFS が使用されます。
pxeboot を使用している場合、
.Pa /etc/make.conf
LOADER_TFTP_SUPPORT=YES
を設定し、
下記の方法で pxeboot を再コンパイルおよび再インストールすることで
TFTP を使用するバージョンをインストール可能です。
しばしば TFTP を使用することが必要となりますので、
/tftpdir/
にカスタムカーネルを置くことができます。
NFS を使用するが
ディスクレスクライアント用にカスタムルートファイルシステムを持たない場合、
ステージ 2 ブートは、
サーバのカーネルをディスクレスマシン用のカーネルとしてロードしますが、
これはあなたの期待する動作ではないかもしれません。
.Bd -literal -offset indent
cd /usr/src/sys/i386/boot
make clean; make; make install
cp /boot/pxeboot /tftpdir/
.Ed
.Pp
フェーズ 3 では、カーネルが再度 DHCP や BOOTP を用いて設定情報を獲得し、
ルートファイルシステムのマウントに進み、動作を開始します。
ブートスクリプトはディスクレス起動を認識し、
.Pa /etc/rc.d/initdiskless
および
.Pa /etc/rc.d/diskless
中の動作を実行します。
古いシステムでは、スクリプトは
.Pa /etc/rc.diskless1
.Pa /etc/rc.diskless2
です。
.Sh 設定
ディスクレスクライアントを実行させるためには、次に示すものが必要です。
.Bl -bullet
.It
NFS サーバ。これは、適切なパーミッションを付けて
ルートパーティションと /usr パーティションをエクスポートします。
いくつかのシステムファイルにアクセスできるようにするために、
ルートパーティションが
.Fl maproot Ns =0
でエクスポートされている限り、
スクリプト
.Pa rc.diskless{1,2}
は読み込み専用パーミッションで動作します。
例として
.Pa /etc/exports
は次に示す行を含みます。
.Bd -literal -offset indent
<ROOT> -ro -maproot=0 -alldirs <list of diskless clients>
/usr -ro -alldirs <list of diskless clients>
.Ed
.Pp
ここで
.Aq ROOT
は、ルートパーティションのサーバ上でのマウントポイントです。
スクリプト
.Pa /usr/share/examples/diskless/clone_root
を使い、共用可能な読み込み専用ルートパーティションを
生成することができます。
しかし、多くの場合、サーバ自身が使用するルートディレクトリを
(読み込み専用で) エクスポートさせると決めることもできます。
.It
.Tn BOOTP
または
.Tn DHCP
サーバ。
.Xr bootpd 8
.Pa /etc/inetd.conf
.Em 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
.Aq SERVER ,
.Aq GATEWAY ,
.Aq CLIENT ,
.Aq ROOT
の意味は明らかでしょう。
.Pp
.It
適切に初期化されたルートパーティション。
スクリプト
.Pa /usr/share/examples/diskless/clone_root
が、サーバのルートパーティションを参照として使用することで、
この作成の助けとなります。
作業を始めたばかりならば、サーバ自身のルートディレクトリ
.Pa /
を使用すべきであり、この複製を作成すべきではありません。
.Pp
普通は、ディスクレスブートにおいてはサーバの
.Pa rc.conf
.Pa rc.local
とは異なるものを使いたいでしょう。
ディスクレスブートスクリプトは、(ルートの他のサブディレクトリと同様)
.Pa /etc
中の様々なファイルをオーバライドする機構を提供します。
スクリプトは 4 個のオーバライドディレクトリ
.Pa /conf/base ,
.Pa /conf/default ,
.Pa /conf/<broadcast-ip> ,
.Pa /conf/<machine-ip>
を提供します。
サーバの
.Pa /etc
をディスクレスマシン上で完全に置き換える
.Pa /conf/base/etc
を、常に作成すべきです。
ここで、サーバの
.Pa /etc
を複製することが可能ですし、サーバの
.Pa /etc
.Pa /conf/base/etc
へマウントすることをディスクレスブートスクリプトに対して指示する
特殊ファイルを作成することも可能です。
これは、ディスクレスマシンの
.Pa /etc
の元となるマウントポイントを含むファイル
.Pa /conf/base/etc/diskless_remount
を作成することで実現されます。
例えば、このファイルの中身は次のようになります:
.Bd -literal -offset 4n
10.0.0.1:/etc
.Ed
.Pp
ディスクレススクリプトは、
オーバライドされたディレクトリを保持するために、
メモリファイルシステムを作成します。
わずか 2MB パーティションがデフォルトで作成されますが、
用途によっては足りないかもしれません。
この動作を変えるには、
このディレクトリ用のメモリディスクの大きさを
512 バイトセクタ数単位で示す、ファイル
.Pa /conf/base/etc/md_size
を作成します。
.Pp
その次に、典型的には、ファイル毎のオーバライドを
.Pa /conf/default/etc
ディレクトリにて提供します。
最低でも、
.Pa /etc/fstab ,
.Pa /etc/rc.conf ,
.Pa /etc/rc.local
のオーバライドを
.Pa /conf/default/etc/fstab ,
.Pa /conf/default/etc/rc.conf ,
.Pa /conf/default/etc/rc.local
で指定する必要があります。
.Pp
オーバライドは階層的です。
ネットワーク固有のデフォルトを
.Pa /conf/<BROADCASTIP>/etc
ディレクトリ中で提供可能です。
ここで、<BROADCASTIP> は、
.Tn BOOTP
にてディスクレスシステムに与えられる、
ディスクレスシステムのブロードキャストアドレスを示します。
.Pa diskless_remount
および
.Pa md_size
の機構はこれらのディレクトリ中のいかなるものに対しても動作します。
コンフィギュレーション機能は
.Pa /etc
以外のディレクトリに対して動作します。
置換やオーバライドしたいディレクトリを
.Pa /conf/{base,default,<broadcast>,<ip>}/*
中に作成することで、
.Pa /etc
と同様に動作します。
.Pp
通常は
.Pa /conf/base/etc/diskless_remount
を使用してサーバの
.Pa /etc
を複製しますので、
メモリファイルシステムか不要なファイルを削除したいかもしれません。
例えば、サーバはファイアウォールを持つがディスクレスではそうでない場合、
.Pa /etc/ipfw.conf
を削除したいと思うでしょう。
.Pa /conf/base/<DIRECTORY>.remove
ファイルを作成することで、これは実現可能です。
例えば、
.Pa /conf/base/etc.remove
に相対パスを列挙すると、
ブートスクリプトがこれらをメモリファイルシステムから削除します。
.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
スタートアップコードで既に設定されているため、
.Va hostname
.Va ifconfig_*
指定する必要はまずないでしょう。
一方、サーバのローカルスタートアップファイルを使用しないようにするため、
.Va local_startup Ns = Ns Qq
を設定する必要があるでしょう。
.Pp
スタートアップスクリプトが
.Xr md 4
のファイルシステムの
.Pa /var
をマウントしますが、サイトによっては
.Pa /etc/defaults/rc.conf
.Va entropy_dir Ns = Ns Qq Li NO
を設定することによりエントリピの保存を無効化したいかもしれません。
.Pp
最後になりますが、
複数のディスクレスクライアントで同じ設定ファイルを共有する場合、
.Li `hostname`
の値をスイッチ変数に使う
.Ic case
文を用いて、
マシン固有の設定を行なうようにすると良いかもしれません。
.Pp
.It
NFS または TFTP を使用されロードされる、ディスクレスクライアント用のカーネル。
これは最低以下のオプション付きで構築されるべきです:
.Bd -literal -offset indent
options BOOTP
options BOOTP_NFSROOT
options BOOTP_COMPAT
.Ed
.Pp
デバイスセクションには以下を追加します:
.Bd -literal -offset indent
device md
.Ed
.Pp
ファイアウォールを使用する場合、デフォルトをオープンにしておかねば
ならないことは覚えておいて下さい。オープンにしておかないと、
カーネルで bootp パケットの読み書きができなくなります。
.El
.Sh セキュリティ上の問題
暗号化されない NFS を使用してルートパーティションと
ユーザパーティションをマウントすると、暗号化キーなどの
情報が洩れるかもしれないことに注意して下さい。
.Sh バグ
このマニュアルページはおそらく不完全です。
.Pp
.Fx
はときどきルートパーティションに書き込みを要求します。
ですから、スタートアップスクリプトでは、元の内容を保存する間、
MFS ファイルシステムをいくつかの位置 (
.Pa /etc
.Pa /var
など) に
マウントします。この処理はすべての場合を扱えないかもしれません。
.Sh 関連項目
.Xr ethers 5 ,
.Xr exports 5 ,
.Xr bootpd 8 ,
.Xr mountd 8 ,
.Xr nfsd 8 ,
.Xr pxeboot 8 ,
.Xr reboot 8 ,
.Xr tftpd 8 ,
.Xr ports/net/etherboot