373 lines
11 KiB
Groff
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
|