I'm very pleased to announce the release of our new website and documentation using the new toolchain with Hugo and AsciiDoctor. To get more information about the new toolchain please read the FreeBSD Documentation Project Primer[1], Hugo docs[2] and AsciiDoctor docs[3]. Acknowledgment: Benedict Reuschling <bcr@> Glen Barber <gjb@> Hiroki Sato <hrs@> Li-Wen Hsu <lwhsu@> Sean Chittenden <seanc@> The FreeBSD Foundation [1] https://docs.FreeBSD.org/en/books/fdp-primer/ [2] https://gohugo.io/documentation/ [3] https://docs.asciidoctor.org/home/ Approved by: doceng, core
466 lines
12 KiB
Groff
466 lines
12 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, Robert Watson
|
|
.\" 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.24 2004/06/21 14:23:31 mpp Exp %
|
|
.\"
|
|
.\" $FreeBSD$
|
|
.Dd January 10, 2004
|
|
.Dt DISKLESS 8
|
|
.Os
|
|
.Sh 名称
|
|
.Nm diskless
|
|
.Nd ネットワークを介してシステムをブートする
|
|
.Sh 解説
|
|
ネットワークを介してマシンをブートする能力は、
|
|
.Em diskless
|
|
もしくは
|
|
.Em dataless
|
|
マシンのためや、ローカルのファイルシステムの再インストールまたは
|
|
修復中に一時的に利用するために有用です。
|
|
このファイルは、クライアントがネットワークを介してブートする時に、
|
|
クライアントとサーバとの間で行われる通信の一般的な解説を提供します。
|
|
.Sh 操作
|
|
ネットワークを介してシステムをブートする時に、
|
|
クライアントとサーバの間で 3 フェーズのやりとりがあります:
|
|
.Bl -enum
|
|
.It
|
|
ステージ 1 のブートストラップ、
|
|
典型的にはイーサネットカード組み込みの PXE が、
|
|
ブートプログラムを読み込みます。
|
|
.It
|
|
ステージ 2 ブートプログラム、
|
|
典型的には
|
|
.Xr pxeboot 8
|
|
が、モジュールとカーネルを読み込み、
|
|
カーネルをブートします。
|
|
.It
|
|
カーネル
|
|
.Tn NFS
|
|
がルートディレクトリをマウントし、そこから処理を継続します。
|
|
.El
|
|
.Pp
|
|
これらの各フェーズについて、以降で詳しく記述します。
|
|
.Pp
|
|
最初に、ステージ 1 ブートストラップがステージ 2 ブートプログラムを
|
|
ネットワーク経由でロードします。
|
|
ステージ 1 ブートストラップは典型的には
|
|
.Tn BOOTP
|
|
か
|
|
.Tn DHCP
|
|
を使用して読み取るファイル名を取得し、
|
|
.Tn TFTP
|
|
を使用してそのファイルをロードします。
|
|
このファイルは典型的には
|
|
.Pa pxeboot
|
|
と呼ばれ、
|
|
.Pa /boot/pxeboot
|
|
からサーバの
|
|
.Tn TFTP
|
|
ディレクトリに、典型的には
|
|
.Pa /tftpdir
|
|
にコピーされるべきです。
|
|
.Pp
|
|
それから、
|
|
ステージ 2 ブートプログラムが追加モジュールとカーネルをロードします。
|
|
これらのファイルは
|
|
.Tn DHCP
|
|
サーバや
|
|
.Tn BOOTP
|
|
サーバには存在しないかもしれません。
|
|
.Tn DHCP
|
|
設定で使用可能な
|
|
.Ic next-server
|
|
オプションを使用して、
|
|
ステージ 2 ブートファイルとカーネルを持つサーバを指定可能です。
|
|
ステージ 2 プログラムは、
|
|
.Tn NFS
|
|
または
|
|
.Tn TFTP
|
|
を使用してこれらのファイルを取得します。
|
|
デフォルトでは
|
|
.Tn NFS
|
|
が使用されます。
|
|
.Xr pxeboot 8
|
|
を使用している場合、
|
|
.Pa /etc/make.conf
|
|
に
|
|
.Li LOADER_TFTP_SUPPORT=YES
|
|
を設定し、
|
|
下記の方法で
|
|
.Xr pxeboot 8
|
|
を再コンパイルおよび再インストールすることで
|
|
.Tn TFTP
|
|
を使用するバージョンをインストール可能です。
|
|
しばしば
|
|
.Tn TFTP
|
|
を使用することが必要となりますので、
|
|
.Pa /tftpdir/
|
|
にカスタムカーネルを置くことができます。
|
|
.Tn NFS
|
|
を使用するが
|
|
.Nm
|
|
クライアント用にカスタムルートファイルシステムを持たない場合、
|
|
ステージ 2 ブートは、サーバのカーネルを
|
|
.Nm
|
|
マシン用のカーネルとしてロードしますが、
|
|
これはあなたの期待する動作ではないかもしれません。
|
|
.Bd -literal -offset indent
|
|
cd /usr/src/sys/boot/i386
|
|
make clean; make; make install
|
|
cp /boot/pxeboot /tftpdir/
|
|
.Ed
|
|
.Pp
|
|
フェーズ 3 では、カーネルは以下の 2 つの方法のどちらかで
|
|
IP ネットワーク設定を獲得し、ルートファイルシステムのマウントに進み、
|
|
動作を開始します。
|
|
フェーズ 2 のローダが、カーネル環境を使ってカーネルにネットワーク設定を
|
|
渡せるのなら、カーネルはその情報を使ってネットワークインタフェースを設定します。
|
|
そうでない場合、
|
|
.Tn DHCP
|
|
や
|
|
.Tn BOOTP
|
|
を用いて設定情報を獲得しないとなりません。
|
|
ブートスクリプトは
|
|
.Nm
|
|
起動を認識し、
|
|
.Pa /etc/rc.d/initdiskless
|
|
および
|
|
.Pa /etc/rc.d/diskless
|
|
中の動作を実行します。
|
|
古いシステムでは、スクリプトは
|
|
.Pa /etc/rc.diskless1
|
|
と
|
|
.Pa /etc/rc.diskless2
|
|
です。
|
|
.Sh 設定
|
|
.Nm
|
|
クライアントを実行させるためには、次に示すものが必要です。
|
|
.Bl -bullet
|
|
.It
|
|
.Tn NFS
|
|
サーバ。これは、適切なパーミッションを付けて
|
|
ルートパーティションと
|
|
.Pa /usr
|
|
パーティションをエクスポートします。
|
|
いくつかのシステムファイルにアクセスできるようにするために、
|
|
ルートパーティションが
|
|
.Fl maproot Ns =0
|
|
でエクスポートされている限り、
|
|
スクリプト
|
|
.Nm
|
|
は読み込み専用パーミッションで動作します。
|
|
例として
|
|
.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
|
|
の
|
|
.Dq Li 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
|
|
の意味は明らかでしょう。
|
|
.It
|
|
適切に初期化されたルートパーティション。
|
|
スクリプト
|
|
.Pa /usr/share/examples/diskless/clone_root
|
|
が、サーバのルートパーティションを参照として使用することで、
|
|
この作成の助けとなります。
|
|
作業を始めたばかりならば、サーバ自身のルートディレクトリ
|
|
.Pa /
|
|
を使用すべきであり、この複製を作成すべきではありません。
|
|
.Pp
|
|
普通は、ディスクレスブートにおいてはサーバの
|
|
.Pa rc.conf
|
|
や
|
|
.Pa rc.local
|
|
とは異なるものを使いたいでしょう。
|
|
.Nm
|
|
ブートスクリプトは、(ルートの他のサブディレクトリと同様)
|
|
.Pa /etc
|
|
中の様々なファイルをオーバライドする機構を提供します。
|
|
スクリプトは 4 個のオーバライドディレクトリ
|
|
.Pa /conf/base ,
|
|
.Pa /conf/default ,
|
|
.Pa /conf/<broadcast-ip> ,
|
|
.Pa /conf/<machine-ip>
|
|
を提供します。
|
|
サーバの
|
|
.Pa /etc
|
|
を
|
|
.Nm
|
|
マシン上で完全に置き換える
|
|
.Pa /conf/base/etc
|
|
を、常に作成すべきです。
|
|
ここで、サーバの
|
|
.Pa /etc
|
|
を複製することが可能ですし、サーバの
|
|
.Pa /etc
|
|
を
|
|
.Pa /conf/base/etc
|
|
へマウントすることを
|
|
.Nm
|
|
ブートスクリプトに対して指示する
|
|
特殊ファイルを作成することも可能です。
|
|
これは、
|
|
.Nm
|
|
マシンの
|
|
.Pa /etc
|
|
の元となるマウントポイントを含むファイル
|
|
.Pa /conf/base/etc/diskless_remount
|
|
を作成することで実現されます。
|
|
例えば、このファイルの中身は次のようになります:
|
|
.Pp
|
|
.Dl 10.0.0.1:/etc
|
|
.Pp
|
|
代りに、サーバが独立したルートを複数持つ場合、
|
|
このファイルは次のようになります:
|
|
.Pp
|
|
.Dl 10.0.0.1:/usr/diskless/4.7-RELEASE/etc
|
|
.Pp
|
|
これは動作しますが、
|
|
.Pa /usr/diskless/4.7-RELEASE
|
|
を
|
|
.Pa /usr/diskless/4.8-RELEASE
|
|
へコピーしてインストールを更新すると、この移動を反映するように
|
|
.Pa diskless_remount
|
|
を変更する必要があるでしょう。
|
|
これを避けるために、
|
|
.Pa diskless_remount
|
|
ファイル中のパスで
|
|
.Pa /
|
|
で開始するものの実際のパスは、
|
|
クライアントのルートをこれらの前に付けたものになります。
|
|
これにより、このファイルには次のように書けます:
|
|
.Pp
|
|
.Dl /etc
|
|
.Pp
|
|
.Nm
|
|
スクリプトは、
|
|
オーバライドされたディレクトリを保持するために、
|
|
メモリファイルシステムを作成します。
|
|
わずか 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/ Ns Ao Ar BROADCASTIP Ac Ns Pa /etc
|
|
ディレクトリ中で提供可能です。
|
|
ここで、
|
|
.Aq Ar BROADCASTIP
|
|
は、
|
|
.Tn BOOTP
|
|
にてディスクレスシステムに与えられる、
|
|
.Nm
|
|
システムのブロードキャストアドレスを示します。
|
|
.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/ Ns Ao Ar DIRECTORY Ac Ns Pa .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
|
|
を変更し、
|
|
.Nm
|
|
クライアント用のスタートアップオプションを
|
|
含むようにしたバージョンを用意する必要もあります。
|
|
.Pa /conf/default/etc/rc.local
|
|
は空にできますが、サーバ自身の
|
|
.Pa /etc/rc.local
|
|
が
|
|
.Nm
|
|
システムに使用されることを防げます。
|
|
.Pp
|
|
スタートアップコードで既に設定されているため、
|
|
.Pa rc.conf
|
|
では
|
|
.Va hostname
|
|
や
|
|
.Va ifconfig_*
|
|
を指定する必要はまずないでしょう。
|
|
最後になりますが、
|
|
複数の
|
|
.Nm
|
|
クライアントで同じ設定ファイルを共有する場合、
|
|
.Li `hostname`
|
|
の値をスイッチ変数に使う
|
|
.Ic case
|
|
文を用いて、
|
|
マシン固有の設定を行なうようにすると良いかもしれません。
|
|
.It
|
|
.Tn NFS
|
|
または
|
|
.Tn TFTP
|
|
を使用されロードされる、
|
|
.Nm
|
|
クライアント用のカーネル。
|
|
これは NFS クライアントのサポートを含んでいなければなりません。
|
|
.Pp
|
|
.D1 Cd "options NFSCLIENT"
|
|
.D1 Cd "options NFS_ROOT"
|
|
.Pp
|
|
カーネル環境を使ってカーネルにネットワーク設定を渡すことのできない
|
|
ブート機構を使っているのなら、以下のオプションも含める必要があります。
|
|
.Pp
|
|
.D1 Cd "options BOOTP"
|
|
.D1 Cd "options BOOTP_NFSROOT"
|
|
.D1 Cd "options BOOTP_COMPAT"
|
|
.Pp
|
|
.Em 注 :
|
|
PXE 環境では上記のオプションは必要ありません。
|
|
.Pp
|
|
.Nm
|
|
ブート環境は、ルートファイルシステムを読み取り専用でマウントする時に
|
|
一時的なローカルディスクを提供するメモリに裏打ちされたファイルシステムに
|
|
依存しています。
|
|
そのため、カーネル設定のデバイスセクションには以下を追加することが必要です。
|
|
.Pp
|
|
.D1 Cd "device md"
|
|
.Pp
|
|
ファイアウォールを使用する場合、デフォルトを
|
|
.Dq open
|
|
にしておかねばならないことは覚えておいて下さい。
|
|
オープンにしておかないと、カーネルで
|
|
.Tn BOOTP
|
|
パケットの読み書きができなくなります。
|
|
.El
|
|
.Sh セキュリティ上の問題
|
|
暗号化されない
|
|
.Tn 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
|
|
.Pp
|
|
.Pa ports/net/etherboot
|