Index: head/ja_JP.eucJP/man/man1/login.1 =================================================================== --- head/ja_JP.eucJP/man/man1/login.1 (revision 22766) +++ head/ja_JP.eucJP/man/man1/login.1 (revision 22767) @@ -1,162 +1,158 @@ .\" %NetBSD: login.1,v 1.5 1994/12/23 06:53:00 jtc Exp % .\" .\" Copyright (c) 1980, 1990, 1993 .\" The Regents of the University of California. 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. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. .\" .\" @(#)login.1 8.2 (Berkeley) 5/5/94 -.\" %FreeBSD: src/usr.bin/login/login.1,v 1.26 2004/07/03 00:24:41 ru Exp % +.\" %FreeBSD: src/usr.bin/login/login.1,v 1.26.2.1 2004/10/16 00:54:51 brueffer Exp % .\" .\" $FreeBSD$ -.Dd May 5, 1994 +.Dd October 16, 2004 .Dt LOGIN 1 .Os .Sh 名称 .Nm login .Nd 指定したユーザでログインする .Sh 書式 .Nm .Op Fl fp .Op Fl h Ar hostname .Op Ar user .Sh 解説 .Nm は、指定したユーザでログインするものです。 .Pp user を指定しなかった場合、もしくは指定した user でのログインに失敗した ときには、 .Nm は、再度ユーザ名の入力を求めるプロンプトを表示します。 ユーザの確認方法は .Xr pam 8 で設定可能です。 パスワード認証がデフォルトです。 .Pp オプションとしては以下のものがあります: .Bl -tag -width indent .It Fl f パスワードによるユーザの確認を省略します。このオプションは、スーパユーザ か、すでにログインしているユーザが同じユーザ名で login を実行す るときのみ指定可能です。 .It Fl h コネクションを受信可能なホスト名を指定します。この機能は .Xr telnetd 8 などのデーモンによって使われています。このオプションはスーパユーザ しか指定することができません。 .It Fl p .Nm は、デフォルトでは実行時の環境 (環境変数など) を引き継ぎ ませんが、このオプションを指定すると、実行時の環境を引き継ぎます。 .El .Pp もし .Pa /etc/login.access ファイルが存在した場合、 .Nm はそのファイルから、ユーザとホストの組が特別に許可されている、もしくは 拒否されているかどうかをチェックします。 ログインアクセスは、ログインクラスでも制御可能です。 ログインクラスは、 時刻、tty、リモートホスト名に基く許可/拒否レコードを規定します。 .Pp もし .Pa /etc/fbtab ファイルが存在した場合、 .Nm はそのファイルに記述された幾つかのデバイスのプロテクトと所有者を変えます。 .Pp 通常、ユーザがログインすると、 .Nm はシステムのコピーライト表示、 ユーザが最後にログインした日付と時間、その日のメッセージなどの 情報を表示します。ただし、ユーザのホームディレクトリに .Pa .hushlogin というファイルが存在した場合は、これらのメッセージを表示 しないようにします (これは .Xr uucp 1 のようなプログラムがユーザとしてログインするためにあります)。 .Pp なお、環境変数 ( .Xr environ 7 ) HOME, SHELL, PATH, TERM, LOGNAME, USER は .Nm ユーティリティによりセットされます。 他の環境変数はログインクラスケーパビリティデータベースの エントリにより設定されるかも知れません。 ログインクラスはユーザのシステムパスワードレコードに割り当てられています。 ログインクラスは、当該ログインに許された最大および現在の資源制約、 プロセス優先度や他の多くのユーザログイン環境を制御します。 .Pp シェルによっては、本ユーティリティと似たまたは同じ、組み込みの .Nm コマンドを提供するものがあります。 .Xr builtin 1 マニュアルページを参照してください。 .Sh 関連ファイル .Bl -tag -width ".Pa /etc/login.access" -compact .It Pa /etc/fbtab デバイスのプロテクトの変更 .It Pa /etc/login.access ログインアクセス制御表 .It Pa /etc/login.conf ログインクラスケーパビリティデータベース .It Pa /etc/motd ログイン時に最初に表示するメッセージ .It Pa /var/mail/user ユーザごとのメールボックス .It Pa \&.hushlogin ログインメッセージを抑止するファイル .It Pa /etc/auth.conf 認証サービスの設定 -.It Pa /etc/pam.conf -.Nm -はサービス名 -.Dq login -で -.Pa /etc/pam.conf -エントリを見ます +.It Pa /etc/pam.d/login +.Xr pam 8 +の設定ファイル .El .Sh 関連項目 .Xr builtin 1 , .Xr chpass 1 , .Xr csh 1 , .Xr passwd 1 , .Xr rlogin 1 , .Xr getpass 3 , .Xr fbtab 5 , .Xr login.access 5 , .Xr login.conf 5 , .Xr environ 7 , .Xr pam 8 .Sh 歴史 .Nm login ユーティリティは .At v6 から登場しました。 Index: head/ja_JP.eucJP/man/man1/su.1 =================================================================== --- head/ja_JP.eucJP/man/man1/su.1 (revision 22766) +++ head/ja_JP.eucJP/man/man1/su.1 (revision 22767) @@ -1,233 +1,229 @@ .\" Copyright (c) 1988, 1990, 1993, 1994 .\" The Regents of the University of California. 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. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. .\" .\" @(#)su.1 8.2 (Berkeley) 4/18/94 -.\" %FreeBSD: src/usr.bin/su/su.1,v 1.33 2004/07/03 00:24:44 ru Exp % +.\" %FreeBSD: src/usr.bin/su/su.1,v 1.33.2.1 2004/10/15 22:31:56 simon Exp % .\" $FreeBSD$ .\" -.Dd September 28, 2003 +.Dd October 3, 2004 .Dt SU 1 .Os .Sh 名称 .Nm su .Nd 一時的に他のユーザになりかわる .Sh 書式 .Nm .Op Fl .Op Fl flms .Op Fl c Ar class .Op Ar login Op Ar args .Sh 解説 .Nm ユーティリティは PAM 経由で適切なユーザ資格を要求し、 そのユーザ ID に切り替えます (デフォルトユーザはスーパユーザです)。 その後シェルが実行されます。 .Pp すべてのポリシの設定には PAM が使用されます。 .Pp デフォルトでは、 .Ev USER , .Ev HOME , .Ev SHELL 以外の環境変数は引き継がれます。 .Ev HOME と .Ev SHELL はターゲットとなるログインのデフォルト値になります。 .Ev USER は、ターゲットログインのユーザ ID が 0 以外であれば、 ターゲットログインのものがセットされます。 0 の場合は変更されません。 実行されるシェルはターゲットログインのログインシェルです。 これは .Nm の伝統的なふるまいです。 オリジナルユーザのログインクラス .Ns ( Xr login.conf 5 参照) の資源制約とセッション優先度も通常保たれます。 例外はターゲットログインがユーザ ID 0 の場合です。 .Pp オプションとしては、以下のものがあります: .Bl -tag -width Ds .It Fl f シェルとして .Xr csh 1 が実行される場合、 .Dq Pa .cshrc ファイルを読み込みません。 .It Fl l 通常にログインした場合と同様になるように環境変数が設定されます。 すなわち、環境変数は .Ev HOME , .Ev SHELL , .Ev PATH , .Ev TERM , .Ev USER 以外は捨てられます。 .Ev HOME と .Ev SHELL は上記のように変更されます。 .Ev USER はターゲットログインの値になります。 .Ev PATH は .Dq Pa /bin:/usr/bin になります。 .Ev TERM は、あなたの現在の環境変数の値になります。 ターゲットログインのクラスにより、 ログインクラスケーパビリティデータベースに基づき、 環境変数が設定もしくは変更されることがあります。 実行されるシェルはターゲット ログインのログインシェルになり、 ターゲットログインのホームディレクトリに移動します。 資源制約とセッション優先度は、 ターゲットアカウントのログインクラスのものに変更されます。 .It Fl (文字無し) .Fl l と同じです。 .It Fl m 環境変数は変化しません。 実行されるシェルは自分のログインシェルで、ディレクトリの移動も行われません。 セキュリティの用心として、もしターゲットユーザのシェルが 非標準シェル .Ns ( Xr getusershell 3 で定義される) であり、かつ、呼出側の実ユーザ ID が 0 でなければ、 .Nm は失敗します。 .It Fl s ユーザの資格の設定の一環として、 MAC ラベルをユーザのデフォルトラベルへ設定します。 起動したプロセスの MAC ラベルが、 ユーザのデフォルト MAC ラベルへ遷移するには不十分である場合、 MAC ラベルの設定は失敗するかもしれません。 ラベルの設定ができない場合、 .Nm は失敗します。 .It Fl c Ar class 指定されたログインクラスの設定を使用します。 スーパユーザのみが使用を許されます。 .El .Pp .Fl l (または .Fl ) と .Fl m は、同時に指定することはできません。最後に指定したものが優先されます。 .Pp オプションの .Ar args がコマンドラインに指定されると、 それらはターゲットログインのログインシェルに引き渡されます。 ターゲットログイン名より前のコマンドライン引数はすべて .Nm 自身によって処理され、 ターゲットログイン名より後のコマンドライン引数はすべて ログインシェルに渡されることに注意してください。 .Pp デフォルトでは (設定がされていなければ) スーパユーザのプロンプトは .Dq Sy \&# に設定されます。 .Sh 関連ファイル -.Bl -tag -width /etc/pam.conf -compact -.It Pa /etc/pam.conf +.Bl -tag -width ".Pa /etc/pam.d/su" -compact +.It Pa /etc/pam.d/su .Nm -は PAM サポート付きで設定されています。 -.Pa /etc/pam.conf -エントリをサービス名 -.Dq su -で使用します。 +の PAM 設定ファイル .El .Sh 関連項目 .Xr csh 1 , .Xr sh 1 , .Xr group 5 , .Xr login.conf 5 , .Xr passwd 5 , .Xr environ 7 , .Xr pam 8 .Sh 環境変数 .Nm で利用される環境変数は以下の通りです: .Bl -tag -width HOME .It Ev HOME 上記で示した書き換えがない限り、 実ユーザ ID のデフォルトのホームディレクトリです。 .It Ev PATH 上記で示した書き換えがない限り、実ユーザ ID のデフォルトのサーチパスで す。 .It Ev TERM なり代わる人が所有している端末のターミナルタイプです。 .It Ev USER ユーザ ID が 0 (root) 以外の場合は、ユーザ ID は常に .Nm 後の effective ID (ターゲットとなるユーザ ID) です。 .El .Sh 使用例 .Bl -tag -width 5n -compact .It Li "su man -c catman" コマンド .Li catman をユーザ .Li man で実行します。 あなたの実 UID が 0 でない場合は、man のパスワードを尋ねられます。 .It Li "su man -c 'catman /usr/share/man /usr/local/man /usr/X11R6/man'" 上と同様ですが、コマンドが複数の語から構成されています。 .Fl c オプションをシェルに渡すためにクォートしています (ほとんどのシェルでは .Fl c への引数が単一語であると期待します)。 .It Li "su -c staff man -c 'catman /usr/share/man /usr/local/man /usr/X11R6/man'" 上と同様ですが、ログインクラス .Dq staff の資源制限にてターゲットコマンドを実行します。 注: この例では、最初の .Fl c オプションは .Nm に適用され、2 番目のものは起動されるシェルの引数となります。 .It Li "su -l foo" ユーザ foo のログインをシミュレートします。 .It Li "su - foo" 上と同じです。 .It Li "su -" rootのログインをシミュレートします。 .El .Sh 歴史 .Nm コマンドは .At v1 から登場しました。 Index: head/ja_JP.eucJP/man/man5/make.conf.5 =================================================================== --- head/ja_JP.eucJP/man/man5/make.conf.5 (revision 22766) +++ head/ja_JP.eucJP/man/man5/make.conf.5 (revision 22767) @@ -1,767 +1,818 @@ .\" Copyright (c) 2000 .\" Mike W. Meyer .\" .\" 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. .\" .\" 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/man5/make.conf.5,v 1.89.2.1 2004/08/22 14:19:52 des Exp % +.\" %FreeBSD: src/share/man/man5/make.conf.5,v 1.89.2.4 2004/10/09 18:38:58 dougb Exp % .\" .\" $FreeBSD$ .\" -.Dd August 19, 2004 +.Dd October 5, 2004 .Dt MAKE.CONF 5 .Os .Sh 名称 .Nm make.conf .Nd システムビルド情報 .Sh 解説 .Nm ファイルには .Fx のソースや ports アプリケーションの制御に関する設定が含まれています。 通常 .Nm ファイルは、システム管理者が、 これらの値をデフォルトから変更したい場合に作成します。 .Pp .Nm の用途は、コマンド実行やコンパイル動作を直接行うことではなく、 .Pa /usr/src , .Pa /usr/ports , .Pa /usr/doc などにある様々な makefile にインクルードされることです。 そのような makefile では、内部の動作が .Nm の与える条件によって変化するようになっているのです。 .Pp .Pa /etc/make.conf ファイルはそれぞれ適切な .Pa Makefile からインクルードされます。 各々の Makefile の中では、 利用可能なすべてのオプションに対し、デフォルトの設定が与えられています。 .Pa /etc/make.conf で指定する必要があるオプションは、 システム管理者がデフォルトから変更したいと思ったものだけです。 .Pp ビルドの手続きは、大きく 4 つの領域に分けられます。 world、カーネル、ドキュメント、ports です。 .Nm で設定された変数はこれらの領域の 1 つ、2 つ、あるいは全てに適用されます。 変数は、特定のビルドに対して .Xr make 1 の .Fl D オプションを用いて指定することもできます。 .Pp 以下のリストでは、それぞれ指定したビルドの途中で用いることのできる 各変数の名前と簡単な説明を記述します。 .Vt bool と指定されている変数では、その値は意味を持ちません。 変数が設定されていれば (たとえ値が .Dq Li FALSE や .Dq Li NO でも)、変数が設定されているものとして扱われます。 .Pp 次のリストは、すべてのビルド (あるいはビルド以外の目的で使われる .Pa Makefile ) で用いられる変数の名前と簡単な説明です。 .Bl -tag -width Ar .It Va ALWAYS_CHECK_MAKE .Pq Vt bool ソースツリー (通常は .Pa /usr/src ) のトップレベル makefile に対し、 .Xr make 1 が最新であるか常に確認するよう指示します。 通常これは、古いバージョンの .Fx からのアップグレードを扱えるようにするために、 world および buildworld ターゲットに対してのみ実行されます。 .It Va CFLAGS .Pq Vt str C のコードをコンパイルするときのコンパイラの設定を制御します。 .Fl O と .Fl O2 以外の最適化レベルはサポートされていません。 .Va BDECFLAGS は、 .An "Bruce Evans" Aq bde@FreeBSD.org が開発や変更のテスト用に勧めている .Xr gcc 1 設定です。 これは、設定すれば、以下のように使用可能です。 .Pp .Bd -literal -offset indent CFLAGS+=${BDECFLAGS} .Ed .It Va CPUTYPE .Pq Vt str 生成コードが対象とするプロセッサを制御します。 特別なコード (現在のところ OpenSSL のみ) に対する プロセッサ固有の最適化を制御し、 .Va CFLAGS および .Va COPTFLAGS の値を変更して .Xr gcc 1 への適切な最適化ディレクティブを含むようにします。 .Va CFLAGS および .Va COPTFLAGS の自動設定は、それぞれ .Va NO_CPU_CFLAGS および .Va NO_CPU_COPTFLAGS で上書きできます。 認識される .Va CPUTYPE オプションについては、 .Pa /usr/share/examples/etc/make.conf を参照してください。 .It Va NO_CPU_CFLAGS .Pq Vt str この変数を設定すると、コンパイル時に自動的に CPU 固有コンパイラフラグが .Va CFLAGS へ追加されることを妨げます。 .It Va NO_CPU_COPTFLAGS .Pq Vt str この変数を設定すると、コンパイル時に自動的に CPU 固有コンパイラフラグが .Va COPTFLAGS へ追加されることを妨げます。 .It Va CVS_UPDATE .Pq Vt bool .Dq Li "make update" で ports を更新するときに .Xr cvs 1 を用いる場合、設定します。 .It Va CXXFLAGS .Pq Vt str C++ のコードをコンパイルするときのコンパイラの設定を制御します。 .Va CXXFLAGS は最初は .Va CFLAGS の値に設定されます。 この .Va CXXFLAGS の値に追加を行いたい場合は、 .Dq Li = ではなく .Dq Li += を用いてください。 .It Va INSTALL .Pq Vt str デフォルトのインストールコマンドです。 ターゲットと異なるか存在しないファイルのみをインストールする場合、 次の例を用いてください。 .Bd -literal -offset indent INSTALL="install -C" .Ed .Pa ( /usr/share/mk にあるものを含めて) makefile によっては、 与えられたインストールコマンドに対して 固定のオプションを与えてしまうものがあることに注意してください。 .It Va LOCAL_DIRS .Pq Vt str この変数には .Pa /usr/src で make を行うときに入るべきディレクトリをすべてリストします。 .It Va MAKE_SHELL .Pq Vt str .Xr make 1 が makefile 中のコマンドスクリプトを処理するために 内部的に使用するシェルを制御します。 .Xr sh 1 , .Xr ksh 1 , .Xr csh 1 すべてがサポートされています。 .Pp .Dl "MAKE_SHELL?=sh" .It Va MTREE_FOLLOWS_SYMLINKS .Pq Vt str .Xr mtree 8 にシンボリックリンクを追跡させたい場合は、これを .Dq Fl L に設定します。 .It Va NO_DOCUPDATE .Pq Vt bool .Dq Li "make update" で doc ツリーを更新させない場合これを設定します。 .It Va NO_PORTSUPDATE .Pq Vt bool .Dq Li "make update" で ports ツリーを更新させない場合これを設定します。 .It Va SUP_UPDATE .Pq Vt bool .Dq Li "make update" による ports の更新に .Xr cvsup 1 を使う場合これを設定します。 .It Va SUP .Pq Vt str .Dq Li "make update" で用いられる .Xr cvsup 1 コマンドの置き場所です。 .It Va SUPFLAGS .Pq Vt str .Dq Li "make update" を行うとき .Xr sup 1 に与えるフラグ。 デフォルトは .Op Fl g L Ar 2 です。 .It Va SUPHOST .Pq Vt str .Dq Li "make update" を行うときに用いる sup サーバのホスト名です。 .It Va SUPFILE .Pq Vt str .Dq Li "make update" を行うとき、最初に用いる .Ar supfile です。 デフォルトは .Pa /usr/share/examples/cvsup/standard\-supfile です。 .It Va SUPFILE1 .Pq Vt str .Dq Li "make update" を行うとき、二番目に用いる .Ar supfile です。 デフォルトは .Pa /usr/share/examples/cvsup/secure\-supfile です。 .It Va SUPFILE2 .Pq Vt str .Dq Li "make update" を行うとき、三番目に用いる .Ar supfile です。 デフォルトは .Pa /usr/share/examples/cvsup/secure\-supfile です。 .It Va PORTSSUPFILE .Pq Vt str .Dq Li "make update" を行うときの ports 用の .Ar supfile です。 デフォルトは .Pa /usr/share/examples/cvsup/ports\-supfile です。 .It Va DOCSUPFILE .Pq Vt str .Dq Li "make update" を行うときのドキュメント用の .Ar supfile です。 デフォルトは .Pa /usr/share/examples/cvsup/doc\-supfile です。 .El .Pp 次のリストは、カーネルのビルドで用いられる変数の名前と簡単な説明です。 .Bl -tag -width Ar .It Va BOOT_COMCONSOLE_PORT .Pq Vt str ブートブロックが、キーボード/ビデオカードの代わりにシリアルコンソールを 用いるよう設定された場合に、コンソールとして用いるポートアドレスです。 .It Va BOOT_COMCONSOLE_SPEED .Pq Vt int ブートブロックが、キーボード/ビデオカードの代わりにシリアルコンソールを 用いるよう設定された場合に、コンソールで用いるボーレートです。 .It Va BOOTWAIT .Pq Vt int カーネルがデフォルトカーネルのブートを開始する前に、 コンソールのキーが押されるのを待つ時間を制御します。 値はだいたいミリ秒単位となります。 ディスクからブートする前のキー入力の認識は BIOS が行うので、 これが 0 に設定されていた場合でも、 ユーザの選択したブートパラメータを与えることは可能です。 .It Va COPTFLAGS .Pq Vt str カーネルをコンパイルするときのコンパイラの設定を制御します。 .Op Fl O を越えた最適化レベル .Pq Op Fl O2 , No ...\& は、動作が保証されていません。 .It Va KERNCONF .Pq Vt str .Dq Li "${MAKE} buildkernel" によるビルドと .Dq Li "${MAKE} installkernel" によるインストールとで、どのカーネル設定を用いるかを制御します。 例えば .Bd -literal -offset indent KERNCONF=MINE DEBUG GENERIC OTHERMACHINE .Ed .Pp とすると、 .Pa MINE , DEBUG , GENERIC , OTHERMACHINE といった各設定ファイルに対応するカーネルをビルドし、 .Pa MINE に対応するカーネルをインストールします。 デフォルトは .Pa GENERIC です。 .It Va LOADER_TFTP_SUPPORT .Pq Vt bool buildkernel が影響するオプションではありませんが、他に良い場所がありません。 デフォルトでは .Xr pxeboot 8 ローダがカーネルを NFS 経由で取得します。 これを定義して .Pa /usr/src/sys/boot を再コンパイルすると、カーネルを TFTP 経由で取得するようになります。 これにより、 .Xr pxeboot 8 がカスタム BOOTP ディスクレスカーネルをロードし、サーバの .Pa / をマウントしますが、サーバのカーネルはロードしません。 .It Va MODULES_OVERRIDE .Pq Vt str モジュールすべてではなく一部をビルドしたい場合、 モジュールリストをここに設定します。 .It Va NO_KERNELCONFIG .Pq Vt bool .Dq Li "${MAKE} buildkernel" の際に .Xr config 8 を実行しない場合には、これを設定します。 .It Va NO_KERNELDEPEND .Pq Vt bool .Dq Li "${MAKE} buildkernel" の際に .Dq Li "${MAKE} depend" を実行しない場合には、これを設定します。 .It Va NO_MODULES .Pq Vt bool カーネルといっしょにモジュールをビルドしない場合に設定します。 .El .Pp 次のリストは、world のビルドで用いられる変数の名前と簡単な説明です。 .Bl -tag -width Ar .It Va COMPAT1X .Pq Vt bool .Fx 1 互換ライブラリをインストールする場合に設定します。 .It Va COMPAT20 .Pq Vt bool .Fx 2.0 互換ライブラリをインストールする場合に設定します。 .It Va COMPAT21 .Pq Vt bool .Fx 2.1 互換ライブラリをインストールする場合に設定します。 .It Va COMPAT22 .Pq Vt bool .Fx 2.2 互換ライブラリをインストールする場合に設定します。 .It Va COMPAT3X .Pq Vt bool .Fx 3 互換ライブラリをインストールする場合に設定します。 .It Va COMPAT4X .Pq Vt bool .Fx 4 互換ライブラリをインストールする場合に設定します。 .It Va MAKE_IDEA .Pq Vt bool IDEA 暗号化コードをビルドする場合に設定します。 このコードは米国やヨーロッパの多くの国々で特許が取得されています。 合法的に IDEA を使えるかどうか決めるのは .Em あなたの責任 です。 .It Va NO_DYNAMICROOT .Pq Vt bool .Pa /bin と .Pa /sbin を動的にリンクしたくない場合に設定します。 .It Va NO_KERBEROS .Pq Vt bool Kerberos 5 (KTH Heimdal) をビルドしたくない場合に設定します。 .It Va ENABLE_SUID_K5SU .Pq Vt bool ksu ユーティリティを使用したい場合に設定します。 設定しないと、本ユーティリティはユーザ ID 設定ビットが 設定されずにインストールされます。 .It Va ENABLE_SUID_NEWGRP .Pq Vt bool ユーザ ID 設定ビットを設定して .Xr newgrp 1 をインストールする場合に、これを設定します。 設定しないと、 .Xr newgrp 1 はユーザのグループを変更できません。 .It Va ENABLE_SUID_SSH .Pq Vt bool .Xr ssh 1 -をセットユーザ ID ビットをオンにしてインストールする場合に、これを設定します。 +をユーザ ID 設定ビットをオンにしてインストールする場合に、これを設定します。 .It Va MODULES_WITH_WORLD .Pq Vt bool カーネルと同時にではなく、 システムと同時にモジュールをビルドする場合に設定します。 .It Va NO_BLUETOOTH .Pq Vt bool Bluetooth 関連のカーネルモジュール、プログラム、ライブラリを ビルドしない場合に設定します。 .It Va NO_BOOT .Pq Vt bool ブートブロックとローダをビルドしない場合に設定します。 .It Va NO_CVS .Pq Vt bool CVS をビルドしない場合に設定します。 .It Va NO_CXX .Pq Vt bool .Xr g++ 1 および関連ライブラリをビルドしない場合に設定します。 -.It Va NO_BIND -.Pq Vt bool -BIND をビルドしない場合に設定します。 .It Va NO_FORTRAN .Pq Vt bool .Xr g77 1 と関連ライブラリをビルドしない場合に設定します。 .It Va NO_GDB .Pq Vt bool .Xr gdb 1 をビルドしない場合に設定します。 .It Va NO_I4B .Pq Vt bool isdn4bsd パッケージをビルドしない場合に設定します。 .It Va NO_IPFILTER .Pq Vt bool IP Filter パッケージをビルドしない場合に設定します。 .It Va NO_PF .Pq Vt bool PF ファイアウォールパッケージをビルドしない場合に設定します。 .It Va NO_AUTHPF .Pq Vt bool .Xr authpf 8 をビルドしない場合に設定します。 .It Va NO_TOOLCHAIN .Pq Vt bool プログラム開発に使用するプログラム、 すなわちコンパイラやデバッガ等をビルドしない場合に設定します。 .It Va NOINET6 .Pq Vt bool IPv6 ネットワークに関連するプログラムやライブラリを ビルドしない場合に設定します。 .It Va NOATM .Pq Vt bool ATM ネットワークに関連するプログラムやライブラリを ビルドしない場合に設定します。 .It Va NO_USB .Pq Vt bool .Xr usbd 8 および関連プログラムをビルドしない場合に設定します。 .It Va NO_LPR .Pq Vt bool .Xr lpr 1 と関連プログラムをビルドしない場合に設定します。 .It Va NO_ACPI .Pq Vt bool .Xr acpiconf 8 , .Xr acpidump 8 および関連プログラムをビルドしない場合に設定します。 .It Va NO_VINUM .Pq Vt bool .Xr vinum 8 と関連プログラムをビルドしない場合に設定します。 .It Va NO_MAILWRAPPER .Pq Vt bool MTA セレクタである .Xr mailwrapper 8 をビルドしない場合に設定します。 .It Va NOMAN マニュアルページをビルドしない場合に設定します。 .Pq Vt bool .It Va NO_OBJC .Pq Vt bool Objective C のサポートをビルドしない場合に設定します。 .It Va NO_OPENSSH .Pq Vt bool OpenSSH をビルドしない場合に設定します。 .It Va NO_OPENSSL .Pq Vt bool OpenSSL をビルドしない場合に設定します (同時に .Va NO_KERBEROS と .Va NO_OPENSSH も設定されたことになります)。 .It Va NO_SENDMAIL .Pq Vt bool .Xr sendmail 8 と関連プログラムをビルドしない場合に設定します。 .It Va NO_SHAREDOCS .Pq Vt bool .Bx 4.4 の古い文書をビルドしない場合に設定します。 .It Va NO_TCSH .Pq Vt bool .Pa /bin/csh (これは .Xr tcsh 1 です) をビルド・インストールしない場合に設定します。 .It Va NOCLEAN .Pq Vt bool .Dq Li "make buildworld" の途中で clean を行わない場合に設定します。 何をやっているかわからない人は設定すべきではありません。 .It Va NOCLEANDIR .Pq Vt bool .Dq Li "${MAKE} cleandir" の代わりに .Dq Li "${MAKE} clean" を実行する場合に設定します。 .It Va NOCRYPT .Pq Vt bool crypto コードを一切ビルドしない場合に設定します。 .It Va NOGAMES .Pq Vt bool ゲームをビルドしない場合に設定します。 .It Va NOINFO .Pq Vt bool .Xr info 5 各ファイルを作成・インストールしない場合に設定します。 .It Va NOLIBC_R .Pq Vt bool .Nm libc_r .Pf ( Nm libc のリエントラント版) をビルドしない場合に設定します。 .It Va NOLIBPTHREAD .Pq Vt bool .Nm libpthread (M:N スレッド) ライブラリをビルドしない場合に設定します。 .It Va NOLIBTHR .Pq Vt bool .Nm libthr (1:1 スレッド) ライブラリをビルドしない場合に設定します。 .It Va NOMANCOMPRESS .Pq Vt bool man ページのインストールの際に圧縮を行わない場合に設定します。 .It Va NOPROFILE .Pq Vt bool profile 版ライブラリをコンパイルしない場合に設定します。 .It Va NOSHARE .Pq Vt bool .Pa share サブディレクトリをビルドしない場合に設定します。 +.It Va NO_BIND +.Pq Vt bool +BIND をビルドしない場合に設定します。 +以下のどの *_BIND_* 変数が定義されていたとしても、 +BIND を一部分たりともビルドしません。 +.It Va NO_BIND_DNSSEC +.Pq Vt bool +DNSSEC 関連バイナリ +.Xr dnssec-keygen 8 , +.Xr dnssec-signzone 8 +のビルドおよびインストールをしない場合に設定します。 +.It Va NO_BIND_ETC +.Pq Vt bool +デフォルトのファイルを +.Pa /var/named/etc/namedb +へインストールしない場合に設定します。 +.It Va NO_BIND_LIBS_LWRES +.Pq Vt bool +軽量リゾルバライブラリを +.Pa /usr/lib +にインストールしない場合に設定します。 +しかし、ビルドシステムのみに使用されるライブラリは、 +必要に応じてビルドされます。 +.It Va NO_BIND_MTREE +.Pq Vt bool +.Xr mtree 8 +を使用して +.Pa /var/named +以下に chroot ディレクトリ構造を作成せず、さらに +.Pa /etc/namedb +のシンボリックリンクを chroot 環境に作成しない場合に設定します。 +一般的には、このオプションは +.Vt NO_BIND_ETC +とともに使用されるべきです。 +.It Va NO_BIND_NAMED +.Pq Vt bool +.Xr named 8 , +.Xr named.reload 8 , +.Xr named-checkconf 8 , +.Xr named-checkzone 8 , +.Xr rndc 8 , +.Xr rndc-confgen 8 +のビルドおよびインストールをしない場合に設定します。 +.It Va NO_BIND_UTILS +.Pq Vt bool +BIND のユーザランドユーティリティ +.Xr dig 1 , +.Xr host 1 , +.Xr nslookup 1 , +.Xr nsupdate 8 +のビルドおよびインストールをしない場合に設定します。 +.It Va WITH_BIND_LIBS +.Pq Vt bool +BIND のライブラリとインクルードファイルをインストールする場合に設定します。 .It Va PPP_NOSUID .Pq Vt bool .Xr ppp 8 を suid root プログラムとしてはインストールしない場合に設定します。 .It Va SENDMAIL_MC .Pq Vt str インストール時に用いるデフォルトの .Xr m4 1 設定ファイルです。 この値には .Pa .mc ファイルのフルパスを与えます。 例えば .Pa /etc/mail/myconfig.mc です。 make install すると、既存の .Pa /etc/mail/sendmail.cf を上書きしてしまうので、注意して使ってください。 .Va SENDMAIL_CF はもう推奨されなくなりました。 .It Va SENDMAIL_SUBMIT_MC .Pq Vt str インストール時に用いるメール提出用デフォルト .Xr m4 1 設定ファイルです。 この値には .Pa .mc ファイルのフルパスを与えます。 例えば .Pa /etc/mail/mysubmit.mc です。 インストールによって既存の .Pa /etc/mail/submit.cf が上書きされてしまいますので、注意して使用してください。 .It Va SENDMAIL_ADDITIONAL_MC .Pq Vt str ビルド時に .Pa .cf ファイルに変換される追加分の .Pa .mc ファイル (複数指定可) です。 値には、これらの .Pa .mc ファイルへのフルパスを与えます。 例えば .Pa /etc/mail/foo.mc .Pa /etc/mail/bar.mc など。 .It Va SENDMAIL_CF_DIR .Pq Vt str .Pa .mc ファイルから .Pa .cf ファイルをビルドするために使用する .Xr m4 1 設定ファイルのデフォルトの場所を オーバライドします。 .It Va SENDMAIL_M4_FLAGS .Pq Vt str .Pa .mc ファイルから .Pa .cf ファイルを作成するときに .Xr m4 1 に渡されるフラグ。 .It Va SENDMAIL_CFLAGS .Pq Vt str .Xr sendmail 8 をビルドするときにコンパイルコマンドに渡すフラグです。 .Va SENDMAIL_* 各フラグを用いれば、SASL サポートをその設定と共に指定できます。 例えば次のようにします。 .Bd -literal -offset indent SENDMAIL_CFLAGS=-I/usr/local/include -DSASL SENDMAIL_LDFLAGS=-L/usr/local/lib SENDMAIL_LDADD=-lsasl .Ed .It Va SENDMAIL_LDFLAGS .Pq Vt str .Xr sendmail 8 をビルドするときに .Xr ld 1 コマンドに渡すフラグです。 .It Va SENDMAIL_LDADD .Pq Vt str .Xr sendmail 8 をビルドするときに .Xr ld 1 コマンドの末尾に追加するフラグです。 .It Va SENDMAIL_DPADD .Pq Vt str .Xr sendmail 8 をビルドするときに追加する依存関係です。 .It Va SENDMAIL_SET_USER_ID .Pq Vt bool 設定すると、 .Xr sendmail 8 をグループ ID 設定ではなく、 root にユーザ ID 設定したバイナリとしてインストールし、 .Pa /etc/mail/submit.{cf,mc} をインストールしません。 このフラグの使用は推奨できません。 可能であれば、 .Pa /etc/mail/README に書かれている代りの方法を採用すべきです。 .It Va SENDMAIL_MAP_PERMS .Pq Vt str このモードのエイリアスおよびマップのデータベースファイルが、 .Pa /etc/mail/Makefile を使用して作成されます。 デフォルト値は 0640 です。 .It Va TOP_TABLE_SIZE .Pq Vt int .Xr top 1 は、ユーザ名用にハッシュ表を使用します。 ハッシュの大きさはローカルユーザ数に合うように調整可能です。 テーブルの大きさは、 .Pa /etc/passwd の行数の約 2 倍の素数であるべきです。 デフォルト数は 20011 です。 .It Va WANT_FORCE_OPTIMIZATION_DOWNGRADE .Pq Vt int 高い最適化レベルを強制的に低くするように、システムのコンパイラをビルドします。 .Xr gcc 1 .Fl O2 以上の高い最適化レベルは、しばしば既知の最適化バグを引き起こすことが 知られています \(em Alpha プラットフォームでは、さらにひどいです。 ここで割り当てられた値が、最も高い最適化レベルの値として使用されます。 .El .Pp 次のリストは、ドキュメントのビルドで用いられる変数の名前と簡単な説明です。 .Bl -tag -width Ar .It Va DISTDIR .Pq Vt str distfiles が保存されている場所です。 通常これは .Va PORTSDIR の .Pa distfiles です。 .It Va DOC_LANG .Pq Vt str ビルド・インストール対象の言語とエンコーディングのリストです。 .It Va PRINTERDEVICE .Pq Vt str システム文書のデフォルトのフォーマットです。 これはプリンタに依存します。 単純なプリンタなら .Dq Li ascii を設定します。 PostScript プリンタやグラフィックスプリンタ + ghostscript フィルタなら .Dq Li ps を設定します。 両方設定することもできます。 .El .Sh 関連ファイル .Bl -tag -width ".Pa /usr/share/examples/etc/make.conf" -compact .It Pa /etc/make.conf .It Pa /usr/doc/Makefile .It Pa /usr/share/examples/etc/make.conf .It Pa /usr/src/Makefile .It Pa /usr/src/Makefile.inc1 .El .Sh 関連項目 .Xr gcc 1 , .Xr install 1 , .Xr make 1 , .Xr ports 7 , .Xr lpd 8 , .Xr sendmail 8 .Sh 歴史 .Nm ファイルは .Fx 4.0 以前のいつかに登場しました。 .Sh 作者 このマニュアルページは .An "Mike W. Meyer" Aq mwm@mired.org が書きました。 .Sh バグ このマニュアルページは現在の .Nm で利用できるオプションに比べると、古くなることが時々あるかもしれません。 現在利用できる最新のオプションについては、 .Pa /usr/share/examples/etc/make.conf ファイルを調べてください。 .Sh 警告 .Ev MAKEOBJDIRPREFIX と .Ev MAKEOBJDIR は環境変数であり、 .Nm 中ではなく、make の環境の中に設定すべきであることに注意してください。 Index: head/ja_JP.eucJP/man/man5/rc.conf.5 =================================================================== --- head/ja_JP.eucJP/man/man5/rc.conf.5 (revision 22766) +++ head/ja_JP.eucJP/man/man5/rc.conf.5 (revision 22767) @@ -1,2989 +1,2982 @@ .\" Copyright (c) 1995 .\" Jordan K. Hubbard .\" .\" 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. .\" .\" 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/man5/rc.conf.5,v 1.221 2004/07/18 18:01:48 simon Exp % +.\" %FreeBSD: src/share/man/man5/rc.conf.5,v 1.221.2.4 2004/10/16 08:13:19 pjd Exp % .\" .\" $FreeBSD$ .\" -.Dd April 25, 2004 +.Dd September 29, 2004 .Dt RC.CONF 5 .Os .Sh 名称 .Nm rc.conf .Nd システム設定情報 .Sh 解説 .Nm ファイルは、ローカルホスト名、存在しないものも含め任意の ネットワークインタフェースに関する設定の詳細、 どのサービスをシステムの初期起動時に立ち上げるべきかを 記述する情報を含んでいます。 一般に .Nm ファイルは、新規にインストールする際に、 システムインストールユーティリティ .Xr sysinstall 8 によって初期化されます。 .Pp .Nm の目的は、 直接コマンドを実行したりシステム起動操作を行うことではなく、 .Pa /etc の中のさまざまな汎用起動スクリプトによりインクルードされ、 .Nm の中の設定に基づき、それらの起動スクリプト内部の動作を条件分岐させる ことにあります。 .Pp .Pa /etc/rc.conf ファイルは、 使用可能なオプション全てのデフォルト設定を指定するファイル .Pa /etc/defaults/rc.conf からインクルードされます。 オプションを .Pa /etc/rc.conf に指定する必要があるのは、 システム管理者がこれらのデフォルトを上書きしたい場合だけです。 ファイル .Pa /etc/rc.conf.local は、 .Pa /etc/rc.conf の設定を上書きするために使用されます。 これは歴史的事情のためです。 後述の .Va rc_conf_files を参照してください。 .Pp 次に示すリストは、 .Nm ファイル中で設定可能な各変数について、 その名前と簡単な解説をしたものです。 .Bl -tag -width indent-two .It Va rc_debug .Pq Vt ブール値 .Dq Li YES にすると、rc スクリプトからのデバッグメッセージ出力を有効にします。 新規スクリプトの編集時や組み込み時に誤りを診断するために、 この変数が有用かもしれません。 この手続きは大量の出力を端末と .Xr syslog 3 に生成しますので、注意してください。 .It Va rc_info .Pq Vt ブール値 .Dq Li NO にすると、rc スクリプトからの情報メッセージを無効にします。 情報メッセージは、警告やエラーとするほど深刻ではない状態のときに表示されます。 .It Va swapfile .Pq Vt 文字列 .Dq Li NO にすると スワップファイルはインストールされません。 .Dq Li NO 以外の場合、その値は追加スワップ領域に利用するファイルの フルパス名として用いられます。 .It Va apm_enable .Pq Vt ブール値 .Dq Li YES に設定すると .Xr apm 8 コマンドでの自動電源管理 (Automatic Power Management) のサポートを有効に します。 .It Va apmd_enable .Pq Vt ブール値 .Xr apmd 8 を実行し、ユーザランドから APM イベントを扱います。 APM サポートも有効にします。 .It Va apmd_flags .Pq Vt 文字列 .Va apmd_enable が .Dq Li YES の場合、これらは .Xr apmd 8 デーモンに渡すフラグになります。 .It Va devd_enable .Pq Vt ブール値 .Xr devd 8 を実行し、カーネルからのデバイス追加、デバイス削除、未知のイベントを扱います。 .It Va kldxref_enable .Pq Vt ブール値 デフォルトで .Dq Li NO です。 .Dq Li YES に設定すると、ブート時に、 .Pa linker.hints ファイルを .Xr kldxref 8 で自動的に再構築します。 .It Va kldxref_clobber .Pq Vt ブール値 デフォルトで .Dq Li NO です。 .Va kldxref_enable が真の場合、これを .Dq Li YES にすると、ブート時に既存の .Pa linker.hints ファイルを上書きします。 そうでない場合、 .Pa linker.hints ファイルが存在しない場合のみ生成されます。 .It Va kldxref_module_path .Pq Vt 文字列 デフォルトで空です。 .Xr kld 4 モジュールを含むパスからなる、セミコロン .Pq Ql \&; で区切られたリストです。 空の場合、 .Va kern.module_path .Xr sysctl 8 の内容が使用されます。 .It Va pccard_enable .Pq Vt ブール値 .Dq Li YES に設定すると、起動時に PCCARD のサポートを有効にします。 .It Va pccard_mem .Pq Vt 文字列 PCCARD コントローラメモリアドレスを設定します。 .Dq Li DEFAULT とするとデフォルト値になります。 .It Va pccard_ifconfig .Pq Vt 文字列 ブート時またはカード挿入時に .Xr ifconfig 8 に渡される引数のリストです (例えば、 固定アドレスの場合は .Dq Cm inet Li 192.168.1.1 Cm netmask Li 255.255.255.0 などですし、 DHCP クライアントの場合は .Dq Li DHCP です)。 .It Va pccard_beep .Pq Vt 整数 0 である場合、PCCARD コントローラを静寂モードにします。 1 である場合、ビープモードにします。 2 である場合、メロディモードにします。 .It Va pccard_conf .Pq Vt 文字列 .Xr pccardd 8 デーモンの設定ファイルのパスです (例えば .Pa /etc/pccard.conf.sample です)。 .It Va pccardd_flags .Pq Vt 文字列 .Va pccard_enable が .Dq Li YES の場合、これらは .Xr pccardd 8 デーモンに渡すフラグになります。 .It Va pccard_ether_delay .Pq Vt 文字列 .Pa /etc/pccard_ether スクリプト中で .Xr dhclient 8 を起動するまでの遅延時間を設定します。 デフォルトは 5 秒です。 これは、 .Xr ed 4 ベースの新しいカードを使用した時にシステムがハングしてしまうという .Xr ed 4 ドライバのバグを回避するためのものです。 .It Va removable_interfaces .Pq Vt 文字列 .Pa /etc/pccard_ether でサポートすべき、取り外し可能なネットワークインタフェースのリストです。 .It Va tmpmfs .Pa /tmp メモリファイルシステムの生成を制御します。 .Dq Li YES を設定した場合、常時生成されます。 .Dq Li NO を設定した場合、決して生成されません。 これら以外の値を設定した場合、 .Pa /tmp が書き込み可能でない場合に、メモリファイルシステムが生成されます。 .It Va tmpsize 生成された .Pa /tmp メモリファイルシステムの大きさを制御します。 .It Va varmfs .Pa /var メモリファイルシステムの生成を制御します。 .Dq Li YES を設定した場合、常時生成されます。 .Dq Li NO を設定した場合、決して設定されません。 これら以外の値を設定した場合、 .Pa /var が書き込み可能でない場合に、メモリファイルシステムが生成されます。 .It Va varsize .Pa /var メモリファイルシステムの大きさを制御します。 .It Va populate_var .Pa /var ファイルシステムへの自動ファイル埋め込み .Pq automatic population を制御します。 .Dq Li YES を設定した場合、常時ファイル埋め込みが行われます。 .Dq Li NO を設定した場合、決して埋め込みは行われません。 これら以外の値を設定した場合、 .Pa /tmp が書き込み可能でない場合に、メモリファイルシステムが生成されます。 この過程では、 通常のシステムで .Pa /usr がマウントされる前に、 .Pa /usr にあるコマンドのうちいくつかへのアクセスが必要です。 .It Va local_startup .Pq Vt 文字列 起動スクリプトファイルを検索するディレクトリのリストです。 .It Va script_name_sep .Pq Vt 文字列 起動スクリプトファイルのリストを各々のファイル名に分割するために 使用するフィールドセパレータです。 デフォルトは空白です。 名前に空白を含む起動スクリプトを持っていない限り、変更不要です。 .It Va hostname .Pq Vt 文字列 ネットワーク上でのホストの完全な形のドメイン名 (FQDN; The Fully Qualified Domain Name) です。 ネットワークに接続されていない場合でも、 この変数は確実に何か意味のあるものに設定すべきです。 ホスト名を DHCP を介して設定するために .Xr dhclient 8 を使用している場合、この変数は空文字列に設定すべきです。 .It Va ipv6_enable .Pq Vt ブール値 IPv6 ネットワークサポートを有効にします。 このためには、カーネルが .Cd "options INET6" 付きでコンパイルされていることが必要です。 .It Va nisdomainname .Pq Vt 文字列 ホストの NIS ドメイン名。 NIS を使用しないときは .Dq Li NO とします。 .It Va dhclient_program .Pq Vt 文字列 DHCP クライアントプログラムのパスです (ISC DHCP クライアントの .Pa /sbin/dhclient がデフォルトです)。 .It Va dhclient_flags .Pq Vt 文字列 DHCP クライアントプログラムに渡す追加のフラグです。 ISC DHCP クライアント用に利用可能なコマンドラインオプションについては、 .Xr dhclient 8 マニュアルページを参照してください。 .It Va background_dhclient .Pq Vt ブール値 .Dq Li YES に設定すると、DHCP クライアントをバックグラウンドで起動します。 ネットワークが動作していることに依存するアプリケーションで問題と なるかもしれませんが、多くの場合は起動が早くなります。 .It Va firewall_enable .Pq Vt ブール値 ファイアウォール規則を起動時にロードするには、 .Dq Li YES に設定します。 カーネルが .Cd "options IPFIREWALL" 付きで作られなかった場合、 .Pa ipfw.ko カーネルモジュールがロードされます。 .Va ipfilter_enable も参照してください。 .It Va ipv6_firewall_enable .Pq Vt ブール値 IPv6 の .Va firewall_enable です。 IPv6 ファイアウォール規則を起動時にロードするには、 .Dq Li YES に設定します。 カーネルが .Cd "options IPV6FIREWALL" 付きで作られなかった場合、 .Pa ip6fw.ko カーネルモジュールがロードされます。 .It Va firewall_script .Pq Vt 文字列 この変数は、実行するファイアウォールスクリプトのフルパスを指定します。 デフォルトは .Pa /etc/rc.firewall です。 .It Va ipv6_firewall_script .Pq Vt 文字列 IPv6 の .Va firewall_script です。 .It Va firewall_type .Pq Vt 文字列 .Pa /etc/rc.firewall 中にある選択肢から選んだファイアウォールタイプもしくは ローカルファイアウォール規則の組を含むファイル名をつけます。 .Pa /etc/rc.firewall において有効なタイプは以下のものです。 .Pp .Bl -tag -width ".Li simple" -compact .It Li open 無制限の IP アクセス; .It Li closed .Dq Li lo0 経由を除く全ての IP サービスを禁止 .It Li client ワークステーション向けの基本的な保護 .It Li simple LAN 向けの基本的な保護 .El .Pp ファイル名が指定される場合にはフルパス名でなければなりません。 .It Va ipv6_firewall_type .Pq Vt 文字列 IPv6 の .Va firewall_type です。 .It Va firewall_quiet .Pq Vt ブール値 .Dq Li YES に設定すると、起動時にコンソール上でファイアウォール規則の表示を行いません。 .It Va ipv6_firewall_quiet .Pq Vt ブール値 IPv6 の .Va firewall_quiet です。 .It Va firewall_logging .Pq Vt ブール値 .Dq Li YES に設定すると、ファイアウォールのイベントロギングを有効にします。 .Dv IPFIREWALL_VERBOSE カーネルオプションと等価です。 .It Va ipv6_firewall_logging .Pq Vt ブール値 IPv6 の .Va firewall_logging です。 .It Va firewall_flags .Pq Vt 文字列 .Va firewall_type でファイル名を指定する場合、 .Xr ipfw 8 に渡されるフラグです。 .It Va ipv6_firewall_flags .Pq Vt 文字列 IPv6 の .Va firewall_flags です。 .It Va natd_program .Pq Vt 文字列 .Xr natd 8 のパス。 .It Va natd_enable .Pq Vt ブール値 .Dq Li YES に設定すると、 .Xr natd 8 を有効にします。 .Va firewall_enable もまた .Dq Li YES に設定しておく必要があります。 また、 .Xr divert 4 ソケットがカーネルで有効にされている必要があります。 .It Va natd_interface .Pq Vt 文字列 .Xr natd 8 が実行されるパブリックインタフェースの名前です。 インタフェースの指定は、インタフェース名でも IP アドレスでもかまいません。 .It Va natd_flags .Pq Vt 文字列 追加の .Xr natd 8 フラグはここに記述する必要があります。 .Fl n または .Fl a のフラグは上記 .Va natd_interface とともに自動的に引数として追加されます。 .\" ----- ipfilter_enable setting -------------------------------- .It Va ipfilter_enable .Pq Vt ブール値 デフォルトは .Dq Li NO に設定されます。 .Dq Li YES に設定すると、 .Xr ipf 8 パケットフィルタリングを有効にします。 .Pp 典型的な用途では、 .Bd -literal ipfilter_enable="YES" ipnat_enable="YES" ipmon_enable="YES" ipfs_enable="YES" .Ed .Pp を .Pa /etc/rc.conf に記述し、 .Pa /etc/ipf.rules と .Pa /etc/ipnat.rules を適切に編集する必要があるでしょう。 .Pp .Va ipfilter_enable と .Va ipnat_enable とは別々に有効にできることに注意してください。 .Va ipmon_enable および .Va ipfs_enable を有効にするには .Va ipfilter_enable と .Va ipnat_enable の少なくともどちらか 1 つが有効になっている必要があります。 .Pp カーネル設定ファイル中に .Bd -literal options IPFILTER options IPFILTER_LOG options IPFILTER_DEFAULT_BLOCK .Ed .Pp を置くことも良い考えです。 .\" ----- ipfilter_program setting ------------------------------ .It Va ipfilter_program .Pq Vt 文字列 .Xr ipf 8 へのパスです (デフォルトは .Pa /sbin/ipf です)。 .\" ----- ipfilter_rules setting -------------------------------- .It Va ipfilter_rules .Pq Vt 文字列 デフォルトで .Pa /etc/ipf.rules に設定されます。 この変数は、フィルタルール定義ファイルの名前を含みます。 このファイルは、 .Xr ipf 8 コマンドが実行できるよう、読み取り可能であることが期待されます。 .\" ----- ipv6_ipfilter_rules setting --------------------------- .It Va ipv6_ipfilter_rules .Pq Vt 文字列 デフォルトは .Pa /etc/ipf6.rules に設定されます。 この変数には、IPv6 フィルタルール定義ファイルの名前を含みます。 このファイルは、 .Xr ipf 8 コマンドが実行できるよう、読み取り可能であることが期待されます。 .\" ----- ipfilter_flags setting -------------------------------- .It Va ipfilter_flags .Pq Vt 文字列 デフォルトは空文字列です。 この変数には、 .Xr ipf 8 プログラムに渡されるフラグが含まれます。 .\" ----- ipnat_enable setting ---------------------------------- .It Va ipnat_enable .Pq Vt ブール値 デフォルトで .Dq Li NO に設定されます。 .Dq Li YES に設定すると、 .Xr ipnat 1 ネットワークアドレス変換を有効にします。 詳細は .Va ipfilter_enable を参照してください。 .\" ----- ipnat_program setting --------------------------------- .It Va ipnat_program .Pq Vt 文字列 .Xr ipnat 1 へのパスです (デフォルトは .Pa /sbin/ipnat です)。 .\" ----- ipnat_rules setting ----------------------------------- .It Va ipnat_rules .Pq Vt 文字列 デフォルトで .Pa /etc/ipnat.rules に設定されます。 この変数は、ネットワークアドレス変換を定義するファイルの名前を含みます。 このファイルは、 .Xr ipnat 1 コマンドが実行できるよう、読み取り可能であることが期待されます。 .\" ----- ipnat_flags setting ----------------------------------- .It Va ipnat_flags .Pq Vt 文字列 デフォルトは空文字列です。 この変数には、 .Xr ipnat 1 プログラムへ渡されるフラグが含まれます。 .\" ----- ipmon_enable setting ---------------------------------- .It Va ipmon_enable .Pq Vt ブール値 デフォルトで .Dq Li NO に設定されます。 .Dq Li YES に設定すると、 .Xr ipmon 8 モニタリング ( .Xr ipf 8 と .Xr ipnat 1 のイベントのログ) を有効にします。 この変数を設定する場合、 .Va ipfilter_enable あるいは .Va ipnat_enable も設定することが必要です。 詳細は .Va ipfilter_enable を参照してください。 .\" ----- ipmon_program setting --------------------------------- .It Va ipmon_program .Pq Vt 文字列 .Xr ipmon 8 へのパスです (デフォルトは .Pa /sbin/ipmon です)。 .\" ----- ipmon_flags setting ----------------------------------- .It Va ipmon_flags .Pq Vt 文字列 デフォルトで .Dq Li -Ds に設定されます。 この変数は、 .Xr ipmon 8 プログラムに渡されるフラグを含みます。 他の典型的な例は .Dq Fl D Pa /var/log/ipflog であり、これは .Xr ipmon 8 に .Xr syslogd 8 をバイパスさせて、直接ファイルにログを書かせます。 このような場合、必ず .Pa /etc/newsyslog.conf を次のような感じで修正してください: .Bd -literal /var/log/ipflog 640 10 100 * Z /var/run/ipmon.pid .Ed .\" ----- ipfs_enable setting ----------------------------------- .It Va ipfs_enable .Pq Vt ブール値 デフォルトでは .Dq Li NO に設定されます。 この変数を .Dq Li YES に設定すると .Xr ipfs 8 が有効になり、シャットダウン時にフィルタおよび NAT 状態テーブルを 保存し、再起動時に読み込み直されるようになります。 この変数を設定するには .Va ipfilter_enable あるいは .Va ipnat_enable も .Dq Li YES に設定する必要があります。 詳細は .Va ipfilter_enable を参照してください。 .Va kern_securelevel を 3 に設定した場合、 .Va ipfs_enable は使用できなくなることに注意してください。 なぜなら、セキュアレベルを引き上げることでシャットダウン時に .Xr ipfs 8 が状態テーブルを保存できなくなるからです。 .\" ----- ipfs_program setting ---------------------------------- .It Va ipfs_program .Pq Vt 文字列 .Xr ipfs 8 へのパスです (デフォルトは .Pa /sbin/ipfs です)。 .\" ----- ipfs_flags setting ------------------------------------ .It Va ipfs_flags .Pq Vt 文字列 デフォルトは空文字列です。 この変数には、 .Xr ipfs 8 プログラムに渡されるフラグが含まれます。 .\" ----- end of added ipf hook --------------------------------- .It Va pf_enable .Pq Vt ブール値 デフォルトでは .Dq Li NO です。 この変数を .Dq Li YES と設定すると、 .Xr pf 4 パケットフィルタ機能が有効になります。 .Pp 通常、 .Pp .Dl pf_enable="YES" .Pp を .Pa /etc/rc.conf に置くだけでなく、 .Pa /etc/pf.conf を適切に編集することも必要になります。 .Pp -.Xr kld 4 -モジュールとして使用する場合、カーネル設定ファイルに、 -.Bd -literal -offset indent -options PFIL_HOOKS -options RANDOM_IP_ID -.Ed -.Pp -を入れることが必要です。 -.Pp .Dl "device pf" .Pp により、 .Xr pf 4 パケットフィルタ機能がカーネルに組み込まれます。 +設定しない場合、モジュールからロードされます。 .It Va pf_rules .Pq Vt 文字列 .Xr pf 4 ルールセット設定ファイルのパスです ( デフォルトは .Pa /etc/pf.conf です)。 .It Va pf_program .Pq Vt 文字列 .Xr pfctl 8 のパスです ( デフォルトは、 .Pa /sbin/pfctl です )。 .It Va pf_flags .Pq Vt 文字列 .Va pf_enable に .Dq Li YES を設定した場合、 これらのフラグが .Xr pfctl 8 プログラムがルールセットをロードするときに渡されます。 .It Va pflog_enable .Pq Vt ブール値 デフォルトでは .Dq Li NO です。 .Dq Li YES に設定すると、 .Xr pf 4 パケットフィルタからのパケットログを取る .Xr pflogd 8 を有効にします。 .It Va pflog_logfile .Pq Vt 文字列 .Va pflog_enable を .Dq Li YES に設定した場合、この変数は .Xr pflogd 8 がどこにログファイルを格納するかを制御します (デフォルトでは .Pa /var/log/pflog です)。 ログファイルのローテーション調整については、 .Pa /etc/newsyslog.conf を確認して下さい。 .It Va pflog_program .Pq Vt 文字列 .Xr pflogd 8 プログラムのパスです ( デフォルトは .Pa /sbin/pflogd です )。 .It Va pflog_flags .Pq Vt 文字列 デフォルトは空です。 この変数は .Xr pflogd 8 プログラムに渡す追加のオプションを含みます。 .It Va tcp_extensions .Pq Vt ブール値 デフォルトでは .Dq Li YES です。 .Dq Li NO に設定すると、 .\".Rs .%T "RFC 1323" .\".Re .\" .Rs/.Re でくくると、RFC 1323 の後ろに "." がついてしまうので、 .\" はずしました。(by metal) で述べられている ある TCP オプションを無効にします。 .Dq Li NO に設定すると、ネットワークコネクションが不規則にハングアップしたり する不具合や、 それに類する他の不具合を回避する助けとなるかもしれません。 ネットワークデバイスによっては、これらのオプションに関して うまく動作しないものがあることが知られています。 .It Va log_in_vain .Pq Vt 整数 デフォルトで 0 に設定されています。 .Xr sysctl 8 変数 .Va net.inet.tcp.log_in_vain と .Va net.inet.udp.log_in_vain が、 .Xr tcp 4 と .Xr udp 4 に記述されているように、指定された値に設定されます。 .It Va tcp_keepalive .Pq Vt ブール値 デフォルトで .Dq Li YES に設定されています。 通信相手がまだ立ち上がっていて到達可能であることを確認するために、 アイドル状態の TCP 接続を叩く機能ですが、 .Dq Li NO に設定すると、この機能を無効にします。 .It Va tcp_drop_synfin .Pq Vt ブール値 デフォルトで .Dq Li NO に設定されています。 .Dq Li YES に設定すると、 TCP フレームで SYN と FIN のフラグが共に設定されているものを、 カーネルが無視するようになります。 これにより、OS の正体をばらす指紋を残すことを防ぎますが、 正当なアプリケーションが動作しなくなるかもしれません。 .Dv TCP_DROP_SYNFIN オプション付きでカーネルを構築した場合のみ、 本オプションが使用可能です。 .It Va icmp_drop_redirect .Pq Vt ブール値 デフォルトで .Dq Li NO に設定されています。 .Dq Li YES に設定すると、 ICMP REDIRECT パケットをカーネルが無視するようになります。 更なる情報は .Xr icmp 4 を参照してください。 .It Va icmp_log_redirect .Pq Vt ブール値 デフォルトで .Dq Li NO に設定されています。 .Dq Li YES に設定すると、 ICMP REDIRECT パケットをカーネルが記録するようになります。 ログメッセージの速度制限はありませんので、 ネットワークに生じた問題の解決にのみ使用すべきです。 更なる情報は .Xr icmp 4 を参照してください。 .It Va icmp_bmcastecho .Pq Vt ブール値 .Dq Li YES に設定すると、 ブロードキャストまたはマルチキャストの ICMP ping パケットに 応答するようになります。 更なる情報は .Xr icmp 4 を参照してください。 .It Va ip_portrange_first .Pq Vt 整数 .Dq Li NO 以外に設定すると、デフォルトのポート範囲の最初のポートになります。 更なる情報は .Xr ip 4 を参照してください。 .It Va ip_portrange_last .Pq Vt 整数 .Dq Li NO 以外に設定すると、デフォルトのポート範囲の最後のポートになります。 更なる情報は .Xr ip 4 を参照してください。 .It Va network_interfaces .Pq Vt 文字列 このホスト上で設定するネットワークインタフェースのリストを 設定します。 たとえば、ループバックデバイス .Pq Li lo0 および .Xr ed 4 ドライバの NIC があるなら、 .Dq Li "lo0 ed0" に設定されるでしょう。 .Ar interface の各値に対して .Va ifconfig_ Ns Aq Ar interface という変数も存在すると仮定されます。 1 つのインタフェースに複数の IP アドレスを登録したい場合は、 ここに IP エイリアスのエントリを追加することも可能です。 対象とするインタフェースが .Li ed0 であると仮定すると、 .Bd -literal ifconfig_ed0_alias0="inet 127.0.0.253 netmask 0xffffffff" ifconfig_ed0_alias1="inet 127.0.0.254 netmask 0xffffffff" .Ed .Pp というようになります。 .Va ifconfig_ Ns Ao Ar interface Ac Ns Va _alias Ns Aq Ar n エントリが 1 つ見つかるごとに、 その内容が .Xr ifconfig 8 に渡されます。 最初にアクセスに失敗した時点で実行は中止されるので .Bd -literal ifconfig_ed0_alias0="inet 127.0.0.251 netmask 0xffffffff" ifconfig_ed0_alias1="inet 127.0.0.252 netmask 0xffffffff" ifconfig_ed0_alias2="inet 127.0.0.253 netmask 0xffffffff" ifconfig_ed0_alias4="inet 127.0.0.254 netmask 0xffffffff" .Ed .Pp のようにすると、alias4 は追加され .Em ない ことに注意してください。 これは alias3 エントリが存在しないことにより、 そこで検索が中止されるからです。 .Pp .Pa /etc/start_if. Ns Aq Ar interface ファイルが存在する場合、 .Va ifconfig_ Ns Aq Ar interface および .Va ifconfig_ Ns Ao Ar interface Ac Ns Va _alias Ns Aq Ar n の変数で指定されたインタフェース設定が実行される前に、 このファイルが .Xr sh 1 インタプリタにより実行されます。 .Pp .Va ifconfig_ Ns Aq Ar interface 変数を .Dq Li DHCP に設定することで、インタフェースを DHCP で立ち上げることが 可能です。 例えば .Li ed0 デバイスを DHCP で初期化するには、 次のような行を指定すればよいです: .Bd -literal ifconfig_ed0="DHCP" .Ed .It Va ipv6_network_interfaces .Pq Vt 文字列 IPv6 の .Va network_interfaces です。 設定すべき ifconfig 変数は .Va ifconfig_ Ns Aq Ar interface ではなく、 .Va ipv6_ifconfig_ Ns Aq Ar interface です。 エイリアスは .Va ipv6_ifconfig_ Ns Ao Ar interface Ac Ns Va _alias Ns Aq Ar n のように設定します。 .Va ipv6_prefix_ Ns Aq Ar interface も関係あります。 .Va ipv6_ifconfig_ Ns Aq Ar interface 設定を持たないインタフェースは、 .Va ipv6_gateway_enable が .Dq Li NO に設定されている場合には、 .Xr rtsol 8 で自動設定されます。 IPv6 ネットワークコードは .Pa /etc/start_if. Ns Aq Ar interface ファイルをサポートしないことに注意してください。 .It Va ipv6_default_interface .Pq Vt 文字列 .Dq Li NO 以外に設定すると、 これがスコープ対象のアドレスに対するデフォルト出力インタフェースになります。 現在のところ、これは IPv6 リンクローカルマルチキャストアドレスに 対してのみ働きます。 .It Va cloned_interfaces .Pq Vt 文字列 このホストに生成する、複製可能なネットワークインタフェースの リストを設定します。 .Va cloned_interfaces のエントリは、設定を行うため自動的に .Va network_interfaces に追加されます。 .It Va gif_interfaces .Pq Vt 文字列 このホストで設定する、 .Xr gif 4 トンネルインタフェースのリストを設定します。 .Ar interface の各値に対して、 .Va gifconfig_ Ns Aq Ar interface 変数が存在すると想定されます。 本変数の値を使用し、 .Xr ifconfig 8 の .Cm tunnel オプションの書式に従って、トンネルのリンク層を設定します。 さらに本オプションは、リストされたインタフェースの設定を試みる前に、 これらが .Xr ifconfig 8 の .Cm create オプションで作成されていることを保証します。 .It Va sppp_interfaces .Pq Vt 文字列 このホスト上で設定すべき .Xr sppp 4 インタフェースのリストに設定します。 各 .Ar interface に対して .Va spppconfig_ Ns Aq Ar interface 変数が存在するものと仮定されます。 各インタフェースは、普通の .Va ifconfig_ Ns Aq Ar interface 設定でも設定されます。 使用可能なオプションについての更なる情報は .Xr spppcontrol 8 を参照してください。 .It Va ppp_enable .Pq Vt ブール値 .Dq Li YES に設定すると、 .Xr ppp 8 デーモンを実行します。 .It Va ppp_mode .Pq Vt 文字列 .Xr ppp 8 デーモンを実行するモードです。 受け付けられるモードは .Dq Li auto , .Dq Li ddial , .Dq Li direct , .Dq Li dedicated のいずれかです。 完全な解説はマニュアルを参照してください。 .It Va ppp_nat .Pq Vt ブール値 .Dq Li YES に設定すると、ネットワークアドレス変換を有効にします。 .Va gateway_enable と共に使用することにより、 本ホストをネットワークアドレス変換ルータとして使用して、 プライベートネットワークアドレスのホストからの インターネットへのアクセスを可能にします。 .It Va ppp_profile .Pq Vt 文字列 .Pa /etc/ppp/ppp.conf から使用するプロファイル名です。 .It Va ppp_user .Pq Vt 文字列 このユーザ名の元で .Xr ppp 8 を起動します。 デフォルトでは .Xr ppp 8 は .Dq Li root が起動します。 .It Va rc_conf_files .Pq Vt 文字列 本オプションは、 .Pa /etc/defaults/rc.conf の設定を上書きするファイルのリストを指定するために使用されます。 ファイルは指定された順序に読み込まれますし、 また、ファイルへの完全なパスを含む必要があります。 デフォルトでは、指定されるファイルは .Pa /etc/rc.conf と .Pa /etc/rc.conf.local です。 .It Va gbde_autoattach_all .Pq Vt ブール値 .Dq Li YES に設定すると、 .Pa /etc/rc.d/gbde は .Pa /etc/fstab 中の .bde デバイスを自動的に初期化しようとします。 .It Va gbde_devices .Pq Vt 文字列 スクリプトがアタッチしようとするデバイスのリストもしくは .Dq Li AUTO です。 .It Va gbde_lockdir .Pq Vt 文字列 .Xr gbde 4 のロックファイルが置かれるディレクトリです。 デフォルトのロックファイルディレクトリは .Pa /etc です。 .Pp 個々の .Xr gbde 4 デバイスに対するロックファイルは、変数 .Va gbde_lock_ Ns Aq Ar device を設定することで上書きすることができます。 ここで .Ar device は、暗号化デバイスから .Dq Pa /dev/ と .Dq Pa .bde の部分を除いたものです。 .It Va gbde_attach_attempts .Pq Vt 整数 .Xr gbde 4 デバイスへのアタッチを試みる回数です。 つまり、ユーザにパスフレーズを尋ねる回数です。 デフォルトは 3 です。 .It Va gbde_swap_enable .Pq Vt ブール値 .Dq Li YES に設定すると、 .Pa /etc/fstab にリストされたすべての .bde スワップデバイスを ランダムな一回限りの鍵で初期化します。 カーネルダンプの復旧ができなくなることに注意してください。 .It Va fsck_y_enable .Pq Vt ブール値 .Dq Li YES に設定すると、 ファイルシステムの初期調整に失敗した場合、 .Xr fsck 8 を .Fl y フラグ付きで実行します。 .It Va background_fsck .Pq Vt ブール値 .Dq Li YES に設定すると、可能ならば、システムは .Xr fsck 8 をバックグラウンドで実行しようと試みます。 .It Va background_fsck_delay .Pq Vt 整数 この秒数だけスリープした後で、バックグラウンド .Xr fsck 8 を開始します。 デフォルトは 60 秒であり、X サーバ等の巨大なアプリケーションの起動が、 .Xr fsck 8 によるディスク I/O 占有の前となるようにします。 .It Va netfs_types .Pq Vt 文字列 ネットワークベースのファイルシステムタイプを列挙します。 通常、エンドユーザが変更すべきものではありません。 代りに .Va extra_netfs_types を使用してください。 .It Va extra_netfs_types .Pq Vt 文字列 .Dq Li NO (デフォルト) 以外に設定すると、ネットワーク初期化まで遅延させて .Xr rc 8 により起動時に自動マウントするファイルシステムタイプのリストを、 この変数により拡張します。 これは、空白区切りのネットワークファイルシステム記述子ペアのリストです。 それぞれのペアは、 .Xr mount 8 に渡されるファイルシステムタイプと、人が読める 1 語記述を、コロン .Pq Ql \&: で結合したものです。 デフォルトリストの拡張が必要なのは、 サードパーティのファイルシステムタイプを使用する場合だけです。 .It Va syslogd_enable .Pq Vt ブール値 .Dq Li YES に設定すると、 .Xr syslogd 8 デーモンを起動します。 .It Va syslogd_program .Pq Vt 文字列 .Xr syslogd 8 へのパス (デフォルトは .Pa /usr/sbin/syslogd です)。 .It Va syslogd_flags .Pq Vt 文字列 .Va syslogd_enable が .Dq Li YES の場合、これらは .Xr syslogd 8 に渡すフラグになります。 .It Va inetd_enable .Pq Vt ブール値 .Dq Li YES に設定すると、 .Xr inetd 8 デーモンを起動します。 .It Va inetd_program .Pq Vt 文字列 .Xr inetd 8 へのパス (デフォルトは .Pa /usr/sbin/inetd です)。 .It Va inetd_flags .Pq Vt 文字列 .Va inetd_enable が .Dq Li YES の場合、これらは .Xr inetd 8 へ渡すフラグとなります。 .It Va named_enable .Pq Vt ブール値 .Dq Li YES に設定すると、 .Xr named 8 デーモンを起動します。 .It Va named_program .Pq Vt 文字列 .Xr named 8 へのパス (デフォルトは .Pa /usr/sbin/named です)。 .It Va named_flags .Pq Vt 文字列 .Va named_enable が .Dq Li YES の場合、これらは .Xr named 8 に渡すフラグとなります。 .It Va named_pidfile .Pq Vt 文字列 これは、 .Xr named 8 デーモンの PID ファイルへのデフォルトパスです。 .Xr named.conf 5 で場所を変えた場合、これも変えてください。 .It Va named_chrootdir .Pq Vt 文字列 .Xr chroot 8 -環境で実行するネームサーバのルートディレクトリです。 +環境で実行するネームサーバのルートディレクトリです +(デフォルトは +.Pa /var/named)。 空のままにすると、 .Xr named 8 は .Xr chroot 8 環境では実行しません。 -.Va named_rcng -が有効でない場合、この変数は効果がありません。 -この変数は実験的です。 -近い将来、削除されたり変更されたりするかもしれません .It Va named_chroot_autoupdate .Pq Vt ブール値 .Dq Li NO に設定すると、 -ルートファイルシステムと .Xr chroot 8 -との間のライブラリや他のシステムファイルの自動同期を無効にします。 -.Va named_rcng -が有効でない場合、この変数は効果がありません。 -この変数は実験的です。 -近い将来、削除されたり変更されたりするかもしれません +環境の自動更新を無効にします。 .It Va named_symlink_enable .Pq Vt ブール値 .Dq Li NO -に設定すると、 -.Xr named 8 -が実行している +に設定すると、デーモンの PID ファイルの .Xr chroot 8 -環境への、 -.Va named_pidfile -および -.Pa /var/run/ndc -のシンボリックリンクを無効化します。 -.Va named_rcng -が有効でない場合、この変数は効果がありません。 -この変数は実験的です。 -近い将来、削除されたり変更されたりするかもしれません +環境へのシンボリックリンクを無効化します。 .It Va kerberos5_server_enable .Pq Vt ブール値 ブート時に Kerberos 5 認証デーモンを起動したい場合は .Dq Li YES とします。 .It Va kerberos5_server .Pq Vt 文字列 .Va kerberos5_server_enable が .Dq Li YES の場合、これが Kerberos 5 認証サーバのパスになります。 .It Va kadmind5_server_enable .Pq Vt ブール値 .Xr kadmind 8 すなわち Kerberos 5 管理デーモンを起動したい場合は .Dq Li YES とします。 スレーブサーバでは .Dq Li NO に設定します。 .It Va kadmind5_server .Pq Vt 文字列 .Va kadmind5_server_enable が .Dq Li YES の場合、これが Kerberos 5 管理デーモンのパスになります。 .It Va kpasswdd_server_enable .Pq Vt ブール値 .Dq Li YES に設定すると、Kerberos 5 パスワード変更デーモン .Xr kpasswdd 8 を実行します。 スレーブサーバでは、 .Dq Li NO を設定します。 .It Va kpasswdd_server .Pq Vt 文字列 .Va kpasswdd_server_enable が .Dq Li YES の場合、これが Kerberos 5 パスワード変更デーモンのパスになります。 .It Va rwhod_enable .Pq Vt ブール値 .Dq Li YES に設定すると、ブート時に .Xr rwhod 8 デーモンを起動します。 .It Va rwhod_flags .Pq Vt 文字列 .Va rwhod_enable が .Dq Li YES に設定されている場合、これらは rwhod に渡すフラグになります。 .It Va amd_enable .Pq Vt ブール値 .Dq Li YES に設定すると、ブート時に .Xr amd 8 デーモンを起動します。 .It Va amd_flags .Pq Vt 文字列 .Va amd_enable が .Dq Li YES に設定されている場合、これらは amd に渡すフラグとなります。 詳しくは .Xr amd 8 マニュアルページを利用してください。 .It Va amd_map_program .Pq Vt 文字列 設定されている場合、 指定されたプログラムは、 .Xr amd 8 マップのリストを取得するために実行されることになります。 例えば、 .Xr amd 8 マップが NIS に格納されている場合、 この変数の値を設定して、 .Pa amd.master NIS マップから .Xr amd 8 マップのリストを取得するために .Xr ypcat 1 を実行させるようにできます。 .It Va update_motd .Pq Vt ブール値 .Dq Li YES に設定すると、実行されているカーネルリリースを反映するように、 ブート時に .Pa /etc/motd を更新します。 .Dq Li NO に設定すると、 .Pa /etc/motd は更新を行いません。 .It Va nfs_client_enable .Pq Vt ブール値 .Dq Li YES に設定すると、ブート時に NFS クライアントデーモンを起動します。 .It Va nfs_access_cache .Pq Vt 整数 .Va nfs_client_enable が .Dq Li YES の場合、この変数に .Dq Li 0 を設定して NFS ACCESS RPC キャッシングを無効化することができますし、 NFS ACCESS 結果がキャッシュされる秒数を指定することもできます。 2-10 秒の値を設定すると、 多くの NFS 操作に対するネットワークトラフィックを十分減らします。 .It Va nfs_server_enable .Pq Vt ブール値 .Dq Li YES に設定すると、ブート時に NFS サーバデーモンを起動します。 .It Va nfs_server_flags .Pq Vt 文字列 .Va nfs_server_enable が .Dq Li YES の場合、これらは .Xr nfsd 8 デーモンに渡すフラグとなります。 .It Va mountd_enable .Pq Vt ブール値 .Dq Li YES に設定し .Va nfs_server_enable を設定しないと、 .Xr mountd 8 は起動しますが .Xr nfsd 8 デーモンは起動しません。 実際に NFS は使用せずに CFS を使用する場合に、一般的に必要となります。 .It Va mountd_flags .Pq Vt 文字列 .Va mountd_enable が .Dq Li YES の場合、これらは .Xr mountd 8 デーモンへのフラグとなります。 .It Va weak_mountd_authentication .Pq Vt ブール値 .Dq Li YES に設定すると、PCNFSD のようなサービスに対し、 権限付けられていないマウント要求を許すようになります。 .It Va nfs_reserved_port_only .Pq Vt ブール値 .Dq Li YES に設定すると、安全なポート上でのみ NFS サービスを提供します。 .It Va nfs_bufpackets .Pq Vt 整数 数値を設定すると、その数のパケットに相当するソケットバッファ空間が、 NFS クライアント上に予約されます。 カーネルのデフォルトは、通常は 4 です。 ギガビットネットワークの場合、これより大きな値を設定した方が 性能が向上するかもしれません。 最小値は 2 であり、最大値は 64 です。 .It Va rpc_lockd_enable .Pq Vt ブール値 この変数が .Dq Li YES に設定され、しかも NFS サーバである場合、ブート時に .Xr rpc.lockd 8 を起動します。 .It Va rpc_statd_enable .Pq Vt ブール値 この変数が .Dq Li YES に設定され、しかも NFS サーバである場合、ブート時に .Xr rpc.statd 8 を起動します。 .It Va rpcbind_program .Pq Vt 文字列 .Xr rpcbind 8 へのパス (デフォルトは .Pa /usr/sbin/rpcbind です)。 .It Va rpcbind_enable .Pq Vt ブール値 .Dq Li YES の場合、ブート時に .Xr rpcbind 8 サービスを起動します。 .It Va rpcbind_flags .Pq Vt 文字列 .Va rpcbind_enable が .Dq Li YES の場合、これらは .Xr rpcbind 8 デーモンに渡すフラグとなります。 .It Va keyserv_enable .Pq Vt ブール値 .Dq Li YES に設定すると、Secure RPC 実行のために、起動時に .Xr keyserv 8 デーモンを実行します。 .It Va keyserv_flags .Pq Vt 文字列 .Va keyserv_enable が .Dq Li YES の場合、これらは .Xr keyserv 8 デーモンに渡すフラグになります。 .It Va pppoed_enable .Pq Vt ブール値 .Dq Li YES に設定すると、ブート時に .Xr pppoed 8 デーモンを起動し、PPP over Ethernet サービスを提供します。 .It Va pppoed_ Ns Ar provider .Pq Vt 文字列 .Xr pppoed 8 はこの .Ar provider に対する要求を待ち受け、最終的にはこの名前を .Ar system 引数として .Xr ppp 8 を実行します。 .It Va pppoed_flags .Pq Vt 文字列 .Xr pppoed 8 へ渡す追加のフラグ。 .It Va pppoed_interface .Pq Vt 文字列 .Xr pppoed 8 が実行されるネットワークインタフェース。 .Va pppoed_enable が .Dq Li YES に設定された場合、必須です。 .It Va timed_enable .Pq Vt ブール値 .Dq Li YES なら、ブート時に .Xr timed 8 サービスを実行します。 このコマンドは、全ホストについて一貫した .Dq "ネットワーク時間" が確立されなければならないマシンネットワークのためにあります。 これが有用である典型例は、 ファイルのタイムスタンプがネットワーク全体で一貫性をもつことが 期待されるような、大規模 NFS 環境です。 .It Va timed_flags .Pq Vt 文字列 .Va timed_enable が .Dq Li YES の場合、これらは .Xr timed 8 サービスに渡すフラグとなります。 .It Va ntpdate_enable .Pq Vt ブール値 .Dq Li YES に設定すると、システムスタートアップ時に .Xr ntpdate 8 を実行します。 このコマンドは、ある標準的な参照先を元に、ただ .Em 1 回 だけシステム時刻を同期させるためにあります。 また、システムを最初にインストールする際、 この値を (知られているサービスのリストから) 初期設定するオプションが .Xr sysinstall 8 プログラムによって提供されます。 .It Va ntpdate_hosts .Pq Vt 文字列 起動時に同期を取る NTP サーバを空白で区切って並べたリスト。 デフォルトでは、ファイル .Pa /etc/ntp.conf が存在する時に、このファイルの中のサーバのリストを使用します。 .It Va ntpdate_program .Pq Vt 文字列 .Xr ntpdate 8 へのパス (デフォルトは .Pa /usr/sbin/ntpdate です)。 .It Va ntpdate_flags .Pq Vt 文字列 .Va ntpdate_enable が .Dq Li YES の場合、これらは .Xr ntpdate 8 コマンドに渡すフラグとなります (通常はホスト名)。 .It Va ntpd_enable .Pq Vt ブール値 .Dq Li YES に設定すると、ブート時に .Xr ntpd 8 コマンドが起動されます。 .It Va ntpd_program .Pq Vt 文字列 .Xr ntpd 8 へのパス (デフォルトは .Pa /usr/sbin/ntpd です)。 .It Va ntpd_flags .Pq Vt 文字列 .Va ntpd_enable が .Dq Li YES の場合、これらは .Xr ntpd 8 デーモンに渡すフラグとなります。 .It Va nis_client_enable .Pq Vt ブール値 .Dq Li YES に設定すると、システムブート時に .Xr ypbind 8 サービスを起動します。 .It Va nis_client_flags .Pq Vt 文字列 .Va nis_client_enable が .Dq Li YES の場合、これらは .Xr ypbind 8 サービスに渡すフラグとなります。 .It Va nis_ypset_enable .Pq Vt ブール値 .Dq Li YES に設定すると、システムブート時に .Xr ypset 8 デーモンを起動します。 .It Va nis_ypset_flags .Pq Vt 文字列 .Va nis_ypset_enable が .Dq Li YES の場合、これらは .Xr ypset 8 デーモンに渡すフラグとなります。 .It Va nis_server_enable .Pq Vt ブール値 .Dq Li YES に設定すると、システムブート時に .Xr ypserv 8 デーモンを起動します。 .It Va nis_server_flags .Pq Vt 文字列 .Va nis_server_enable が .Dq Li YES の場合、これらは .Xr ypserv 8 デーモンに渡すフラグとなります。 .It Va nis_ypxfrd_enable .Pq Vt ブール値 .Dq Li YES に設定すると、システムブート時に .Xr rpc.ypxfrd 8 デーモンを起動します。 .It Va nis_ypxfrd_flags .Pq Vt 文字列 .Va nis_ypxfrd_enable が .Dq Li YES の場合、これらは .Xr rpc.ypxfrd 8 デーモンに渡すフラグとなります。 .It Va nis_yppasswdd_enable .Pq Vt ブール値 .Dq Li YES に設定すると、システムブート時に .Xr rpc.yppasswdd 8 デーモンを起動します。 .It Va nis_yppasswdd_flags .Pq Vt 文字列 .Va nis_yppasswdd_enable が .Dq Li YES の場合、これらは .Xr rpc.yppasswdd 8 デーモンに渡すフラグとなります。 .It Va rpc_ypupdated_enable .Pq Vt ブール値 .Dq Li YES に設定すると、システム起動時に .Nm rpc.ypupdated デーモンを実行します。 .It Va defaultrouter .Pq Vt 文字列 .Dq Li NO が設定されていない場合、このホスト名または IP アドレスを持つ デフォルトルートを 作成します (このルータ名もネームサーバに到達する必要がある 場合は IP アドレスを使用すること!)。 .It Va ipv6_defaultrouter .Pq Vt 文字列 IPv6 の .Va defaultrouter です。 .It Va static_routes .Pq Vt 文字列 システムブート時に追加すべきスタティックルートのリストを 設定します。 .Dq Li NO 以外を設定した場合、その値を空白で区切った要素 .Ar element それぞれに対し変数 .Va route_ Ns Aq Ar element が存在すると仮定され、後でこれらの内容が .Dq Nm route Cm add 操作に渡されることになります。 例えば、 .Bd -literal static_routes="mcast gif0local" route_mcast="-net 224.0.0.0/4 -iface gif0" route_gif0local="-host 169.254.1.1 -iface lo0" .Ed .It Va ipv6_static_routes .Pq Vt 文字列 IPv6 の .Va static_routes です。 .Dq Li NO 以外に設定した場合、その値を空白で区切った要素 .Ar element それぞれに対し変数 .Va ipv6_route_ Ns Aq Ar element が存在すると仮定され、後でこれらの内容が .Dq Nm route Cm add Fl inet6 操作に渡されることになります。 .It Va natm_static_routes .Pq Vt 文字列 .Xr natmip 4 において .Va static_routes と等価なものです。 空でない場合、その値を空白で区切った要素 .Ar element それぞれに対し変数 .Va route_ Ns Aq Ar element が存在することが仮定され、後でこれらの内容が .Dq Nm atmconfig Cm natm Cm add 操作に渡されることになります。 .It Va gateway_enable .Pq Vt ブール値 .Dq Li YES に設定すると、IP ルータとして動作するように、 例えば、インタフェース間でパケットをフォワードするように ホストを設定します。 .It Va ipv6_gateway_enable .Pq Vt ブール値 IPv6 の .Va gateway_enable です。 .It Va router_enable .Pq Vt ブール値 .Dq Li YES に設定すると、 .Va router および .Va router_flags の設定に基づいて、ある種のルーティングデーモンを実行します。 .It Va ipv6_router_enable .Pq Vt ブール値 IPv6 の .Va router_enable です。 .Dq Li YES に設定すると、 .Va ipv6_router および .Va ipv6_router_flags の設定に基づいて、ある種のルーティングデーモンを実行します。 .It Va router .Pq Vt 文字列 .Va router_enable が .Dq Li YES に設定されると、これが使用するルーティングデーモン名になります。 .It Va ipv6_router .Pq Vt 文字列 IPv6 の .Va router です。 .It Va router_flags .Pq Vt 文字列 .Va router_enable が .Dq Li YES に設定されると、これらがルーティングデーモンへ渡すフラグとなります。 .It Va ipv6_router_flags .Pq Vt 文字列 IPv6 の .Va router_flags です。 .It Va mrouted_enable .Pq Vt ブール値 .Dq Li YES に設定すると、 .Xr mrouted 8 デーモンを起動します。 .It Va mroute6d_enable .Pq Vt ブール値 IPv6 の .Va mrouted_enable です。 .Dq Li YES に設定すると、IPv6 マルチキャストルーティングデーモンを実行します。 IPv6 マルチキャストルーティングデーモンは .Fx ベースシステムに含まれていませんが、 .Xr pim6dd 8 を .Fx Ports Collection からインストールすることができます。 .It Va mrouted_flags .Pq Vt 文字列 .Va mrouted_enable が .Dq Li YES の場合、これらは .Xr mrouted 8 へ渡すフラグとなります。 .It Va mroute6d_flags .Pq Vt 文字列 IPv6 の .Va mrouted_flags です。 .Va mroute6d_enable が .Dq Li YES の場合、 これらは IPv6 マルチキャストルーティングデーモンへ渡すフラグとなります。 .It Va mroute6d_program .Pq Vt 文字列 .Va mroute6d_enable が .Dq Li YES の場合、これが IPv6 マルチキャストルーティングデーモンのパスです。 .It Va rtadvd_enable .Pq Vt ブール値 .Dq Li YES の場合、起動時に .Xr rtadvd 8 デーモンを実行します。 .Xr rtadvd 8 は .Va ipv6_gateway_enable にも .Dq Li YES が設定されている場合のみ実行します。 .Xr rtadvd 8 ユーティリティは、ルータ広告パケットを、 .Va rtadvd_interfaces で指定したインタフェースへ送ります。 .Xr rtadvd 8 は非常に注意して設定すべきです。 .Xr rtadvd.conf 5 を細かく調整することになるかもしれません。 .It Va rtadvd_interfaces .Pq Vt 文字列 .Va rtadvd_enable が .Dq Li YES の場合、これが使用するインタフェースリストです。 .It Va ipxgateway_enable .Pq Vt ブール値 .Dq Li YES に設定すると、IPX トラフィックのルーティングを有効にします。 .It Va ipxrouted_enable .Pq Vt ブール値 .Dq Li YES に設定すると、ブート時に .Xr IPXrouted 8 デーモンを起動します。 .It Va ipxrouted_flags .Pq Vt 文字列 .Va ipxrouted_enable が .Dq Li YES の場合、これらは .Xr IPXrouted 8 デーモンへ渡すフラグとなります。 .It Va arpproxy_all .Pq Vt ブール値 .Dq Li YES に設定すると、グローバルプロキシ ARP を有効にします。 .It Va forward_sourceroute .Pq Vt ブール値 これが .Dq Li YES に設定され、更に .Va gateway_enable もまた .Dq Li YES に設定されている場合、 送信元が経路指定したパケット (source routed packets) はフォワードされます。 .It Va accept_sourceroute .Pq Vt ブール値 .Dq Li YES に設定すると、 システムは自分宛の送信元経路指定パケットを受け付けます。 .It Va rarpd_enable .Pq Vt ブール値 .Dq Li YES に設定すると、システムブート時に .Xr rarpd 8 デーモンを起動します。 .It Va rarpd_flags .Pq Vt 文字列 .Va rarpd_enable が .Dq Li YES の場合、これらは .Xr rarpd 8 デーモンへ渡すフラグとなります。 .It Va bootparamd_enable .Pq Vt ブール値 .Dq Li YES に設定すると、システムブート時に .Xr bootparamd 8 デーモンを起動します。 .It Va bootparamd_flags .Pq Vt 文字列 .Va bootparamd_enable が .Dq Li YES の場合、これらは .Xr bootparamd 8 デーモンへ渡すフラグとなります。 .It Va stf_interface_ipv4addr .Pq Vt 文字列 .Dq Li NO 以外に設定すると、これが 6to4 (IPv6 over IPv4 トンネリングインタフェース) のローカル IPv4 アドレスです。 6to4 インタフェースを有効にするには、このエントリを指定してください。 .It Va stf_interface_ipv4plen .Pq Vt 整数 6to4 IPv4 アドレスのプレフィックス長であり、対向アドレス範囲を限定します。 有効な値は 0-31 です。 .It Va stf_interface_ipv6_ifid .Pq Vt 文字列 .Xr stf 4 の IPv6 インタフェース ID です。 .Dq Li AUTO に設定可能です。 .It Va stf_interface_ipv6_slaid .Pq Vt 文字列 .Xr stf 4 の IPv6 サイトレベルアグリゲータです。 .It Va ipv6_faith_prefix .Pq Vt 文字列 .Dq Li NO 以外に設定すると、これが faith プレフィックスになり、 FAITH IPv6-to-IPv4 TCP 変換器を有効にします。 .Xr faithd 8 の設定も必要です。 .It Va ipv6_ipv4mapping .Pq Vt ブール値 .Dq Li YES に設定すると、 .Li ( ::ffff:a.b.c.d のような) IPv4 をマップした IPv6 アドレス通信を有効にします。 .It Va atm_enable .Pq Vt ブール値 .Dq Li YES に設定すると、 システムブート時に ATM インタフェースの設定を有効にします。 次に説明する ATM 関連の変数に関し、 利用可能なコマンドパラメータの更なる詳細については、 .Xr atm 8 のマニュアルページを参照してください。 更なる詳細な設定情報に関しては、 .Pa /usr/share/examples/atm 中のファイルも参照してください。 .It Va atm_load .Pq Vt 文字列 ロードすべき物理 ATM インタフェースドライバのリストです。 典型的な値は .Dq Li hfa_pci や .Dq Li hea_pci です。 .It Va atm_netif_ Ns Aq Ar intf .Pq Vt 文字列 ATM 物理インタフェース .Ar intf に対し、本変数は、 生成すべき ATM ネットワークインタフェースの名前の プレフィックスと数字を定義します。 値はコマンド .Dq Nm atm Cm "set netif" Ar intf のパラメータとして渡されます。 .It Va atm_sigmgr_ Ns Aq Ar intf .Pq Vt 文字列 ATM 物理インタフェース .Ar intf に対し、本変数は使用すべき ATM シグナリングマネージャを定義します。 値はコマンド .Dq Nm atm Cm attach Ar intf のパラメータとして渡されます。 .It Va atm_prefix_ Ns Aq Ar intf .Pq Vt 文字列 ATM 物理インタフェース .Ar intf に対し、本変数は、 UNI シグナリングマネージャを使用するインタフェースの NSAP プレフィックスを定義します。 .Dq Li ILMI に設定すると、プレフィックスは自動的に .Xr ilmid 8 デーモンを介して設定されます。 そうでない場合、値はコマンド .Dq Nm atm Cm "set prefix" Ar intf のパラメータとして渡されます。 .It Va atm_macaddr_ Ns Aq Ar intf .Pq Vt 文字列 ATM 物理インタフェース .Ar intf に対し、本変数は、 UNI シグナリングマネージャを使用するインタフェースの MAC アドレスを定義します。 .Dq Li NO に設定すると、ATM インタフェースカードに格納されている ハードウェア MAC アドレスが使用されます。 そうでない場合、値はコマンド .Dq Nm atm Cm "set mac" Ar intf のパラメータとして渡されます。 .It Va atm_arpserver_ Ns Aq Ar netif .Pq Vt 文字列 ATM 物理インタフェース .Ar netif に対し、本変数は、ATMARP サービスを提供するホストの ATM アドレスを定義します。 本変数は、UNI シグナリングマネージャを使用するインタフェースにおいてのみ 利用可能です。 .Dq Li local に設定すると、本ホストが ATMARP サーバになります。 値はコマンド .Dq Nm atm Cm "set arpserver" Ar netif のパラメータとして渡されます。 .It Va atm_scsparp_ Ns Aq Ar netif .Pq Vt ブール値 .Dq Li YES に設定すると、ネットワークインタフェース .Ar netif に対する SCSP/ATMARP サービスが、 .Xr scspd 8 および .Xr atmarpd 8 を使用して開始されます。 本変数は .Va atm_arpserver_ Ns Aq Ar netif が .Dq Li local に設定されている場合にのみ利用可能です。 .It Va atm_pvcs .Pq Vt 文字列 システムブート時に追加したい ATM PVC のリストを設定します。 この値を空白で区切った要素 .Ar element それぞれに対し、変数 .Va atm_pvc_ Ns Aq Ar element が存在すると仮定されます。 これらの変数それぞれについて、その値がコマンド .Dq Nm atm Cm "add pvc" のパラメータとして渡されます。 .It Va atm_arps .Pq Vt 文字列 システムブート時に追加したい、 永続的な ATM ARP エントリのリストを設定します。 この値の中で空白で区切られた .Ar element ごとに、変数 .Va atm_arp_ Ns Aq Ar element が存在するものと仮定されます。 これらの変数の値がコマンド .Dq Nm atm Cm "add arp" のパラメータとして渡されます。 .It Va natm_interfaces .Pq Vt 文字列 .Xr harp 4 を介して HARP でも使用される、 .Xr natm 4 インタフェースのリストに設定します。 このリストが空ではない場合、このリスト中のすべてのインタフェースが .Xr ifconfig 8 で立ち上げられ、 .Xr harp 4 がロードされます。 これが動作するためには、 該当するインタフェースドライバがカーネルに組み込まれているか ルートパーティションに存在することが必要です。 .It Va keybell .Pq Vt 文字列 キーボードベル音。 デフォルト動作が必要な場合、 .Dq Li normal , .Dq Li visual , .Dq Li off , .Dq Li NO のいずれかに設定します。 詳細については .Xr kbdcontrol 1 マニュアルページを参照してください。 .It Va keyboard .Pq Vt 文字列 空文字列以外を設定した場合、このデバイスを 仮想コンソールのキーボード入力として設定します。 .It Va keymap .Pq Vt 文字列 .Dq Li NO に設定すると、キーマップはインストールされません。 それ以外の場合、 ここで指定した値 .Ar value がキーマップファイル .Pa /usr/share/syscons/keymaps/ Ns Ao Ar value Ac Ns Pa .kbd をインストールするのに用いられます。 .It Va keyrate .Pq Vt 文字列 キーボードのリピートスピードです。以下のいずれかに設定します。 .Dq Li slow , .Dq Li normal , .Dq Li fast か、 デフォルト値を希望する場合は .Dq Li NO とします。 .It Va keychange .Pq Vt 文字列 .Dq Li NO 以外に設定すると、その値でファンクションキーをプログラムしようとします。 指定できる値は単一の文字列で, .Dq Ar funkey_number new_value Op Ar funkey_number new_value ... . という形式でないといけません。 .It Va cursor .Pq Vt 文字列 カーソルの動作を明示的に指定する場合は .Dq Li normal , .Dq Li blink , .Dq Li destructive のいずれかの値に設定します。 デフォルト動作を選ぶには .Dq Li NO とします。 .It Va scrnmap .Pq Vt 文字列 .Dq Li NO に設定すると、スクリーンマップはインストールされません。 それ以外の場合には、ここで指定した .Ar value がスクリーンマップファイル .Pa /usr/share/syscons/scrnmaps/ Ns Aq Ar value をインストールするのに用いられます。 .It Va font8x16 .Pq Vt 文字列 .Dq Li NO に設定すると、スクリーンサイズの要求に対しデフォルトの 8x16 フォント値が 用いられます。 それ以外の場合は .Pa /usr/share/syscons/fonts/ Ns Aq Ar value の値が用いられます。 .It Va font8x14 .Pq Vt 文字列 .Dq Li NO に設定すると、スクリーンサイズの要求に対しデフォルトの 8x14 フォント値が 用いられます。 それ以外の場合は .Pa /usr/share/syscons/fonts/ Ns Aq Ar value の値が用いられます。 .It Va font8x8 .Pq Vt 文字列 .Dq Li NO に設定すると、スクリーンサイズの要求に対しデフォルトの 8x8 フォント値が 用いられます。 それ以外の場合は .Pa /usr/share/syscons/fonts/ Ns Aq Ar value の値が用いられます。 .It Va blanktime .Pq Vt 整数 .Dq Li NO に設定すると、デフォルトのスクリーンブランク時間間隔が用いられます。 それ以外の場合は .Ar value 秒に設定されます。 .It Va saver .Pq Vt 文字列 .Dq Li NO 以外に設定すると、これが実際に使用する スクリーンセーバ .Li ( blank , snake , daemon など) となります。 .It Va moused_enable .Pq Vt 文字列 .Dq Li YES に設定すると、コンソール上でのカット/ペーストセレクション用に .Xr moused 8 デーモンが起動されます。 .It Va moused_type .Pq Vt 文字列 このホストに接続しているマウスのプロトコルのタイプ。 .Va moused_enable が .Dq Li YES の場合、この変数は必ず設定しなければなりません。 多くの場合、 .Xr moused 8 デーモンは適切なマウスタイプを自動的に検出することができます。 デーモンにマウスを検出させるには、この変数を .Dq Li auto に設定します。 自動検出が失敗する場合、以下のリストから 1 つを選びます。 .Pp マウスが PS/2 マウスポートに接続されている場合、 .Dq Li auto か .Dq Li ps/2 を常に指定する必要があります。マウスのブランドやモデルには無関係です。 同様に、マウスがバスマウスポートに接続されている場合、 .Dq Li auto か .Dq Li busmouse を選択してください。 他のプロトコルはシリアルマウス用であり、 PS/2 マウスおよびバスマウスでは動作しません。 USB マウスの場合、 .Dq Li auto のみが、動作する唯一のプロトコルです。 .Pp .Bl -tag -width ".Li x10mouseremote" -compact .It Li microsoft Microsoft マウス (シリアル) .It Li intellimouse Microsoft IntelliMouse (シリアル) .It Li mousesystems Mouse system 社製のマウス (シリアル) .It Li mmseries MM シリーズのマウス (シリアル) .It Li logitech Logitech 製のマウス (シリアル) .It Li busmouse バスマウス .It Li mouseman Logitech の MouseMan および TrackMan (シリアル) .It Li glidepoint ALPS 製の GlidePoint (シリアル) .It Li thinkingmouse Kensington 製の ThinkingMouse (シリアル) .It Li ps/2 PS/2 マウス .It Li mmhittab MM の HitTablet (シリアル) .It Li x10mouseremote X10 MouseRemote (シリアル) .It Li versapad Interlink VersaPad (シリアル) .El .Pp お使いのマウスが上記のリストにない場合でも、 リスト中のいずれかと互換性があるかも知れません。 互換性に関する情報については .Xr moused 8 のマニュアルページを参照してください。 .Pp また、 この変数が有効であるときは、(Xサーバのような) 他の全ての マウスクライアントは仮想マウスデバイス .Pa /dev/sysmouse を通してマウスにアクセスし、 それを .Dq Li sysmouse タイプのマウスとして設定すべきであると いうことにも注意すべきです。 これは、 .Xr moused 8 使用時は、全てのマウスデータがこの単一の標準フォーマットに 変換されるためです。 クライアントプログラムが .Dq Li sysmouse タイプを サポートしないなら .Dq Li mousesystems を 指定してください。 これがその次に望ましいタイプです。 .It Va moused_port .Pq Vt 文字列 .Va moused_enable が .Dq Li YES の場合、これはマウスが接続されている実際のポートになります。 たとえば、COM1 シリアルマウスに対しては .Pa /dev/cuaa0 、PS/2 マウスに対しては .Pa /dev/psm0 、バスマウスに対しては .Pa /dev/mse0 となります。 .It Va moused_flags .Pq Vt 文字列 .Va moused_type が設定されている場合、これらは .Xr moused 8 デーモンに渡す追加のフラグとなります。 .It Va mousechar_start .Pq Vt 整数 .Dq Li NO に設定すると、デフォルトのマウスカーソル文字範囲 .Li 0xd0 Ns - Ns Li 0xd3 が使用されます。 そうでない場合、範囲の開始位置を .Ar value 文字に設定されます。 .Xr vidcontrol 1 を参照してください。 デフォルトの範囲が言語のコード表で占められている場合に使用してください。 .It Va allscreens_flags .Pq Vt 文字列 設定すると、各仮想端末 .Pq Pa /dev/ttyv* に対し、これらのオプションを使用して .Xr vidcontrol 1 を実行します。 例えば .Dq Fl m Cm on は、 .Va moused_enable が .Dq Li YES に設定されている場合、全仮想端末上でマウスポインタを有効にします。 .It Va allscreens_kbdflags .Pq Vt 文字列 設定されると、各仮想端末 .Pq Pa /dev/ttyv* に対し、 .Xr kbdcontrol 1 がこれらのオプション付きで実行されます。 例えば、 .Dq Fl h Li 200 は .Xr syscons 4 をスクロールバック (ヒストリ) バッファ 200 行に設定します。 .It Va cron_enable .Pq Vt ブール値 .Dq Li YES に設定すると、システムブート時に .Xr cron 8 デーモンを起動します。 .It Va cron_program .Pq Vt 文字列 .Xr cron 8 へのパス (デフォルトは .Pa /usr/sbin/cron です)。 .It Va cron_flags .Pq Vt 文字列 .Va cron_enable が .Dq Li YES を設定されている場合、これが .Xr cron 8 へ渡すフラグとなります。 .It Va cron_dst .Pq Vt ブール値 .Dq Li YES に設定されている場合、 .Xr cron 8 における夏時間移行時の特別扱いが有効になります .Fl ( s フラグの使用と等価です)。 .It Va lpd_program .Pq Vt 文字列 .Xr lpd 8 へのパス (デフォルトは .Pa /usr/sbin/lpd です)。 .It Va lpd_enable .Pq Vt ブール値 .Dq Li YES に設定すると、システムブート時に .Xr lpd 8 デーモンを起動します。 .It Va lpd_flags .Pq Vt 文字列 .Va lpd_enable が .Dq Li YES の場合、これらは .Xr lpd 8 デーモンに渡すフラグとなります。 .It Va mta_start_script .Pq Vt 文字列 本変数は、メール転送エージェントを起動するスクリプトへの フルパスを指定します。 デフォルトは、 .Pa /etc/rc.sendmail です。 .Pa /etc/rc.sendmail が使用する .Va sendmail_* 変数は、 .Xr rc.sendmail 8 マニュアルページに記述してあります。 .It Va dumpdev .Pq Vt 文字列 システムクラッシュ時にクラッシュダンプを書き込むデバイス (通常はスワップパーティション) を指定します。 この変数の値は .Xr dumpon 8 への引数として渡されます。 クラッシュダンプを無効にするには、この変数を .Dq Li NO に設定します。 .It Va dumpdir .Pq Vt 文字列 クラッシュ後にシステムがリブートするとき、 .Va dumpdev 変数で指定されるデバイスにクラッシュダンプが見付かると、 .Xr savecore 8 は、 このクラッシュダンプとカーネルのコピーを、 .Va dumpdir 変数で指定されるディレクトリへ保存します。 デフォルト値は .Pa /var/crash です。 .Va dumpdir を .Dq Li NO に設定すると、ブート時に .Xr savecore 8 を起動しません。 .It Va savecore_flags .Pq Vt 文字列 クラッシュダンプが有効な場合、これらは .Xr savecore 8 ユーティリティに渡すフラグになります。 .It Va enable_quotas .Pq Vt ブール値 .Dq Li YES に設定すると、システム起動時に、 .Xr quotaon 8 コマンドによってユーザディスクのクォータチェックを有効にします。 .It Va check_quotas .Pq Vt ブール値 .Dq Li YES に設定すると、 .Xr quotacheck 8 コマンドによってユーザディスクのクォータチェックを有効にします。 .It Va accounting_enable .Pq Vt ブール値 .Dq Li YES に設定すると、 .Xr accton 8 機能でシステムアカウンティングを有効にします。 .It Va ibcs2_enable .Pq Vt ブール値 .Dq Li YES に設定すると、 システム初期ブート時に iBCS2 (SCO) バイナリエミュレーションを有効にします。 .It Va ibcs2_loaders .Pq Vt 文字列 これを .Dq Li NO に設定せずに .Va ibcs2_enable を .Dq Li YES に設定した場合、 この文字列は有効化すべき追加の iBCS2 ローダのリストを指定します。 .It Va linux_enable .Pq Vt ブール値 .Dq Li YES に設定すると、 システムブート時に Linux/ELF バイナリエミュレーションを有効にします。 .It Va osf1_enable .Pq Vt ブール値 システムブート時に OSF/1 (Digital UNIX) バイナリエミュレーションを 有効にしたいなら .Dq Li YES に設定します (Alpha)。 .It Va svr4_enable .Pq Vt ブール値 .Dq Li YES に設定すると、起動時に SysVR4 エミュレーションを有効にします。 .It Va sysvipc_enable .Pq Vt ブール値 .Dq Li YES に設定すると、起動時に System V IPC プリミティブをロードします。 .It Va clear_tmp_enable .Pq Vt ブール値 .Dq Li YES に設定すると、 起動時に .Pa /tmp 下を消去します。 .It Va ldconfig_paths .Pq Vt 文字列 .Xr ldconfig 8 で使用する共有ライブラリのパスのリストを設定します。 注意: .Pa /usr/lib は常に先頭に追加されるので、このリストに指定する必要はありません。 .It Va ldconfig_paths_aout .Pq Vt 文字列 .Xr ldconfig 8 が古い .Xr a.out 5 形式をサポートする際に使用する共有ライブラリパスのリストを設定します。 .It Va ldconfig_insecure .Pq Vt ブール値 .Xr ldconfig 8 ユーティリティは、通常、 root 以外が書き込み可能なディレクトリの使用を拒否します。 .Dq Li YES に設定すると、 システムの起動中はこのセキュリティチェックを無効化します。 .It Va kern_securelevel_enable .Pq Vt ブール値 カーネルのセキュリティレベルをシステムスタートアップ時に設定したい場合に、 .Dq Li YES に設定します。 .It Va kern_securelevel .Pq Vt 整数 スタートアップ時に設定されるカーネルセキュリティレベルです。 値 .Ar value として許される範囲は \-1 (コンパイル時のデフォルト) から 3 (最も安全) です。 利用可能なセキュリティレベルと、 それがシステムの動作へ及ぼす影響については、 .Xr init 8 を参照してください。 .It Va lomac_enable .Pq Vt ブール値 .Dq Li YES に設定すると、 ブート時に Low Watermark Mandatory Access Control (LOMAC) を有効にします。 このセキュリティモデルは、システムプロセスに対し、完全性の制約を課します。 LOMAC モデルの完全な説明と、システム動作に及ぼす影響については、 .Xr lomac 4 を参照してください。 .It Va start_vinum .Pq Vt ブール値 .Dq Li YES に設定すると、 システムブート時に .Xr vinum 8 を開始します。 .It Va sshd_program .Pq Vt 文字列 SSH サーバプログラムへのパスです .Pa ( /usr/sbin/sshd がデフォルトです)。 .It Va sshd_enable .Pq Vt ブール値 .Dq Li YES に設定すると、 ブート時に .Xr sshd 8 を起動します。 .It Va sshd_flags .Pq Vt 文字列 .Va sshd_enable が .Dq Li YES の場合、これらは .Xr sshd 8 デーモンに渡すフラグになります。 .It Va usbd_enable .Pq Vt ブール値 .Dq Li YES に設定すると、起動時に .Xr usbd 8 を実行します。 .It Va usbd_flags .Pq Vt 文字列 .Va usbd_enable が .Dq Li YES の場合、これらは .Xr usbd 8 デーモンに渡すフラグになります。 .It Va watchdogd_enable .Pq Vt ブール値 .Dq Li YES に設定すると、ブート時に .Xr watchdogd 8 を起動します。 このためには、カーネルが .Xr watchdog 4 互換のデバイス付きでコンパイルされていることが必要です。 .It Va watchdogd_flags .Pq Vt 文字列 .Va watchdogd_enable に .Dq Li YES が設定されている場合、これらのフラグが .Xr watchdogd 8 デーモンに渡されます。 .It Va jail_enable .Pq Vt ブール値 .Dq Li NO に設定すると、設定済の jail は起動されません。 .It Va jail_list .Pq Vt 文字列 空白で区切られた jail 名のリストです。 これは、複数の jail の識別と設定を助ける、設定のためのものです。 このリストで指定される名前が、 ある jail のインスタンスに共通する識別子として使用されます。 対象の jail 名が .Li vjail とすると、これに依存する下記の変数ができます: .Bd -literal jail_vjail_hostname="jail.example.com" jail_vjail_ip="192.168.1.100" jail_vjail_rootdir="/var/jails/vjail/root" jail_vjail_exec="/bin/sh /etc/rc" .Ed .Pp 最後の項目は省略可能です。 設定されていない場合には、デフォルトの .Pa /etc/rc になります。 .It Va jail_set_hostname_allow .Pq Vt ブール値 .Dq Li NO に設定すると、jail 中の root ユーザがホスト名を設定できないようにします。 .It Va jail_socket_unixiproute_only .Pq Vt ブール値 .Dq Li NO に設定すると、jail 内で TCP/IP 以外のプロトコルを使えないようにします。 .It Va jail_sysvipc_allow .Pq Vt ブール値 .Dq Li YES に設定すると、jail 内のアプリケーションが System V IPC を使えるようにします。 .It Va unaligned_print .Pq Vt ブール値 .Dq Li NO に設定すると、境界調整されていないアクセスに対する警告は 表示されません (Alpha)。 .\" ----- isdn settings --------------------------------- .It Va isdn_enable .Pq Vt ブール値 デフォルトは .Dq Li NO です。 .Dq Li YES に設定すると、 .Xr isdnd 8 デーモン をシステム起動時に起動します。 .It Va isdn_flags .Pq Vt 文字列 デフォルトは .Dq Fl d Ns Cm n Fl d Ns Li 0x1f9 です。 .Xr isdnd 8 に渡される追加のフラグです (調整可能なパラメータについては .Va isdn_fsdev と .Va isdn_ttype を参照してください)。 .It Va isdn_ttype .Pq Vt 文字列 デフォルトは .Dq Li cons25 です。 .Xr isdnd 8 が全画面モードで動作する場合の出力端末の型です。 .It Va isdn_screenflags .Pq Vt 文字列 デフォルトで .Dq Li NO に設定されます。 全画面モード用のビデオモードです ( .Xr syscons 4 コンソールドライバ専用です)。 .Xr vidcontrol 1 を参照してください。 .It Va isdn_fsdev .Pq Vt 文字列 デフォルトは .Dq Li NO です。 .Xr isdnd 8 が全画面モードで動作する場合の出力端末です (デーモンモード時は .Dq Li NO です)。 .It Va isdn_trace .Pq Vt ブール値 デフォルトは .Dq Li NO です。 .Dq Li YES に設定すると、ISDN プロトコルトレースユーティリティ .Xr isdntrace 8 をシステム起動時に有効にします。 .It Va isdn_traceflags .Pq Vt 文字列 デフォルトは .Dq Fl f Pa /var/tmp/isdntrace0 です。 .Xr isdntrace 8 へのフラグです。 .\" ----------------------------------------------------- .It Va pcvt_verbose .Pq Vt ブール値 デフォルトで .Dq Li NO に設定されます。 .Dq Li YES に設定すると、 起動スクリプトが行った動作に関する冗長なメッセージが表示されます。 .Em 注 : ここで記述されている .Xr pcvt 4 オプション関連の効果のためには、 .Xr pcvt 4 ドライバがカーネルに組み込まれている必要があります。 .It Va pcvt_keymap .Pq Vt 文字列 デフォルトで .Dq Li NO に設定されます。 これで各国キーボード配列の初期化をします。 キーボード配列は .Pa /usr/share/misc/keycap.pcvt ファイルに記述されています .Xr ( pcvt 4 の keycap データベースの使用方法については、マニュアルページ .Xr keycap 5 および .Xr keycap 3 を参照し、各国キーボード配列の設定については .Xr kcon 1 のオプション .Fl m を参照してください)。 .It Va pcvt_keydel .Pq Vt 整数 デフォルトで .Dq Li NO に設定されます。 キーボードのキーリピート遅延値に使用されます。 正当な値は 0..3 の範囲であり、遅延値 250, 500, 750, 1000 msec です .Xr ( kcon 1 マニュアルページも参照してください)。 .It Va pcvt_keyrate .Pq Vt 整数 デフォルトで .Dq Li NO に設定されます。 キーボードのキーリピートレート値に使用されます。 正当な値は 0..31 の範囲であり、秒あたり 2..30 文字のリピート値です。 .It Va pcvt_keyrepeat .Pq Vt ブール値 デフォルトで .Dq Li NO に設定されます。 .Dq Li YES に設定すると、自動キーボードキーリピートを有効にします。 .It Va pcvt_force24 .Pq Vt ブール値 デフォルトで .Dq Li NO に設定されます。 .Dq Li YES に設定すると、オリジナルの .Tn VT220 端末との互換性のために (25 行モードで) 24 行のみを使用するよう .Xr pcvt 4 に強制します。 .It Va pcvt_hpext .Pq Vt ブール値 デフォルトで .Dq Li NO に設定されます。 .Dq Li YES に設定すると、ファンクションキーラベル .Tn ( Hewlett-Packard の .Tn HP2392A や .Tn HP700/92 のような端末の ANSI モードで見られるもの) の表示と機能を有効にします。 .It Va pcvt_lines .Pq Vt 整数 デフォルトの .Dq Li NO は、値 25 になります。 画面の行数を設定するために使用します。 VGA ディスプレイでは、正当な値は 25, 28, 40, 50 行です .Xr ( scon 1 マニュアルページも参照してください)。 .It Va pcvt_blanktime .Pq Vt 整数 デフォルトで .Dq Li NO に設定されます。 0 より大きい値を使用することで、スクリーンセーバのタイムアウトを、 秒単位で指定します。 .It Va pcvt_cursorh .Pq Vt 整数 デフォルトで .Dq Li NO に設定されます。 カーソルトップスキャンラインを設定するために使用されます .Xr ( cursor 1 マニュアルページも参照してください)。 .It Va pcvt_cursorl .Pq Vt 整数 デフォルトで .Dq Li NO に設定されます。 カーソルボトムスキャンラインを設定するために使用されます。 .It Va pcvt_monohigh .Pq Vt ブール値 デフォルトで .Dq Li NO に設定されます。 .Dq Li YES に設定すると、モノクロームモニタの輝度を高くします (VGA パレット値の変更に関する更なる情報は、 .Xr scon 1 マニュアルページの .Fl p を参照してください)。 .It Va harvest_interrupt .Pq Vt ブール値 .Dq Li YES に設定すると、エントロピ源としてハードウェア割り込みを使用します。 更なる情報については .Xr random 4 を参照してください。 .It Va harvest_ethernet .Pq Vt ブール値 .Dq Li YES に設定すると、エントロピ源として LAN トラフィックを使用します。 更なる情報については .Xr random 4 を参照してください。 .It Va harvest_p_to_p .Pq Vt ブール値 .Dq Li YES に設定すると、エントロピ源としてシリアル線を使用します。 更なる情報については .Xr random 4 を参照してください。 .It Va entropy_dir .Pq Vt 文字列 .Dq Li NO に設定すると、 .Xr cron 8 によるエントロピキャッシングを無効化します。 そうでない場合、エントロピファイルを格納するディレクトリを設定します。 .It Va entropy_file .Pq Vt 文字列 .Dq Li NO に設定すると、リブートを通じたエントロピキャッシングを無効化します。 そうでない場合、キャッシュしたエントロピを、 リブートの間に格納するために使用するファイル名を設定します。 このファイルはルートファイルシステムに置き、ブート処理のなるべく早期に .Xr random 4 デバイスをシードするべきです。 .It Va entropy_save_sz .Pq Vt 整数 .Nm save-entropy により定期的に保存されるエントロピキャッシュファイルの大きさです。 .It Va entropy_save_num .Pq Vt 整数 .Nm save-entropy により定期的に保存されるエントロピキャッシュファイルの数です。 .It Va ipsec_enable .Pq Vt ブール値 .Dq Li YES に設定すると、起動時に .Xr setkey 8 を .Va ipsec_file に対して実行します。 .It Va ipsec_file .Pq Vt 文字列 .Xr setkey 8 の設定ファイルです。 .It Va dmesg_enable .Pq Vt ブール値 .Dq Li YES に設定すると、ブート時に .Xr dmesg 8 を .Pa /var/run/dmesg.boot に保存します。 .It Va rcshutdown_timeout .Pq Vt 整数 設定した場合、バックグラウンドでウォッチドッグタイマを起動し、 .Xr shutdown 8 が指定した時間 (秒単位) で完了しない場合には .Pa rc.shutdown を終了させます。 .It Va virecover_enable .Pq Vt ブール値 .Dq Li NO に設定すると、 正常終了しなかっった .Xr vi 1 セッションを復旧しようと試みなくなります。 +.It Va ugidfw_enable +システム初期化時に +.Xr mac_bsdextended 4 +モジュールをロードし、デフォルトのルールセットファイルを読み込みます。 +デフォルトは +.Dq Li NO +です。 +.It Va bsdextended_script +.Xr mac_bsdextended 4 +が読み込むデフォルトのルールセットファイルです。 +デフォルトは +.Dq Pa /etc/rc.bsdextended +です。 +.It Va swapoff +.Pq Vt ブール値 +.Dq Li YES +に設定すると、 +シャットダウン時に swap パーティションを削除します。 .It Va ramdisk_units .Pq Vt 文字列 .Xr fstab 5 からマウントする際に、 .Xr mdconfig 8 と .Xr newfs 8 を用いて設定する RAM ディスクユニットのリストです。 ここにリストされたユニット .Ar X のそれぞれは、少なくとも 1 つの型 .Ar type を .Va ramdisk_ Ns Ao Ar X Ac Ns Va _config 変数で指定しなければなりません。 .It Va ramdisk_ Ns Ao Ar X Ac Ns Va _config .Pq Vt 文字列 RAM ディスク .Ar X について、 .Xr mdconfig 8 に渡す引数。 少なくとも .Fl t Ar type は指定しなければなりません。ここで、 .Ar type とは、 .Cm malloc または .Cm swap のいずれかです。 .It Va ramdisk_ Ns Ao Ar X Ac Ns Va _newfs .Pq Vt 文字列 RAM ディスク .Ar X を初期化する際に、 .Xr newfs 8 に渡す引数。 .It Va ramdisk_ Ns Ao Ar X Ac Ns Va _owner .Pq Vt 文字列 RAM ディスクユニット .Ar X がマウントされた後、 .Xr chown 8 に渡す所有権指定情報。 .Xr md 4 デバイスとマウントポイントの両方とも変更されます。 .It Va ramdisk_ Ns Ao Ar X Ac Ns Va _perms .Pq Vt 文字列 RAM ディスクユニット .Ar X がマウントされた後、 .Xr chmod 1 に渡すファイルモード文字列。 .Xr md 4 デバイスとマウントポイントの両方とも変更されます。 .El .Sh 関連ファイル .Bl -tag -width ".Pa /etc/defaults/rc.conf" -compact .It Pa /etc/defaults/rc.conf .It Pa /etc/rc.conf .It Pa /etc/rc.conf.local .El .Sh 関連項目 .Xr catman 1 , .Xr chmod 1 , .Xr gdb 1 , .Xr info 1 , .Xr kbdcontrol 1 , .Xr makewhatis 1 , .Xr vi 1 , .Xr vidcontrol 1 , .Xr ip 4 , .Xr kld 4 , .Xr tcp 4 , .Xr udp 4 , .Xr exports 5 , .Xr motd 5 , .Xr newsyslog.conf 5 , .Xr accton 8 , .Xr amd 8 , .Xr apm 8 , .Xr atm 8 , .Xr chown 8 , .Xr cron 8 , .Xr dhclient 8 , .Xr ifconfig 8 , .Xr inetd 8 , .Xr isdnd 8 , .Xr isdntrace 8 , .Xr kldxref 8 , .Xr lpd 8 , .Xr mdconfig 8 , .Xr mountd 8 , .Xr moused 8 , .Xr mrouted 8 , .Xr named 8 , .Xr newfs 8 , .Xr nfsd 8 , .Xr ntpd 8 , .Xr ntpdate 8 , .Xr pcnfsd 8 , .Xr quotacheck 8 , .Xr quotaon 8 , .Xr rc 8 , .Xr rc.sendmail 8 , .Xr route 8 , .Xr routed 8 , .Xr rpcbind 8 , .Xr rpc.lockd 8 , .Xr rpc.statd 8 , .Xr rwhod 8 , .Xr savecore 8 , .Xr sshd 8 , .Xr swapon 8 , .Xr sysctl 8 , .Xr syslogd 8 , .Xr timed 8 , .Xr usbd 8 , .Xr vinum 8 , .Xr yp 8 , .Xr ypbind 8 , .Xr ypserv 8 , .Xr ypset 8 .Sh 歴史 .Nm ファイルは .Fx 2.2.2 で登場しました。 .Sh 作者 .An Jordan K. Hubbard . Index: head/ja_JP.eucJP/man/man8/boot_i386.8 =================================================================== --- head/ja_JP.eucJP/man/man8/boot_i386.8 (revision 22766) +++ head/ja_JP.eucJP/man/man8/boot_i386.8 (revision 22767) @@ -1,370 +1,370 @@ .\" Copyright (c) 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software written and contributed .\" to Berkeley by William Jolitz. .\" .\" Almost completely rewritten for FreeBSD 2.1 by Joerg Wunsch. .\" .\" Substantially revised for FreeBSD 3.1 by Robert Nordier. .\" .\" 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. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. .\" .\" @(#)boot_i386.8 8.2 (Berkeley) 4/19/94 .\" -.\" %FreeBSD: src/sbin/reboot/boot_i386.8,v 1.46 2004/07/18 21:39:45 silby Exp % +.\" %FreeBSD: src/sbin/reboot/boot_i386.8,v 1.46.2.1 2004/09/30 04:33:52 brooks Exp % .\" $FreeBSD$ .\" -.Dd April 19, 1994 +.Dd September 23, 2004 .Dt BOOT 8 i386 .Os .Sh 名称 .Nm boot .Nd システム立上げ時の手続き .Sh 解説 .Sy 電源断とクラッシュからの回復。 通常、電源復旧時とクラッシュ発生後には、システムは自動的にリブートし ます。ファイルシステムの整合性チェックが自動実行され、途中で失敗しな ければ、システムはマルチユーザ・モードに移行します。 .Pp .Sy コールドスタート。 大多数の i386 PC は、まずフロッピドライブ 0 (ドライブ A: ともいう) からのブートを試み、 それに失敗すると、 ハードディスクドライブ 0 (ドライブ C: もしくは BIOS のドライブ 0x80 ともいう) からブートしようとします。 いくつかの BIOS では、このデフォルトの順序を変えたり、 CD-ROM デバイスをブートデバイスとして含めることができます。 .Pp デフォルトでは 3 段階のブートストラップが使用され、 ブートブロック (ブートストラップの 第 1 および 第 2 段階) から、 これとは別の第 3 段階のブートストラッププログラム .Xr loader 8 へと自動的に制御が移行されます。 この第 3 段階では、 ブート処理において、 ブートブロックにおいて可能なことよりも洗練された制御を提供します。 ブートブロックには、 ディスクやスライスの限られた空間しか与えられないという制約があります。 .Pp しかしながら、第 3 段階をまったく使用せずに済ますこともできます。 このようにするには、ブートブロックパラメータファイル .Pa /boot.config においてカーネル名を指定するか、 .Fl n 無指定時には .Xr loader 8 が起動される前の短い待ち時間 (文字 .Sy - , .Sy \e , .Sy \&| , .Sy / のいずれかが表示されている間) にキーを打ちます。 第 3 段階をロードできない場合にも、第 2 段階においてブートが試みられます。 .Pp .Pa /boot.config は .Ql a パーティションからだけ読み取れることに注意して下さい。 結果として、 .Ql a パーティションのないスライスでは、ブートの過程でユーザが介入する必要があります。 .Pp 本サブセクションの残りの部分では、ブートブロックについてのみ扱います。 .Xr loader 8 プログラムの文書は別にあります。 .Pp ブートブロックがロードされたあとで、次のようなプロンプトが現れます。 .Bd -literal >> FreeBSD/i386 BOOT Default: 0:ad(0,a)/boot/loader boot: .Ed .Pp 自動ブートにおいては、フロッピ もしくはハードディスクのパーティション .Ql a から .Pa /boot/loader をロードしようとします。 この動作は .Ql boot: というプロンプトが出ている間なら、キーボードから適当な文字を 入力することで中断できます。 以下にあげるような入力はブート動作に対する指示として受付けられます。 .Bl -tag -width indent .It Ic \&? ブートファイルを探す際のヒントとして、デフォルトのブートデバイスの ルートディレクトリにあるファイルの名前を表示します。 (パスの最後の部分に .Ic ?\& を指定することもできます。この場合、任意のサブディレクトリの一覧となります。) .Pp .It Xo .Sm off .Ar bios_drive : interface ( unit , Oo Ar slice , Oc Ar part ) .Sm on .Ar filename .Op Fl aCcDdghmnPprsv .Xc ブートファイルとブートフラグを指定します。 .Bl -tag -width indent .It Ar bios_drive BIOS によって認識されるドライブ番号です。 1 つ目のドライブに対しては 0、 2 つ目のドライブに対しては 1、などです。 .It Ar interface そこからブートするコントローラのタイプです。 ブートファイルのイメージをロードするのには BIOS の機能を使用するので、 そのコントローラに対する BIOS サポートが必要となることに注意して下さい。 .Pp サポートされているインタフェースを以下にあげます。 .Pp .Bl -tag -width "adXX" -compact .It ad WD100[2367] とその互換コントローラ上の ST506, IDE, ESDI, RLL ディスク .It fd 5 1/4" または 3 1/2" 高密度 フロッピ .It da サポートされている SCSI コントローラ上の SCSI ディスク .\".It cd .\"CDROM からのブート .El .It Ar unit 使用されているインタフェース上のドライブのユニット番号です。 1 つ 目のドライブに対しては 0、 2 つ目のドライブに対しては 1、などです。 .It Oo Ar slice , Oc Ns Ar part ディスク上の .Bx 部分内のパーティション文字です。 詳しくは -.Xr disklabel 8 +.Xr bsdlabel 8 を参照して下さい。 慣例として、パーティション .Ql a のみがブート可能なイメージを含んでいます。 ディスクにスライス .Pq Dq fdisk パーティション が設けられていた場合、任意の .Ar slice (1 が最初のスライスで 2 が 2 番目のスライス等となります) からブート可能であり、デフォルト (無指定時) はアクティブスライスから、 これがない場合は最初の .Fx スライスからのブートとなります。 指定された .Ar slice が 0 の場合、最初の .Fx スライス .Dq ( 互換 スライスとも呼ばれます) からブートします。 .It Ar filename ブートファイルの (指定されたパーティションのルートディレクトリからの 相対) パス名です。 デフォルトでは .Pa /kernel となります。シンボリックリンクはサポートされていません (ハードリンク は使用できます)。 .It Fl aCcDdghmnPprsv ブートフラグです。 .Pp .Bl -tag -width "-CXX" -compact .It Fl a カーネル初期化中に、ルートファイルシステムとしてマウントされるデバイスを 尋ねて来るようにします。 .It Fl C CDROM からブートします。 .It Fl c ロードしたカーネルに対し、ハードウェアのパラメータを変更するため、 UserConfig を実行します。 .Dv USERCONFIG , INTRO_USERCONFIG , VISUAL_USERCONFIG のいずれかのオプション付きでカーネルが構築された場合、 スクリプト中に .Ic quit コマンドがあったとしても、UserConfig 中にとどまります。 .It Fl D シングルとデュアルのコンソール設定を切り替えます。 シングル設定では、下記の .Fl h オプションの状態によって、コンソールは内部ディスプレイかシリアルポートの いずれかになります。 デュアルコンソール設定では、内部ディスプレイとシリアルポートの両方が、 .Fl h オプションの状態によらず、同時にコンソールになります。 しかし、 デュアルコンソール設定は、ブートプロンプトの間だけでしか効果を持ちません。 一旦カーネルがロードされると、 .Fl h オプションによって指定されたコンソールが唯一のコンソールになります。 .It Fl d カーネルの初期化のできる限り早い段階で DDB カーネルデバッガ .Pf ( Xr ddb 4 を参照) に入ります。 .It Fl g GDB リモートデバッギングプロトコルを使用します。 .It Fl h 内部コンソールとシリアルコンソールの切り替えを行います。 これを使用してコンソールデバイスを変更できます。 例えば、内部コンソールからブートした場合、 カーネルがコンソールデバイスとしてシリアルポートを使用するようにするため、 .Fl h オプションを使用できます。 反対に、シリアルポートからブートした場合、 カーネルがコンソールとして代わりに内部ディスプレイを使用するようにするため、 このオプションを使用できます。 シリアルポートドライバ .Xr sio 4 には、このオプションに優先するフラグがあります。 そのフラグが設定されると、ここで記述した .Fl h オプションとは無関係に、シリアルポートが常にコンソールとして使用されます。 更なる詳細については、マニュアルページ .Xr sio 4 を参照してください。 .It Fl m コンソールを黙らせます。 .It Fl n .Xr loader 8 起動前の、 キー入力によるブート中断を無視します。 .It Fl P キーボードを検出します。 キーボードが発見できなかった場合には、 .Fl D と .Fl h オプションが自動的にセットされます。 .It Fl p デバイスの検出フェーズにおいて、各デバイスがアタッチされるたびに停止します。 .It Fl r ルートファイルシステムを含むデバイスとしてスタティックに config され たデフォルトを使用します .Pf ( Xr config 8 を参照)。 .It Fl s シングルユーザ・モードで立上がるようになります。コンソールが .Dq insecure .Pf ( Xr ttys 5 を参照) に設定されていた場合には、root のパスワードを入力しなければなり ません。 .It Fl v デバイス検出の際 (そしてその後も)、詳細を出力します。 .El .El .El .Pp デフォルトを設定するため、BIOS ドライブ番号, コントローラタイプ, ユニット番号, パーティション, カーネルファイル名と 有効なオプションを .Pa /boot.config に書くこともできます。 .Ql boot: プロンプトでタイプするように、 1 行で書いてください。 .Sh 関連ファイル .Bl -tag -width /boot/loader -compact .It Pa /boot.config ブートブロックに対するパラメータ (必須ではない) .It Pa /boot/boot1 第 1 段階のブートストラップ .It Pa /boot/boot2 第 2 段階のブートストラップ .It Pa /boot/loader 第 3 段階のブートストラップ .It Pa /boot/kernel/kernel デフォルトカーネル .It Pa /boot/kernel.old/kernel 普通は非デフォルトカーネル (必須ではない) .El .Sh 関連項目 .Xr ddb 4 , .Xr ttys 5 , .Xr boot0cfg 8 , +.Xr bsdlabel 8 , .Xr btxld 8 , .Xr config 8 , -.Xr disklabel 8 , .Xr halt 8 , .Xr loader 8 , .Xr reboot 8 , .Xr shutdown 8 .Sh 診断 ディスク関連のエラーが発生すると、 第 2 段階のブートストラップがエラーを報告します。 BIOS が返すものと同じエラーコードを使用し、 例えば .Dq Disk error 0x1 (lba=0x12345678) などと報告します。 エラーコードの一部のリストを示します: .Pp .Bl -tag -width "0x80" -compact .It 0x1 不正な引数 .It 0x2 アドレスマークが見付かりません .It 0x4 セクタが見付かりません .It 0x8 DMA オーバラン .It 0x9 64K 境界を越えて DMA を試みました .It 0xc 不正なメディア .It 0x10 訂正できない CRC/ECC エラー .It 0x20 コントローラの異常 .It 0x40 シークの失敗 .It 0x80 タイムアウト .El .Pp .Sy "注" : 古いマシンや EDD サポート (ディスクパケットインタフェースサポート) が無い マシンでは、 ブートフェーズにアクセスされるブート関連の全ファイルと構造 (カーネルを含みます) は、ディスク上で (BIOS が理解するジオメトリにおいて) シリンダ 1023 以下に置かれることが必要です。 第 2 段階のブートストラップが .Dq Disk error 0x1 を報告する場合、通常はこの条件が満されていないことを意味します。 .Sh バグ このバージョンの .Bx で使用されている -.Xr disklabel 5 +.Xr bsdlabel 5 のフォーマットは、他のアーキテクチャで 使用されている物とは全く異なっています。 .Pp 空間の制約により、 .Fl P オプションにより起動されるキーボード検出は、BIOS が .Dq 拡張 キーボードを検出したかを単にテストするだけです。 .Dq XT/AT キーボード (F11, F12 キーなどを持ちません) を接続した場合、 検出は失敗します。 Index: head/ja_JP.eucJP/man/man8/ipfw.8 =================================================================== --- head/ja_JP.eucJP/man/man8/ipfw.8 (revision 22766) +++ head/ja_JP.eucJP/man/man8/ipfw.8 (revision 22767) @@ -1,2420 +1,2432 @@ .\" -.\" %FreeBSD: src/sbin/ipfw/ipfw.8,v 1.150.2.1 2004/09/16 17:53:22 andre Exp % +.\" %FreeBSD: src/sbin/ipfw/ipfw.8,v 1.150.2.3 2004/10/10 00:57:23 csjp Exp % .\" .\" $FreeBSD$ .\" -.Dd September 13, 2004 +.Dd September 19, 2004 .Dt IPFW 8 .Os .Sh 名称 .Nm ipfw .Nd IP ファイアウォールとトラフィックシェイパの制御プログラム .Sh 書式 .Nm .Op Fl cq .Cm add .Ar rule .Nm .Op Fl acdefnNStT .Brq Cm list | show .Op Ar rule | first-last ... .Nm .Op Fl f | q .Cm flush .Nm .Op Fl q .Brq Cm delete | zero | resetlog .Op Cm set .Op Ar number ... .Nm .Cm enable .Brq Cm firewall | one_pass | debug | verbose | dyn_keepalive .Nm .Cm disable .Brq Cm firewall | one_pass | debug | verbose | dyn_keepalive .Pp .Nm .Cm set Oo Cm disable Ar number ... Oc Op Cm enable Ar number ... .Nm .Cm set move .Op Cm rule .Ar number Cm to Ar number .Nm .Cm set swap Ar number number .Nm .Cm set show .Pp .Nm .Cm table Ar number Cm add Ar addr Ns Oo / Ns Ar masklen Oc Op Ar value .Nm .Cm table Ar number Cm delete Ar addr Ns Op / Ns Ar masklen .Nm .Cm table Ar number Cm flush .Nm .Cm table Ar number Cm list .Pp .Nm .Brq Cm pipe | queue .Ar number .Cm config .Ar config-options .Nm .Op Fl s Op Ar field .Brq Cm pipe | queue .Brq Cm delete | list | show .Op Ar number ... .Pp .Nm .Op Fl cfnNqS .Oo .Fl p Ar preproc .Oo .Ar preproc-flags .Oc .Oc .Ar pathname .Sh 解説 .Nm とそのユーティリティは .Fx の .Xr ipfw 4 ファイアウォールと .Xr dummynet 4 トラフィックシェイパを制御するユーザインタフェースです。 .Pp .Bd -ragged -offset XXXX .Em 注: このマニュアルページは 2002 年 7 月に -.Fx -CURRENT に導入され +.Fx 5.0 +に導入され .Nm ipfw2 としても知られている .Nm の新バージョンについて説明しています。 .Nm ipfw2 は旧版のファイアウォール .Nm ipfw1 のスーパセットです。この 2 つの違いはセクション .Sx IPFW2 拡張 に列挙されています。古いルールセットを書き直し、より効率的にするために、 ここを読むことをお勧めします。 .Fx -STABLE で +4.x で .Nm ipfw2 を実行する手順については、セクション -.Sx FreeBSD-STABLE で IPFW2 を使う +.Sx FreeBSD 4.x で IPFW2 を使う を参照下さい。 .Ed .Pp .Nm の設定、もしくは .Em ルールセット は、1 から 65535 までの番号をつけられた .Em ルール のリストからなります。 パケットは プロトコルスタック中のいくつかの箇所から .Nm に渡されます (パケットの発信元と宛先によっては、 .Nm は同じパケットに対して複数回起動させられる可能性があります)。 ファイアウォールに渡されるパケットは ファイアウォールの .Em ルールセット 中のルールそれぞれに対して照合されます。 .Pp マッチした場合、マッチしたルールに対応するアクションが実行されます。 アクションと実際のシステムの設定によっては、 マッチしたルールの後のルールでさらに処理を行うために パケットがファイアウォールに再注入されることがあります。 .Pp .Nm ルールセットには常に .Em デフォルト ルール (番号 65535) が含まれます。 このルールは変更も削除もできず、 全パケットにマッチします。 .Em デフォルト ルールに関連付けられるアクションは .Cm deny か .Cm allow のどちらかになりますが、 これはどのようにカーネルを設定したかに依存します。 .Pp ルールセットが オプション .Cm keep-state または .Cm limit 付きのルールを含む場合、 .Nm は .Em ステートフル (状態依存型) で動作します。すなわち、あるマッチの結果、 マッチしたパケットのパラメータにちょうど一致するルールが 動的に生成されます。 .Pp これらの動的ルールの生存時間は有限で、 .Cm check-state または .Cm keep-state または .Cm limit ルールが最初に生じた場所でチェックされます。 動的ルールは、普通、正当なトラフィックをオンデマンドで ファイアウォールを通過させるために用います。 .Nm のステートフルな動作について更に情報が必要ならば、 以下の .Sx ステートフルファイアウォール セクションと .Sx 使用例 セクションを参照して下さい。 .Pp 全てのルール(動的ルールを含む)は、 関連するカウンタをいくつか持っています。それらは、 パケットカウント、バイトカウント、ログカウント、 最後にマッチした時刻を示すタイムスタンプです。 カウンタは、 .Nm コマンドによって表示することができ、またリセットすることができます。 .Pp ルールの追加は .Cm add コマンドにて可能です。 ルールひとつひとつ、またはまとめての削除は .Cm delete コマンドにて可能であり、(セット 31 以外の) すべてのルールの削除は .Cm flush コマンドにて可能です。 ルールの表示 (オプションでカウンタ内容を含めることができます) は、 .Cm show コマンドおよび .Cm list コマンドにて可能です。 最後に、カウンタのリセットは .Cm zero コマンドおよび .Cm resetlog コマンドにて可能です。 .Pp また、各ルールは 32 個の 異なる .Em セット の 1 つに所属し、 セットに対する不可分な操作、例えば 有効化・無効化・セットの入れ換え・セット内の全ルールを別のセットへ移動・ セット内の全ルールの削除などを行うための .Nm コマンドがあります。 これらは一時的な設定をインストールしたり設定のテストを行ったりするときに 便利です。 .Em セット に関する詳細はセクション .Sx ルールセット を参照して下さい。 .Pp 次のオプションが利用可能です: .Bl -tag -width indent .It Fl a ルールのリストを表示する際に、 カウンタ値を示します。 .Cm show コマンドは、このオプションを暗黙的に指定しただけのものです。 .It Fl b アクションとコメントのみを表示します。ルールのボディは表示しません。 .Fl c が暗黙のうちに指定されます。 .It Fl c ルールを入力したり参照したりするときに、 コンパクトな書式でルールを表示します。 つまり、ルールが何の追加情報も持たないときは、 オプショナルな文字列 "ip from any to any" を表示しません。 .It Fl d ルールのリストを表示する際に、 静的ルールに加えて動的ルールも表示します。 .It Fl e ルールのリストを表示する際に、 もし .Fl d オプションが指定されていれば、 期限切れの動的ルールも表示します。 .It Fl f 誤って使用すると問題を起す可能性のあるコマンド、 .No すなわち Cm flush に対して、実行の確認を行いません。 プロセスに関連付けられた tty が無い場合、このオプションが 暗黙のうちに指定されたとして処理されます。 .It Fl n コマンド文字列の文法だけをチェックし、 実際にはカーネルには渡しません。 .It Fl N 出力に含まれるアドレスとサービス名の名前解決を試みます。 .It Fl q .Cm add , .Cm zero , .Cm resetlog , .Cm flush を実行する際、動作について報告しません (暗黙のうちに .Fl f が指定されます)。 スクリプト (例えば .Ql sh\ /etc/rc.firewall ) の中で複数の .Nm コマンドを実行してルールを変更する場合や、 リモートログインセッション経由で多数の .Nm ルールを含むファイルを処理することによりルールを変更する場合に 有用です。 通常 (冗長) モードで (デフォルトカーネル設定で) flush を行った場合、 メッセージを表示します。 すべてのルールが捨てられますので、 メッセージはログインセッションへ渡せません。 つまり、リモートログインセッション経由の場合、セッションはクローズされ、 残りのルールセットは処理されません。 この状態から回復するためにはコンソールへのアクセスが必要になります。 .It Fl S ルールのリストを表示する際に、 各ルールが属する .Em セット を表示します。 このフラグが指定されていなければ、 無効化されているルールは表示されません。 .It Fl s Op Ar field パイプ経由でリスト出力している際に、4 つのカウンタの 1 つについて 整列させます (総パケット数/バイト数または現在のパケット数/バイト数)。 .It Fl t ルールのリストを表示する際に、 最後にマッチしたタイムスタンプを表示します (ctime() で変換されます)。 .It Fl T ルールのリストを表示する際に、 最後にマッチしたタイムスタンプを表示します (基準時点からの秒で表示されます)。 この書式の方が、スクリプトでの後処理に向いています。 .El .Pp 冒頭の書式の行で示したように、 設定を簡単にするため、 ルールを .Nm に処理させるファイルに記述することができます。 .Ar pathname には絶対パス名を使用する必要があります。 このファイルからは 1 行ずつ読み込まれ、 .Nm ユーティリティの引数として受け付けられます。 .Pp .Fl p Ar preproc を使用して、 .Ar pathname がパイプされるプリプロセッサを指定することもできます。 有用なプリプロセッサには、 .Xr cpp 1 と .Xr m4 1 があります。 .Ar preproc の最初の文字がスラッシュ .Pq Ql / から始まらない場合、 .Ev PATH を使用した通常の名前検索が行われます。 .Nm が実行されるときまでに全ファイルシステムが (まだ) マウントされないような環境 (例えば NFS 経由でマウントされる場合) では、このことに注意してください。 ひとたび .Fl p が指定されると、以降の引数がプリプロセッサに渡されます。 これにより、(ローカルホスト名により条件付けするなど) 柔軟性のある設定ファイルを作成可能となり、IP アドレスのように 頻繁に必要となる引数を集中管理するためのマクロを使用可能となります。 .Pp 後述の .Sx トラフィックシェイパ (DUMMYNET) 設定 セクションで示すように、 .Nm .Cm pipe および .Cm queue コマンドを使用して、トラフィックシェイパを構築可能です。 .Pp 世界とカーネルの調子が外れると、 .Nm ABI が壊れてしまい、いかなるルールも追加できなくなります。 これはブートに悪影響があり得ます。 .Nm .Cm disable .Cm firewall で、一時的にファイアウォールを無効化することで、 ネットワークアクセスを再取得して問題解決できます。 .Sh パケットフロー 1 個のパケットが、プロトコルスタックの複数の場所で、 有効なルールセットに対しチェックされます。このチェックは いくつかの sysctl 変数に基づきます。 これらの場所と変数を以下に示します。 ルールセットを正しく設計するためには、この図をよく理解する ことが大切です。 .Bd -literal -offset indent ^ to upper layers V | | +----------->-----------+ ^ V [ip_input] [ip_output] net.inet.ip.fw.enable=1 | | ^ V [ether_demux] [ether_output_frame] net.link.ether.ipfw=1 | | +-->--[bdg_forward]-->--+ net.link.ether.bridge_ipfw=1 ^ V | to devices | .Ed .Pp 上図に示されるように、 同一のパケットがファイアウォールを通過する回数は、 パケットの発信元や宛先、システムの設定により、 0 回から 4 回の範囲で変動します。 .Pp パケットがスタックを通過するにつれヘッダが削除 / 追加される 可能性があり、ヘッダがチェックに使えたり使えなかったりする ことに注意して下さい。 例えば、外から入ってくるパケットは .Cm ether_demux() から .Nm が実行されるときには MAC ヘッダを含んでいるはずですが、 その同じパケットが、 .Cm ip_input() から .Nm が実行されたときには MAC ヘッダは取り除かれているはずです。 .Pp また、各パケットは常にルールセット全体に対しチェックされることにも 注意してください。 これは、チェックが生じた場所、パケットのソースに関係ありません。 実行された箇所によっては無効となるような マッチパターンやアクション (例えば、 .Cm ip_input() 中で MAC ヘッダとマッチを試みるようなもの) をルールが含んでいるなら、そのパターンはマッチしないことになります。 とはいえ、そのようなパターンの前に .Cm not オペレータを記述すれば、このパターンは .Em 常に そのようなパケットにマッチすることになります。 したがって、必要に応じ、生じ得る場所の違いを理解して、 適切なルールセットを記述することはプログラマの責任です。 そこで .Cm skipto ルールが役に立つことでしょう。 例えば次のようにします。 .Bd -literal -offset indent # ether_demux または bdg_forward からのパケット ipfw add 10 skipto 1000 all from any to any layer2 in # ip_input からのパケット ipfw add 10 skipto 2000 all from any to any not layer2 in # ip_output からのパケット ipfw add 10 skipto 3000 all from any to any not layer2 out # ether_output_frame からのパケット ipfw add 10 skipto 4000 all from any to any layer2 out .Ed .Pp (そうです、今のところ ether_demux と bdg_forward とを 区別する方法はありません)。 .Sh 文法 一般に、各キーワードもしくは引数は、別々のコマンド行引数として与えられ、 その前や後には空白は付きません。 キーワードは、大文字小文字を区別しますが、 引数は、その性質に依存し、大文字小文字を区別するかもしれませんし、 しないかもしれません (例えば uid は区別しますが、hostname はしません)。 .Pp .Nm ipfw2 では、コンマ ',' の後に空白を入れ、行を読み易くできます。 また、コマンド全体 (フラグを含む) を、単一引数に入れられます。 例えば、次の書式は等価です: .Bd -literal -offset indent ipfw -q add deny src-ip 10.0.0.0/24,127.0.0.1/8 ipfw -q add deny src-ip 10.0.0.0/24, 127.0.0.1/8 ipfw "-q add deny src-ip 10.0.0.0/24, 127.0.0.1/8" .Ed .Sh ルール書式 .Nm ルールの書式は次の通りです。 .Bd -ragged -offset indent .Op Ar rule_number .Op Cm set Ar set_number .Op Cm prob Ar match_probability .br .Ar " " action .Op Cm log Op Cm logamount Ar number .Ar body .Ed .Pp この中で、ルールのボディ (body) は次の中からどの情報を使用して パケットをフィルタするかを指定します。 .Pp .Bl -tag -width "Source and dest. addresses and ports" -offset XXX -compact .It レイヤ 2 ヘッダフィールド 可能ならば .It IPv4 プロトコル TCP, UDP, ICMP など .It 送信元および宛先のアドレスとポート .It 方向 セクション .Sx パケットフロー を参照して下さい .It 送信および受信インタフェース 名前またはアドレス .It その他の IP ヘッダフィールド バージョン、サービスタイプ、データグラム長、識別子、 フラグメントフラグ (0 でない IP オフセット)、 生存時間 .It IP オプション .It その他の TCP ヘッダフィールド TCP フラグ (SYN, FIN, ACK, RST など)、 シーケンス番号、確認応答番号、ウィンドウ .It TCP オプション .It ICMP タイプ ICMP パケットの場合 .It ユーザ/グループ ID パケットをローカルソケットに関連づけることが可能な場合 .El .Pp 上記の情報のうち幾つか、 例えば、送信元 MAC アドレスまたは IP アドレスと TCP/UDP ポート は容易に詐称が可能であることに注意して下さい。 したがって、これらのフィールドのみでフィルタすることは 必ずしも望ましい結果を保証しません。 .Bl -tag -width indent .It Ar rule_number 各ルールは、1 から 65535 の範囲の .Ar rule_number に関連づけられており、 後者は .Em デフォルト ルールのために予約されています。 ルールはルール番号の順にチェックされます。 複数のルールが同一の番号を持つことが可能で、 その場合は追加された順序でチェックされます (表示する場合も同様です) 。 番号の指定なしでルールが入力された場合、 カーネルは、そのルールが .Em デフォルト ルールより前にあるルールの中で最後になるように割り当てます。 自動的につけられるルール番号は、 デフォルトを除いた中で最後となるルール番号を、 sysctl 変数 .Ar net.inet.ip.fw.autoinc_step の値だけ増加させて割り当てられます。 この変数のデフォルトは 100 です。 もし、この操作が (例えば許可された最大ルール番号を越えるといった理由で) 不可能であれば、 最後のデフォルトでない値が代わりに使用されます。 .It Cm set Ar set_number 各ルールは 0 から 31 の範囲の .Ar set_number に関連づけられています。 セットは個別に無効化したり有効化したりすることができます。 したがって、このパラメータは不可分なルールセット操作を行うために 必要不可欠なものです。 このパラメータを使うことで、ルールをまとめて削除することを 単純にすることもできます。 セット番号を指定せずにルールを入力した場合、 セット 0 が使用されます。 .br セット 31 は特別であり、無効化できませんし、この中のルールは .Nm ipfw flush コマンドで削除できません (しかし、 .Nm ipfw delete set 31 コマンドで削除するこはできます)。 セット 31 はまた、 .Em デフォルト ルールとしても使用されます。 .It Cm prob Ar match_probability 指定した確率 (0 から 1 までの浮動小数点数です) でしかマッチしないマッチを宣言します。 ランダムにパケットを落とす応用や、 .Xr ( dummynet 4 と共に使用して) パケット到達順序の乱れを引き起こす複数経路の効果をシミュレートする 応用など、多くの応用に有用です。 .Pp 注: この条件は、他の条件の前にチェックされます。 これには、keep-state や check-state といった副作用のあるものも含まれます。 .It Cm log Op Cm logamount Ar number パケットが .Cm log キーワードを持ったルールにマッチした場合、 メッセージが .Xr syslogd 8 に .Dv LOG_SECURITY ファシリティで記録されます。 sysctl 変数 .Em net.inet.ip.fw.verbose が 1 (カーネルが .Dv IPFIREWALL_VERBOSE でコンパイルされていればこれがデフォルトです) に設定されており、 そのルールについてこれまで記録されたパケットの数が その .Cm logamount パラメータを越えていなければ、記録が行われます。 .Cm logamount が指定されていなければ、制限は sysctl 変数 .Em net.inet.ip.fw.verbose_limit から参照されます。 両者の値が 0 であれば記録の制限は取り除かれます。 .Pp 一度制限に達したなら、 このエントリに対するロギングカウンタかパケットカウンタをクリアすれば 記録を再び有効にすることができます。 .Cm resetlog コマンドを参照して下さい。 .Pp 注: ログが実行されるのは、 すべてのパケットマッチ条件が成功裏に確認された後であり、 最後の動作 (受理や拒否等) をパケットに実施する前です。 .El .Ss ルールアクション ルールは次に示すアクションの 1 つと関連づけることができます。 これはパケットがルールのボディにマッチしたときに実行されます。 .Bl -tag -width indent .It Cm allow | accept | pass | permit ルールにマッチするパケットを受け付けます。 検索は終了します。 .It Cm check-state 動的ルールセットに対してパケットのチェックを行ないます。 マッチした場合、 その動的ルールを生成したルールに関連づけられたアクションを実行し、 マッチしなかった場合、次のルールに移ります。 .br .Cm check-state ルールはボディを持ちません。 .Cm check-state ルールが見つからないときは、 動的ルールセットは最初の .Cm keep-state ルール、もしくは .Cm limit ルールの場所でチェックされます。 .It Cm count ルールにマッチした全てのパケットのカウンタを更新します。 検索は次のルールへ続行します。 .It Cm deny | drop ルールにマッチした全てのパケットを破棄します。 検索は終了します。 .It Cm divert Ar port ルールにマッチするパケットを ポート .Ar port にバインドされている .Xr divert 4 ソケットに送出します。 検索は終了します。 .It Cm fwd | forward Ar ipaddr Ns Op , Ns Ar port マッチしたパケットの次のホップを .Ar ipaddr に変更します。 これには IP アドレスとして、数字 4 つ組形式 またはホスト名が使用できます。 このルールにマッチした場合、検索は終了します。 .Pp .Ar ipaddr がローカルアドレスの場合、マッチしたパケットはローカルマシンの .Ar port (または、ルールで指定されていない場合はそのパケットのポート番号) に転送されます。 .br .Ar ipaddr がローカルアドレスでない場合、 ポート番号は (指定されていても) 無視され、 パケットは ローカルな経路テーブルに存在するその IP に対する経路を使用して リモートアドレスに転送されます。 .br .Ar fwd ルールはレイヤ 2 パケット (それらは ether_input, ether_output, bridged で受信されます) にはマッチしません。 .br .Cm fwd アクションはパケットの内容をまったく変更しません。 実際、宛先アドレスが修正されずに残るので、 転送先システムがそのようなパケットを取り込むルールを持たない限り、 他のシステムに転送されたパケットは、通常転送先のシステムで拒否されます。 ローカルに転送されるパケットの場合、 ソケットのローカルアドレスはパケットが元々持っていた 宛先アドレスに設定されます。 このことによって .Xr netstat 1 が出力するエントリは若干奇妙な見え方になりますが、 これは透過プロキシサーバでの使用を意図しています。 .It Cm pipe Ar pipe_nr パケットを .Xr dummynet 4 .Dq パイプ (バンド幅制限、遅延などに使用されます) へ渡します。 詳しい情報については .Sx トラフィックシェイパ (DUMMYNET) 設定 セクションを参照してください。 検索は終了します。 しかし、パイプから抜けたときに .Xr sysctl 8 変数 .Em net.inet.ip.fw.one_pass がセットされていない場合、 パケットは、すぐ次のルールから始まるファイアウォールコードへ 再度渡されます。 .It Cm queue Ar queue_nr パケットを .Xr dummynet 4 .Dq キュー (WF2Q+ を使ったバンド幅制限に使用されます) へ渡します。 .It Cm reject (非推奨)。 .Cm unreach host と同義です。 .It Cm reset このルールにマッチしたパケットを破棄します。 さらに、そのパケットが TCP パケットであれば、 TCP リセット (RST) 通知を送出しようと試みます。 検索は終了します。 .It Cm skipto Ar number それ以降のルールのうち .Ar number より小さな番号のものすべてを飛び越して、 .Ar number 以上の番号のルールで最初に存在するものから、検索を継続します。 .It Cm tee Ar port このルールにマッチしたパケットの複製を、 ポート .Ar port にバインドされた .Xr divert 4 ソケットに送出します。 検索は、その次のルールへ継続されます。 .It Cm unreach Ar code このルールにマッチしたパケットを破棄し、 コード .Ar code の ICMP 到達不可通知を送出しようと試みます。 ここで .Ar code は 0 から 255 の数字、または次のエイリアスのいずれかです: .Cm net , host , protocol , port , .Cm needfrag , srcfail , net-unknown , host-unknown , .Cm isolated , net-prohib , host-prohib , tosnet , .Cm toshost , filter-prohib , host-precedence , .Cm precedence-cutoff 。 検索は終了します。 .El .Ss ルールボディ ルールのボディは 0 個以上のパターン (送信元と宛先アドレスやポートの指定、 プロトコルオプション、受信または送信インタフェースの指定など) を含みます。このパターンは パケットを識別するためにマッチしなければならないものです。 一般に、パターンは (暗黙的に) .Cm and オペレータで接続されます -- つまり、ルールがマッチするためには 全てがマッチしなければなりません。 個々のパターンには、マッチの結果を反転させるために .Cm not オペレータを前置することができます。 これは次のようになります。 .Pp .Dl "ipfw add 100 allow ip from not 1.2.3.4 to any" .Pp さらに、 次のように .Cm or オペレータを使用し、 丸括弧 () や ブレース {} で括られた内部にパターンを列挙することで、 新しいマッチパターンのセット ( .Em 論理和ブロック ) を構築することができます: .Pp .Dl "ipfw add 100 allow ip from { x or not y or z } to any" .Pp 括弧のレベルは 1 つのみが可能です。 ほとんどのシェルが丸括弧やブレースに特別な意味を持たせていることに 注意して下さい。 したがって、そのような解釈が起こらないようにバックスラッシュ \\ を その前に置くことを勧めます。 .Pp ルールのボディは、一般に送信元と宛先アドレスの指定を含まなければなりません。 キーワード .Ar any は必須フィールドの内容が重要でないことを指定するために 様々な箇所で使用することができます。 .Pp ルールボディは以下の書式で指定します。 .Bd -ragged -offset indent .Op Ar proto Cm from Ar src Cm to Ar dst .Op Ar options .Ed .Pp 最初の部分 (proto from src to dst) は .Nm ipfw1 との後方互換のためにあります。 .Nm ipfw2 では、任意のマッチパターン (MAC ヘッダ、IPv4 プロトコル、アドレス、ポートを含む) が .Ar options セクションで指定できます。 .Pp ルールフィールドは以下の意味を持ちます。 .Bl -tag -width indent .It Ar proto : protocol | Cm { Ar protocol Cm or ... } .It Ar protocol : Oo Cm not Oc Ar protocol-name | protocol-number IPv4 におけるプロトコル を、数字や名前で指定します (完全なリストは .Pa /etc/protocols を参照して下さい)。 .Cm ip または .Cm all のキーワードを使用すると、すべてのプロトコルがマッチします。 .Pp .Cm { Ar protocol Cm or ... } 書式 .Em ( 論理和ブロック ) は、簡便さのためだけに提供されており、価値が低下しています。 .It Ar src No and Ar dst : Bro Cm addr | Cm { Ar addr Cm or ... } Brc Op Oo Cm not Oc Ar ports 単一のアドレス (またはリスト、後述) で、 オプションとして、その後に .Ar ports 指示子を続けて置くことができます。 .Pp 第 2 の書式 (複数アドレス付きの .Em 論理和ブロック ) は、簡便さのためだけに提供されており、価値が低下しています。 .It Ar addr : Oo Cm not Oc Bro .Cm any | me | .Cm table Ns Pq Ar number Ns Op , Ns Ar value .Ar | addr-list | addr-set .Brc .It Cm any 任意の IP アドレスがマッチします。 .It Cm me システムのインタフェースに設定された任意の IP アドレスがマッチします。 アドレスのリストはパケットが解析されるときに評価されます。 .It Cm table Ns Pq Ar number Ns Op , Ns Ar value 検索表 .Ar number に存在するエントリに対応する任意の IP アドレスがマッチします。 オプションの 32 ビット符号なし整数 .Ar value も指定された場合には、その値のエントリにのみマッチします。 検索表に関する詳細は下記の .Sx 検索表 セクションを参照して下さい。 .It Ar addr-list : ip-addr Ns Op Ns , Ns Ar addr-list .It Ar ip-addr : 次の方法で指定される、ホストもしくはサブネットのアドレス: .Bl -tag -width indent .It Ar numeric-ip | hostname ドットで区切った数字 4 つ組またはホスト名で指定した、 1 つの IPv4 アドレスがマッチします。 ホスト名の名前解決は、そのルールがファイアウォールのリストに 追加されるときに行われます。 .It Ar addr Ns / Ns Ar masklen ベースとなる .Ar addr (ドットで区切った数字 4 つ組またはホスト名で指定します) と .Cm masklen ビット幅のマスク に一致する全てのアドレスがマッチします。 例えば、1.2.3.4/25 は 1.2.3.0 から 1.2.3.127 までの 全ての IP アドレスがマッチすることになります。 .It Ar addr Ns : Ns Ar mask ベースアドレスが .Ar addr (ドットで区切った 4 つの数字またはホスト名で指定されます) であり、マスクが .Ar mask (ドットで区切った 4 つの数字で指定されます) である全てのアドレスにマッチします。 例えば、1.2.3.4:255.0.255.0 は、1.*.3.* にマッチします。 この形式は、連続でないマスクの場合にだけ使用することを推奨します。 連続なマスクの場合は、よりコンパクトでより間違いにくい、 .Ar addr Ns / Ns Ar masklen を使います。 .El .It Ar addr-set : addr Ns Oo Ns / Ns Ar masklen Oc Ns Cm { Ns Ar list Ns Cm } .It Ar list : Bro Ar num | num-num Brc Ns Op Ns , Ns Ar list ベースアドレスが .Ar addr (ドットで区切った数字 4 つ組またはホスト名で指定します) であり、最後のバイトがブレース {} の中に列挙されている 全てのアドレスがマッチします。 ブレースと数字の間には空白を置いてはいけないことに注意して下さい (コンマの後の空白は許されています)。 リストの要素は、単一項目もしくは範囲が指定可能です。 .Ar masklen フィールドはアドレスのセットのサイズに制限をつけるために使用され、 24 から 32 の間の任意の値をとることができます。 指定されない場合 24 が仮定されます。 .br この書式は 1 つのルールでまばらなアドレス群を取り扱うときに 特に便利です。 ビットマスクを使用してマッチを行うので、 定数時間で処理でき、ルールセットの複雑さが劇的に減少します。 .br 例えば、アドレスを 1.2.3.4/24{128,35-55,89} として指定した場合、 次のアドレスがマッチします: .br 1.2.3.128, 1.2.3.35 to 1.2.3.55, 1.2.3.89 . .It Ar ports : Bro Ar port | port Ns \&- Ns Ar port Ns Brc Ns Op , Ns Ar ports (TCP や UDP などのように) ポート番号をサポートしている プロトコルについて、オプションとして、 .Cm ports を指定することができます。 1 つ以上のポートまたはポートの範囲を空白なしのコンマ区切りで指定します。 さらにオプションとして、 .Cm not オペレータを付加して指定することができます。 記号 .Ql \&- による表現は、ポート範囲 (両端含む) を指定します。 .Pp ポート数値の代わりに (ファイル .Pa /etc/services から取った) サービス名を使用できます。 ポートリストの長さは 30 ポートまたはポート範囲に制限されていますが、 ルールの .Cm options セクションで .Em 論理和ブロック を使用することにより、より広い範囲を指定することができます。 .Pp バックスラッシュ .Pq Ql \e を使用することにより、サービス名中のダッシュ .Pq Ql - 文字をエスケープ可能です (シェルから入力するとき、 シェル自身がバックスラッシュをエスケープ文字として解釈するのをさけるために、 バックスラッシュを 2 回タイプしなければなりません)。 .Pp .Dl "ipfw add count tcp from any ftp\e\e-data-ftp to any" .Pp 断片化されたパケットでオフセットが非 0 のもの (すなわち、最初の断片ではないもの) は、 1 つ以上のポート指定を持つルールにはマッチしません。 断片化されたパケットへのマッチングに関する詳細は .Cm frag オプションを参照してください。 .El .Ss ルールオプション (マッチパターン) ルール内で追加のマッチパターンを使用することができます。 これらはルール内に 0 個以上置けるので .Em オプション と呼ばれており、オプションで .Cm not オペランドを前置することができ、 .Em 論理和ブロック としてグループ化することが可能です。 .Pp 以下のマッチパターンが使用できます (アルファベット順に並べています)。 .Bl -tag -width indent .It Cm // this is a comment. 指定したテキストを、ルール中にコメントとして挿入します。 // に続くすべてがコメントとして扱われ、ルール中に格納されます。 コメントのみのルールを持つことも可能であり、それは .Cm count アクションに続いてコメントが表示されます。 .It Cm bridged ブリッジされるパケットにのみマッチします。 .It Cm dst-ip Ar ip-address 宛先 IP アドレスが引数で指定したアドレスの 1 つである IP パケットにマッチします。 .It Cm dst-port Ar ports 宛先ポートが引数で指定したポートの 1 つである IP パケットにマッチします。 .It Cm established RST か ACK ビットがセットされている TCP パケットにマッチします。 .It Cm frag IP データグラムのフラグメントであり、かつ、最初のフラグメントでない パケットにマッチします。 これらのパケットは次のプロトコルヘッダ (例えば TCP, UDP) を持たないので、 これらのヘッダを調べるオプションはマッチすることができないことに 注意して下さい。 .It Cm gid Ar group .Ar group によって送信された、またはそれに対して受信された 全ての TCP もしくは UDP パケットにマッチします。 .Ar group は名前か数値で指定することができます。 +システムのハードロックを引き起こすかも知れないロック順序問題を +避けるために、このオプションは debug.mpsafenet=0 を +設定した時のみ使用してください。 .It Cm jail Ar prisonID prison ID が .Ar prisonID である jail によって送信された、またはそれに対して受信された 全ての TCP もしくは UDP パケットにマッチします。 +システムのハードロックを引き起こすかも知れないロック順序問題を +避けるために、このオプションは debug.mpsafenet=0 を +設定した時のみ使用してください。 .It Cm icmptypes Ar types .Ar types で指定したリスト中に存在する ICMP タイプを持つ ICMP パケットにマッチします。 リストはタイプおのおのをコンマで区切ったものです。 .Em 範囲は許されません。 サポートされている ICMP タイプは次の通りです。 .Pp エコー応答 .Pq Cm 0 , 宛先到達不可 .Pq Cm 3 , 発信元抑制 .Pq Cm 4 , リダイレクト .Pq Cm 5 , エコー要求 .Pq Cm 8 , ルータ広告 .Pq Cm 9 , ルータ要請 .Pq Cm 10 , 時間超過 .Pq Cm 11 , IP ヘッダ異常 .Pq Cm 12 , タイムスタンプ要求 .Pq Cm 13 , タイムスタンプ応答 .Pq Cm 14 , インフォメーション要求 .Pq Cm 15 , インフォメーション返答 .Pq Cm 16 , アドレスマスク要求 .Pq Cm 17 , アドレスマスク応答 .Pq Cm 18 .It Cm in | out それぞれ到着または送出パケットにマッチします。 .Cm in と .Cm out は互いに排他的です (実際、 .Cm out は .Cm not in Ns として実装されています)。 .It Cm ipid Ar id-list .Cm ip_id フィールドが .Ar id-list に含まれる IP パケットにマッチします。 .Ar id-list は、単一の値か、 .Ar ports と同等の方法で指定される、値のリストか範囲です。 .It Cm iplen Ar len-list ヘッダとデータを含んだ全体の長さが .Ar len-list に含まれる IP パケットにマッチします。 .Ar len-list は、単一の値か、 .Ar ports と同等の方法で指定される、値のリストか範囲です。 .It Cm ipoptions Ar spec .Ar spec で指定したコンマ区切りリストオプションを含む IP ヘッダを持つ パケットにマッチします。 IP オプションは次のものがサポートされています: .Pp .Cm ssrr (ストリクトソースルーティング), .Cm lsrr (ルーズソースルーティング), .Cm rr (レコードルート), .Cm ts (タイムスタンプ)。 .Ql \&! を置くことで特定のオプションが存在しないという記述ができます。 .It Cm ipprecedence Ar precedence 先行フィールドが .Ar precedence に等しい IP パケットにマッチします。 .It Cm ipsec IPSEC ヒストリを持つパケットにマッチします (すなわち、入力パケットが IPSEC でカプセル化されており、 カーネルが IPSEC と IPSEC_FILTERGIF のオプションをサポートし、 正しくパケットのカプセル化を解除できた場合です)。 .Pp .Cm ipsec を指定することは、 .Cm proto Ar ipsec を指定することとは違います。 何故なら後者は、IPSEC カーネルサポートの有無および IPSEC データの正当性 にかかわらず、特定の IP プロトコルフィールドのみを見るからです。 .Pp 更に、IPSEC サポート無しのカーネルでは、 このオプションは黙って無視されることに注意してください。 この場合、このフラグを指定してもルール処理に影響が無く、あたかも .Cm ipsec フラグが指定されていないかのように当該ルールが処理されます。 .It Cm iptos Ar spec .Ar spec で指定したコンマ区切りリストのサービスタイプを含む .Cm tos フィールドを持つ IP パケットにマッチします。 サポートされているサービスの IP タイプは次の通りです。 .Pp .Cm lowdelay .Pq Dv IPTOS_LOWDELAY , .Cm throughput .Pq Dv IPTOS_THROUGHPUT , .Cm reliability .Pq Dv IPTOS_RELIABILITY , .Cm mincost .Pq Dv IPTOS_MINCOST , .Cm congestion .Pq Dv IPTOS_CE 。 .Ql \&! を置くことで特定のオプションが存在しないという記述ができます。 .It Cm ipttl Ar ttl-list 生存時間が .Ar ttl-list に含まれる IP パケットにマッチします。 .Ar ttl-list は、単一の値か、 .Ar ports と同等の方法で指定される、値のリストか範囲です。 .It Cm ipversion Ar ver IP バージョンフィールドが .Ar ver である IP パケットにマッチします。 .It Cm keep-state マッチする際に、ファイアウォールは動的ルールを作成します。 作成されるルールは、デフォルトでは、同じプロトコルを使用している 発信元と宛先 IP/ポート間での双方向のトラフィックにマッチするような 動作となります。 このルールには有限の生存時間 .Pf ( Xr sysctl 8 変数の集合により制御されます) があり、 生存時間はマッチするパケットが見つかるたびにリフレッシュされます。 .It Cm layer2 レイヤ 2 のパケット、 つまり、 ether_demux() と ether_output_frame() から .Nm へ渡されるパケットのみにマッチします。 .It Cm limit Bro Cm src-addr | src-port | dst-addr | dst-port Brc Ar N ファイアウォールは、 このルールで指定したものと同じパラメータの集合を持つ接続を、 .Ar N 個だけ許可します。 1 つ以上の発信元と宛先アドレスおよびポートが指定できます。 .It Cm { MAC | mac } Ar dst-mac src-mac 与えられた .Ar dst-mac アドレスと .Ar src-mac アドレスを持つパケットにマッチします。 アドレスは、 .Cm any キーワード (任意の MAC アドレスにマッチします) または コロンで区切った 16 進数 6 個の組で指定します。 この 6 個組アドレスの後ろには、オプションとして、 重要なビットを表現するマスクをつけることができます。 マスクは次のいずれかの方法で指定可能です: .Bl -enum -width indent .It スラッシュ .Pq / に続けて、重要なビット数を指定します。 例えば、重要なビットが 33 ビットであるアドレスは次のように指定します: .Pp .Dl "MAC 10:20:30:40:50:60/33 any" .Pp .It アンパサンド .Pq & に続けて、 コロン区切りの 6 組の 16 進数として指定されるビットマスクを指定します。 例えば、最後の 16 ビットが重要であるアドレスは次のように指定します: .Pp .Dl "MAC 10:20:30:40:50:60&00:00:00:00:ff:ff any" .Pp 多くのシェルでアンパサンド文字は特別な意味を持ちますので、 普通はエスケープが必要であることに注意してください。 .Pp .El MAC アドレスの順序 (宛先が最初で 2 番目に発信元) は 物理的な線上のものと同じですが、 IP アドレスで使用されるものとは反対であることに注意して下さい。 .It Cm mac-type Ar mac-type イーサネットタイプフィールドが 引数で指定したものの 1 つと一致する パケットにマッチします。 .Ar mac-type は .Cm port numbers と同じ方法で指定します (つまり、単一の値または範囲が、1 個以上コンマで区切られたものです)。 .Em vlan , ipv4 , ipv6 のような既知の値に対しては、シンボル名称を使用することができます。 値は 10 進数か 16 進数 (0x が頭につく場合) で入力することができ、 常に 16 進数で出力されます (これは .Cm -N オプションが使用されていない場合です。 .Cm -N オプションが使用されるとシンボル名称の解決が試みられます)。 .It Cm proto Ar protocol 対応する IPv4 のプロトコルを持つパケットがマッチします。 .It Cm recv | xmit | via Brq Ar ifX | Ar if Ns Cm * | Ar ipno | Ar any 指定したインタフェースから 受信したパケット、送信したパケット、通過したパケットが それぞれマッチします。 インタフェースの指定は、正確な名前 .Ns No ( Ar ifX Ns No ) 、 またはデバイス名 .Ns No ( Ar if Ns Ar * Ns No ) 、 IP アドレスで行なうか、 もしくは何らかのインタフェースを通じて行ないます。 .Pp .Cm via キーワードにより、指定したインタフェースが常にチェックされる ことになります。 .Cm recv や .Cm xmit が .Cm via の代わりに使用された場合、 それぞれ、受信インタフェースのみ、または送信インタフェース のみがチェックされます。 両方とも指定した場合、 送信インタフェースと受信インタフェースの両方に基づく パケットのマッチが可能になります。 例えば次のようになります。 .Pp .Dl "ipfw add deny ip from any to any out recv ed0 xmit ed1" .Pp .Cm recv インタフェースは到着または送出パケットのどちらかについて 検査することができますが、 .Cm xmit インタフェースは送出パケットのみについて検査することができます。 したがって .Cm xmit を使用する場合には .Cm out は必須です (そして .Cm in は無効となります)。 .Pp パケットが受信インタフェースや送信インタフェースを持たないことがあります。 ローカルホストから発生したパケットは受信インタフェースを持ちませんし、 ローカルホストに到着する予定のパケットは送信インタフェースを持ちません。 .It Cm setup SYN ビットがセットされているが ACK ビットを持たない TCP パケットにマッチします。 これは .Dq Li tcpflags\ syn,!ack の短縮形です。 .It Cm src-ip Ar ip-address 引数で指定したアドレスの 1 個を発信元 IP として持つ IP パケットがマッチします。 .It Cm src-port Ar ports 引数で指定したポートの 1 個を発信元ポートとして持つ IP パケットがマッチします。 .It Cm tcpack Ar ack TCP パケットのみです。 TCP ヘッダの確認応答番号フィールドが .Ar ack に設定されていればマッチします。 .It Cm tcpflags Ar spec TCP パケットのみです。 TCP ヘッダが .Ar spec で指定したコンマ区切りのフラグのリストを含んでいればマッチします。 サポートされている TCP フラグは次の通りです。 .Pp .Cm fin , .Cm syn , .Cm rst , .Cm psh , .Cm ack , .Cm urg 。 .Ql \&! を置くことで特定のフラグが存在しないという記述ができます。 .Cm tcpflags の指定を含むルールは、0 でないオフセットを持つフラグメントパケットには 決してマッチすることはありえません。 フラグメントパケットのマッチについての詳細は .Cm frag オプションを参照して下さい。 .It Cm tcpseq Ar seq TCP パケットのみです。 TCP ヘッダのシーケンス番号フィールドが .Ar seq に設定されていればマッチします。 .It Cm tcpwin Ar win TCP パケットのみです。 TCP ヘッダのウィンドウフィールドが .Ar win に設定されていればマッチします。 .It Cm tcpoptions Ar spec TCP パケットのみです。 .Ar spec で指定したコンマ区切りのオプションのリストが TCP ヘッダに含まれていればマッチします。 サポートされている TCP オプションは次の通りです。 .Pp .Cm mss (最大セグメントサイズ), .Cm window (TCP ウィンドウ広告), .Cm sack (選択的 ACK), .Cm ts (RFC1323 タイムスタンプ), .Cm cc (RFC1644 T/TCP コネクションカウント)。 .Ql \&! を置くことで特定のオプションが存在しないという記述ができます。 .It Cm uid Ar user .Ar user が送信したまたは受信する、 すべての TCP パケットと UDP パケットにマッチします。 .Ar user は、名前でも ID 番号でもマッチします。 +システムのハードロックを引き起こすかも知れないロック順序問題を +避けるために、このオプションは debug.mpsafenet=0 を +設定した時のみ使用してください。 .It Cm verrevpath 内向きパケットに対しては、パケットのソースアドレスに対し、 経路テーブルが検索されます。 パケットがシステムに入って来たインタフェースと、 経路の出力インタフェースがマッチする場合、 パケットはマッチします。 インタフェースがマッチしない場合、パケットはマッチしません。 外向きパケットや、入力インタフェースを持たないパケットは、マッチします。 .Pp このオプションの名称と機能は、意図的に下記 Cisco IOS コマンドと同じです: .Pp .Dl ip verify unicast reverse-path .Pp 本オプションは、このインタフェースのものではないソースアドレスを持つパケットを すべて拒否する対スプーフィングルールを作成するのに使用可能です。 .Cm antispoof オプションも参照して下さい。 .It Cm versrcreach 内向きパケットに対しては、パケットのソースアドレスに対し、 経路テーブルが検索されます。 ソースアドレスへの経路は存在するが、デフォルトの経路でない場合や ブラックホール経路、拒否されてる経路である場合に、パケットはマッチします。 そうでなければ、パケットはマッチしません。 外向きパケットはすべてマッチします。 .Pp このオプションの名称と機能は、意図的に下記 Cisco IOS コマンドと同じです: .Pp .Dl ip verify unicast source reachable-via any .Pp 本オプションは、ソースアドレスが到達可能でないパケットを すべて拒否する対スプーフィングルールを作成するのに使用可能です。 .It Cm antispoof 内向きパケットに対しては、パケットのソースアドレスが直接接続されている ネットワークに属するものかどうか確認します。 ネットワークが直接接続されていれば、パケットを受信したインタフェースは ネットワークに接続されているインタフェースと比較されます。 受信インタフェースと直接接続されているインタフェースが同一でなければ、 パケットはマッチしません。 そうでなければパケットはマッチします。 外向きパケットはすべてマッチします。 .Pp 本オプションは、直接接続されたネットワークから来たふりをしているのに そのインタフェース経由で入ってきていないパケットを すべて拒否する対スプーフィングルールを作成するのに使用可能です。 本オプションは .Cm verrevpath と似ていますが、ソースアドレスすべての代わりに、 直接接続されたネットワークのソースアドレスを持つパケットを対象とするので より限定的です。 .El .Sh 検索表 検索表は分散した大量のアドレス、典型的には 100 から数千のエントリを 取り扱うのに便利です。 0 から 127 までの 128 個の異なる検索表を持てます。 .Pp 各エントリは .Ar addr Ns Op / Ns Ar masklen で表され、 (ドットで区切った数字 4 つ組もしくはホスト名で指定された) ベースアドレス .Ar addr と .Ar masklen ビット幅のマスクで表されるアドレスすべてにマッチします。 .Ar masklen が指定されていなければ、デフォルトは 32 です。 表で IP アドレスを検索する場合には、最も限定されたエントリがマッチします。 各エントリには、32 ビット符号なし整数 .Ar value が関連づけられ、ルールマッチコードによりチェックされる場合があります。 ルールが追加された時に .Ar value が指定されていなければ、デフォルトは 0 です。 .Pp エントリは .Pq Cm add で表に追加でき、 .Pq Cm delete で表から削除できます。 表は .Pq Cm list で確認でき、 .Pq Cm flush でフラッシュします。 .Pp 内部的には、各表は経路テーブル .Xr ( route 4 を参照して下さい) と同じように基数木で保持されています。 .Sh ルールのセット 各ルールは 32 個の異なる .Em セット のひとつに属しています。セットには 0 から 31 までの番号をつけられています。 セット 31 はデフォルトルールのために予約されています。 .Pp デフォルトでは、 新規のルールを入力する際に .Cm set N アトリビュートを使用しなければ、 ルールはセット 0 に置かれます。 セットは個別に、かつ、不可分に有効化したり無効化したりできるので、 この機構によって、ファイアウォールの設定を複数個格納し、 それらを素早く (かつ不可分に) 切り替えるための方法が 簡単になります。 セットを有効化/無効化するコマンドは次の通りです。 .Bd -ragged -offset indent .Nm .Cm set Oo Cm disable Ar number ... Oc Op Cm enable Ar number ... .Ed .Pp ここでは複数の .Cm enable または .Cm disable セクションが指定可能です。 コマンドで指定したセット全てについて、 コマンドは不可分に実行されます。 デフォルトでは全てのセットは有効化された状態です。 .Pp セットを無効化すると、ファイアウォールの設定中にそのルールが 存在しないかのように振る舞います。 ただし例外が 1 つだけあります。 .Bd -ragged -offset indent 無効化される以前にルールから生成された動的ルールは、 期限切れとなるまではまだ活動可能な状態です。 動的ルールを削除するためには、 そのルールを生成した親ルールを明示的に削除しなければなりません。 .Ed .Pp ルールのセット番号は次のコマンドで変更できます。 .Bd -ragged -offset indent .Nm .Cm set move .Brq Cm rule Ar rule-number | old-set .Cm to Ar new-set .Ed .Pp また、次のコマンドを使用して 2 つのルールセットを 不可分に入れ換えることができます。 .Bd -ragged -offset indent .Nm .Cm set swap Ar first-set second-set .Ed .Pp ルールのセットの使い方のいくつかは、 .Sx 使用例 セクションを参照して下さい。 .Sh ステートフルファイアウォール ステートフルオペレーションは、 与えられたパターンにマッチするパケットが検出されたときに、 ファイアウォールが特定のフローについてのルールを動的に 作成するための方法です。 ステートフルオペレーションに対するサポートは .Nm ルール の .Cm check-state , keep-state, limit オプションを通じて提供されます。 .Pp 動的ルールが生成されるのは、パケットが .Cm keep-state や .Cm limit ルールにマッチしたときで、その結果、 与えられた .Em protocol を持ち、 .Em src-ip/src-port dst-ip/dst-port のアドレスの組の間のパケット全てのみにマッチする .Em 動的 ルールが生成されます .Pf ( Em src と .Em dst はここでは最初にマッチしたアドレスを区別するためにのみ 使用しています。その後、両者は完全に等価になります)。 動的ルールは最初に .Cm check-state, keep-state, limit が生じたところでチェックされ、 マッチした際に実行されるアクションは親ルールと同じものになります。 .Pp 動的ルールでは、プロトコル、IP アドレス、ポート以外の 属性がチェックされないことに注意して下さい。 .Pp 動的ルールの典型的な使い方は、 ファイアウォールの設定を閉じた状態にしておきつつ、 内部ネットワークからの最初の TCP SYN パケットに、 そのフローに対する動的ルールをインストールさせ、 そのセッションに属するパケットがファイアウォールを 通過できるようにするというものです。 .Pp .Dl "ipfw add check-state" .Dl "ipfw add allow tcp from my-subnet to any setup keep-state" .Dl "ipfw add deny tcp from any to any" .Pp 同様なアプローチが UDP に対しても使えます。 内部から来た UDP パケットに動的ルールをインストールさせ、 その応答がファイアウォールを通過するようにします。 .Pp .Dl "ipfw add check-state" .Dl "ipfw add allow udp from my-subnet to any keep-state" .Dl "ipfw add deny udp from any to any" .Pp 動的ルールは、ある時間の後、期限切れとなります。 その時間は、 フローの状態といくつかの .Cm sysctl 変数の設定に依存します。 詳細はセクション .Sx sysctl 変数 を参照して下さい。 TCP セッションでは、 動的ルールに対し、定期的にキープアライブパケットを送出させるように 指示し、期限切れになる頃にルールの状態をリフレッシュさせることが できます。 .Pp 動的ルールの使用方法に関する他の例は セクション .Sx 使用例 を参照して下さい。 .Sh トラフィックシェイパ (DUMMYNET) 設定 .Nm は、 .Xr dummynet 4 トラフィックシェイパへのユーザインタフェースも提供します。 .Pp .Nm dummynet の動作は、まずファイアウォールを用いてパケットをクラス分けし、 それらを .Em フロー(flow) に分割します。その際に、 .Nm ルールで使用できる如何なるマッチパターンをも使用できます。 ローカルポリシにより、フロー 1 個に TCP コネクション 1 個の パケットを含めることもできますし、指定したホストのパケットでも、 サブネット全体のパケットでも、あるプロトコルタイプのパケットでも 含めることができます。 .Pp 同一のフローに属するパケットは、その後、トラフィックへの制限を 実装する 2つのオブジェクトのいずれか一方に渡されます。 .Bl -hang -offset XXXX .It Em pipe パイプ (pipe) は、指定したバンド幅、伝搬遅延、キューサイズ、 パケット損失率を持つリンク 1 個をエミュレートします。 クラス分けを受けた後、パケットは、パイプに入る前にキューに蓄えられ、 パイプのパラメータに従いパイプ中を伝送されます。 .Pp .It Em queue キュー (queue) は、WF2Q+ (Worst-case Fair Weighed Fair Queueing: 最悪均等重み付け均等待ち行列) ポリシを実装するために用いる抽象化です。 このポリシは、WFQ ポリシの効率的な変種です。 .br キューは .Em 重み (weight) とパイプの参照を、個々のフローに対応付けます。 同じパイプに結合されバックログを持つ (キューにパケットがある) フロー全てで、それぞれの重みに比例してそのパイプのバンド幅を 山分けします。 重みは優先度ではないことに注意して下さい。大きい重みを持つフローが ずっとバックログを抱えていたとしても、それより軽い重みを持つ フローも、バンド幅を自分の割合の分は得ることは保証されます。 .Pp .El 実際の使い方として、 .Em pipe を使い、フローが取り得るバンド幅にハードリミットを設けることができます。 一方で、 .Em queue を使い、異なるフローがどのようにして利用可能なバンド幅を山分けするかを 決定することができます。 .Pp .Em pipe と .Em queue の設定コマンドは次の通りです。 .Bd -ragged -offset indent .Cm pipe Ar number Cm config Ar pipe-configuration .Pp .Cm queue Ar number Cm config Ar queue-configuration .Ed .Pp 次のパラメータをパイプに対して設定可能です。 .Pp .Bl -tag -width indent -compact .It Cm bw Ar bandwidth | device バンド幅で、単位は .Sm off .Op Cm K | M .Brq Cm bit/s | Byte/s .Sm on です。 .Pp 値 0 (デフォルト) は無限のバンド幅を意味します。 単位は、次の .Pp .Dl "ipfw pipe 1 config bw 300Kbit/s" .Pp のように、数値の直後に続けて書く必要があります。 次の .Pp .Dl "ipfw pipe 1 config bw tun0" .Pp のように、数値の代りにデバイス名を指定した場合、 送信クロックは指定したデバイスから与えられます。 現在のところ、 .Xr tun 4 デバイスのみがこの機能を提供しており、 .Xr ppp 8 と組み合わせて使用します。 .Pp .It Cm delay Ar ms-delay 伝達遅延時間であり、ミリ秒単位で指定します。 値は、クロックティックの倍数 (典型的には 10ms ですが、 カーネルを .Dq "options HZ=1000" で動作させて精度を 1ms かそれ以下にすると良い ことが経験的に知られています) に丸められます。 デフォルト値は 0 であり、遅延無しを意味します。 .El .Pp 次のパラメータをキューに対して設定できます。 .Pp .Bl -tag -width indent -compact .It Cm pipe Ar pipe_nr キューを指定したパイプに接続します。 複数のキュー (同じ重みの場合も異なる重みの場合もあります) を同一のパイプに接続することができます。 パイプはキューの集合に対する集約されたレートを指定します。 .Pp .It Cm weight Ar weight このキューにマッチするフローに適用する重みを指定します。 重みは 1 から 100 の範囲でなければならず、 デフォルトは 1 です。 .El .Pp 最後に、次のパラメータをパイプやキューに対して設定できます。 .Pp .Bl -tag -width XXXX -compact .Pp .It Cm buckets Ar hash-table-size 様々なキューを格納するハッシュ表のサイズを指定します。 デフォルトは 64 で、 .Xr sysctl 8 変数 .Em net.inet.ip.dummynet.hash_size によって制御されます。 指定可能な範囲は 16 から 65536 までです。 .Pp .It Cm mask Ar mask-specifier .Nm ルールにより 指定したパイプもしくはキューに対して送られたパケットを、さらに 複数のフローにクラス分けすることができます。その後、それぞれの パケットは、異なる .Em 動的な パイプもしくはキューに送られます。 フロー識別子は、パイプもしくはキューの設定中の .Cm mask オプションの指定に応じて IP アドレス、ポート、プロトコルタイプをマスクすることにより 構築されます。 異なるフロー識別子それぞれに対し、新しいパイプもしくはキューが 元となるオブジェクトと同一のパラメータとともに生成され、 マッチするパケットがそこに送られます。 .Pp このようにして、 .Em 動的パイプ を使用するとき、フローそれぞれはパイプで指定したものと 同じバンド幅を得ます。一方、 .Em 動的キュー を使用する時、フローそれぞれは、同じキューにより生成された 他のフローと、親パイプのバンド幅を均等に山分けします (異なる重みを 持つ他のキューが同じパイプに接続される場合があることに 注意して下さい)。 .br 使用可能なマスク指定子は、次を組み合わせたものです。 .Pp .Cm dst-ip Ar mask , .Cm src-ip Ar mask , .Cm dst-port Ar mask , .Cm src-port Ar mask , .Cm proto Ar mask , .Cm all .Pp 最後の指定子は、 すべてのフィールドのすべてのビットが検査されることを意味しています。 .Pp .It Cm noerror パケットが dummynet のキューやパイプによって落されたとき、 通常は、 デバイスキューが一杯になったときに生じるのと同様な形で、 エラーがカーネル内の呼び出し元ルーチンに報告されます。 このオプションを設定すると、 パケットの配送に成功したかのように報告されます。 これは、 遠隔地にあるルータでの損失や輻輳をシミュレートしたいという 一部の実験的な設定のために必要とされています。 .Pp .It Cm plr Ar packet-loss-rate パケットの損失率です。 引数 .Ar packet-loss-rate は 0 から 1 までの浮動小数点数で、 0 は損失がないことを、1 は 100% 失われることを意味します。 損失率は内部的には 31 ビットで表現されています。 .Pp .It Cm queue Brq Ar slots | size Ns Cm Kbytes スロット数 .Ar slots または .Cm KBytes で表したキューのサイズです。 デフォルトは 50 スロットで、 これはイーサネットデバイスにおける典型的なキューのサイズです。 低速リンクのためにキューのサイズを小さいままにしておくことが推奨されます。 そうしないとキューの遅延がトラフィックに及ぼす影響が 著しくなるかもしれません。 例えば、最大サイズのイーサネットパケット (1500 バイト) が 50 個のとき、 600Kbit、 つまり 30Kbit/秒 のパイプで 20 秒ということになります。 それよりもずっと大きな MTU を持ったインタフェース (例えばループバックインタフェースは 16KB パケットです) からパケットを受け取る場合、さらに悪い結果となることがあります。 .Pp .It Cm red | gred Ar w_q Ns / Ns Ar min_th Ns / Ns Ar max_th Ns / Ns Ar max_p RED (Random Early Detection) キュー管理アルゴリズムを使用します。 .Ar w_q と .Ar max_p は 0 から 1 (0 を含みません) の範囲の浮動小数点数であり、 .Ar min_th と .Ar max_th はキュー管理用の閾値を指定する整数です (キューがバイト数で指定された場合は閾値はバイトで計算され、 そうでない場合はスロット数で計算されます)。 .Xr dummynet 4 は、gentle RED という変型 (gred) もサポートします。 RED の動作を制御するために、3 個の .Xr sysctl 8 変数を使用可能です。 .Bl -tag -width indent .It Em net.inet.ip.dummynet.red_lookup_depth リンクがアイドルの時の、平均キューの計算精度を指定します (デフォルトは 256 であり、0 より大きい必要があります) .It Em net.inet.ip.dummynet.red_avg_pkt_size パケットサイズの平均の期待値を指定します (デフォルトは 512 であり、0 より大きい必要があります) .It Em net.inet.ip.dummynet.red_max_pkt_size パケットサイズの最大値の期待値を指定します。 キューの閾値がバイトの場合のみ使用されます (デフォルトは 1500 であり、0 より大きい必要があります) .El .El .Sh チェックリスト ルールを構成する際に考慮すべき重要な点をいくつか述べます。 .Bl -bullet .It かならず送信パケットと受信パケットの両方のパケットをフィルタリングします。 ほとんどのネットワークコネクションではパケットが双方向に流れることが必要です。 .It テストは細心の注意を払って行ないます。テストの際にはコンソールの近くにいる のがよいでしょう。 コンソールに近寄れない場合、 .Pa /usr/share/examples/ipfw/change_rules.sh にあるような自動回復スクリプトを使用してください。 .It ループバックインタフェースのことを忘れてはなりません。 .El .Sh 細かい事柄 .Bl -bullet .It フラグメント化されたデータグラムが無条件で破棄される状況があります。 TCP パケットは、最低 20 バイトの TCP ヘッダを含まない場合、破棄されます。 UDP パケットは、完全な 8 バイトの UDP ヘッダを含まない場合、破棄されます。 ICMP パケットは、4 バイトの ICMP ヘッダ、 すなわち ICMP タイプとコードとチェックサムを含まない場合、破棄されます。 これらのパケットは、単に .Dq pullup failed としてログされます。 何故なら、パケット中に有意なログエントリを生成するだけの有用なデータが 含まれないかもしれないためです。 .It 無条件で破棄されるもう 1 種類のパケットは、 フラグメントオフセットが 1 の TCP パケットフラグメントです。 これはパケットとしては有効なものですが、利用目的はファイアウォールを かいくぐることしかありません。 ログが有効な場合、 これらのパケットはルール -1 により破棄されたと報告されます。 .It ネットワーク越しにログインしている場合、 .Xr kld 4 バージョンの .Nm をロードすることはそれほど単純なことではありません。 以下のコマンドを奨めます。 .Bd -literal -offset indent kldload ipfw && \e ipfw add 32000 allow ip from any to any .Ed .Pp これに引続き、同じような状況で .Bd -literal -offset indent ipfw flush .Ed .Pp とするのは良くありません。 .It システムセキュリティレベルが 3 以上に設定されている場合、 .Nm フィルタリストを変更できません (システムセキュリティレベルについては .Xr init 8 を参照してください)。 .El .Sh パケットの行き先変更 指定されたポートにバインドされた .Xr divert 4 ソケットは、 そのポートへ行き先変更されたパケットを、 全部受けとります。 宛先ポートにバインドされたソケットがない場合や、 カーネルがパケットの行き先変更ソケットをサポートするようには コンパイルされていない場合、 パケットは破棄されます。 .Sh SYSCTL 変数 .Xr sysctl 8 変数の集合は、ファイアウォールと 関連するモジュール ( .Nm dummynet, bridge ) の動作を制御します。 デフォルト値と意味と共に、これらを以下に列挙します (どの値が実際に使用されるかは .Xr sysctl 8 で確認してください)。 .Bl -tag -width indent .It Em net.inet.ip.dummynet.expire : No 1 未処理のトラフィックを持たない動的パイプ/キューを怠惰に削除します。 この変数を 0 に設定することでこの動作を無効にすることができます。 この場合、パイプ/キューは閾値に達した場合にのみ削除されることになります。 .It Em net.inet.ip.dummynet.hash_size : No 64 動的パイプ/キューに使用されるハッシュ表のデフォルトの大きさです。 この値はパイプ/キューを設定するときに .Cm buckets オプションが指定されなかった場合に使用されます。 .It Em net.inet.ip.dummynet.max_chain_len : No 16 ハッシュバケット (hash bucket) 内のパイプ/キューの最大個数の値です。 .Cm net.inet.ip.dummynet.expire=0 であっても、積 .Cm max_chain_len*hash_size が空のパイプ/キューが期限切れになったとする閾値を決定するのに使用されます。 .It Em net.inet.ip.dummynet.red_lookup_depth : No 256 .It Em net.inet.ip.dummynet.red_avg_pkt_size : No 512 .It Em net.inet.ip.dummynet.red_max_pkt_size : No 1500 RED アルゴリズムで使う損失確率の計算に使用されるパラメータです。 .It Em net.inet.ip.fw.autoinc_step : No 100 ルール番号を自動生成する際のルール番号間の増分です。 この値は 1 から 1000 の範囲でなければなりません。 この変数は .Nm ipfw2 にのみ存在し、 .Nm ipfw1 では差分は 100 に固定されています。 .It Em net.inet.ip.fw.curr_dyn_buckets : Em net.inet.ip.fw.dyn_buckets 動的ルールのハッシュ表内の現在のバケットの個数です (読み出しのみ可能)。 .It Em net.inet.ip.fw.debug : No 1 .Nm が生成するデバッグメッセージを制御します。 .It Em net.inet.ip.fw.dyn_buckets : No 256 動的ルールで使用されるハッシュ表に含まれるバケットの個数です。 2 の累乗でなければならず、上限は 65536 です。 全ての動的ルールが期限切れとなったときにのみ効果が現れるので、 確実にハッシュ表のサイズが変更されるようにするには .Cm flush コマンドを使用するべきでしょう。 .It Em net.inet.ip.fw.dyn_count : No 3 現在の動的ルールの数です (読み込み専用)。 .It Em net.inet.ip.fw.dyn_keepalive : No 1 TCP セッションにおいて .Cm keep-state ルールのためのキープアライブパケットを生成するようにします。 キープアライブパケットは ルールの生存時間が残り 20 秒となったときに 接続の両端に向けて 5 秒毎に 生成されます。 .It Em net.inet.ip.fw.dyn_max : No 8192 動的ルールの最大値です。この限界にいきつくと、 古いルールが無効になるまでは、それ以上、動的ルールを 組み込むことはできません。 .It Em net.inet.ip.fw.dyn_ack_lifetime : No 300 .It Em net.inet.ip.fw.dyn_syn_lifetime : No 20 .It Em net.inet.ip.fw.dyn_fin_lifetime : No 1 .It Em net.inet.ip.fw.dyn_rst_lifetime : No 1 .It Em net.inet.ip.fw.dyn_udp_lifetime : No 5 .It Em net.inet.ip.fw.dyn_short_lifetime : No 30 これらの値は、動的ルールの生存時間を秒単位でコントロールします。 最初の SYN 交換の際には生存時間が短期 (short) になり、 その後互いの SYN が検出された後は増加させられ、 最後の FIN 交換の間、 または RST を受信した際に再び減らされます。 .Em dyn_fin_lifetime および .Em dyn_rst_lifetime は厳密に 5 秒 (キープアライブを繰り返す周期) より短くなければなりません。 ファイアウォールではこれが強制されます。 .It Em net.inet.ip.fw.enable : No 1 ファイアウォールを有効にします。 この変数を 0 に設定すると、 マシンがコンパイル時に有効の設定がされている場合であっても、 ファイアウォールがない状態で実行されます。 .It Em net.inet.ip.fw.one_pass : No 1 設定されている場合、 .Xr dummynet 4 パイプから出てくるパケットは 再度ファイアウォールを通過することはありません。 そうでない場合、 パイプアクションの後、 パケットは次のルールでファイアウォールに再注入されます。 .It Em net.inet.ip.fw.verbose : No 1 冗長メッセージを有効にします。 .It Em net.inet.ip.fw.verbose_limit : No 0 冗長出力を行うように設定されたファイアウォールが 生成するメッセージ数を制限します。 .It Em net.link.ether.ipfw : No 0 .Nm がレイヤ 2 パケットを通すかどうかを制御します。 デフォルトは no です。 .It Em net.link.ether.bridge_ipfw : No 0 .Nm がブリッジされたパケットを通すかどうかを制御します。 デフォルトは no です。 .El -.Sh FreeBSD-STABLE で IPFW2 を使う +.Sh FreeBSD 4.x で IPFW2 を使う .Nm ipfw2 は、 .Fx -CURRENT で標準となっていますが、 +5.x と 6.0 で標準となっていますが、 .Fx -STABLE では、 -カーネルを +4.x では、カーネルを .Cm options IPFW2 を付けてコンパイルし、 .Nm /sbin/ipfw と .Nm /usr/lib/libalias を .Cm -DIPFW2 を付け (buildworld の前に .Nm /etc/make.conf に .Cm IPFW2=TRUE を追加しておくことで同じ効果を得ることができます) 再コンパイル、再インストールしない限り、 今でも .Nm ipfw1 を使用します。 .Pp .Sh IPFW2 拡張 このセクションでは .Nm ipfw2 で導入され、 .Nm ipfw1 には存在しなかった機能の一覧を示します。 ここではルールセットを記述する際に影響が大きいと思われる順に示します。 より効果的なやり方でルールセットを記述するために これらの機能を使用したいと思うかもしれません。 .Bl -tag -width indent .It 文法とフラグ .Nm ipfw1 は、 .Fl n フラグ (文法チェックのみ) をサポートしませんし、 コンマの後の空白をサポートしませんし、 単一引数中での全ルールフィールドをサポートしません。 .Nm ipfw1 では -p フラグ (プリプロセッサ) とともに -f フラグ (強制) を指定することはできません。 .Nm ipfw1 は -c (コンパクト) フラグをサポートしません。 .It 非 IPv4 のパケットの取り扱い .Nm ipfw1 は全ての非 IPv4 パケットを黙って受け付けます .Pf ( Nm ipfw1 は .Em net.link.ether.bridge_ipfw=1 Ns の場合にのみ非 IPv4 パケットを参照します)。 .Nm ipfw2 は 全てのパケット (非 IPv4 パケットを含む) を ルールセットにしたがってフィルタします。 .Nm ipfw1 と同じような動作をさせたい場合は ルールセットの先頭で次のようにします。 .Pp .Dl "ipfw add 1 allow layer2 not mac-type ip" .Pp .Cm layer2 オプションは冗長であるように見えますが、必要です。 レイヤ 3 からファイアウォールを通るパケットは MAC ヘッダを持たないので、 .Cm mac-type ip パターンはレイヤ3のパケットに対して常に失敗します。 つまり、 .Cm not オペレータをおくと全てを通過させるルールになってしまいます。 .It 宛先 .Nm ipfw1 はアドレスセットや宛先リストをサポートしていません。 .Pp .It ポートの指定 .Nm ipfw1 では TCP と UDP のポートを指定する際に 指定できるポート範囲は 1 つだけでした。 また、 .Nm ipfw2 で 30 エントリ可能であるのに対し、10 エントリに制限されていました。 また、 .Nm ipfw1 では .Cm tcp または .Cm udp パケットを要求するルールの場合に限って ポートを指定することが可能です。 .Nm ipfw2 では全てのパケットにマッチさせるルールでポートの指定を行うことが可能で、 マッチはポート識別子を含んだプロトコルを運ぶパケットのみに適用されます。 .Pp 最後に、 .Nm ipfw1 では 最初のポートエントリを .Ar port:mask と指定することができました。 ここで .Ar mask は任意の 16 ビットマスクが使用可能です。 この文法が有用であるかどうかは疑問なので .Nm ipfw2 ではもはやサポートされていません。 .It 論理和ブロック .Nm ipfw1 は論理和ブロックをサポートしていません。 .It キープアライブ .Nm ipfw1 は状態依存セッションのためのキープアライブを生成しません。 結果として、 休止状態のセッションは 動的ルールの生存時間が期限切れとなるために 落されることがあります。 .It ルールセット .Nm ipfw1 はルールセットを実装していません。 .It MAC ヘッダによるフィルタとレイヤ 2 のファイアウォール .Nm ipfw1 は MAC ヘッダフィールドによるフィルタを実装していませんし、 .Cm ether_demux() と .Cm ether_output_frame() からのパケットによっても起動しません。 sysctl 変数 .Em net.link.ether.ipfw はここでは何の効果もありません。 .It オプション .Nm ipfw1 では、次のオプションは単一値のみ受け付けます: .Pp .Cm ipid, iplen, ipttl .Pp 次のオプションは .Nm ipfw1 では実装されていません: .Pp .Cm dst-ip, dst-port, layer2, mac, mac-type, src-ip, src-port .Pp さらに、次のオプションは RELENG_4 の .Nm ipfw1 では実装されていません: .Pp .Cm ipid, iplen, ipprecedence, iptos, ipttl, .Cm ipversion, tcpack, tcpseq, tcpwin .It dummynet オプション .Nm dummynet パイプ/キュー用の次のオプションはサポートされていません。 .Pp .Cm noerror .El .Sh 使用例 .Nm はあまりにも多くの使用方法があるので このセクションでは使用例のほんの一部を示すのみにしておきます。 .Pp .Ss 基本的なパケットフィルタリング 次のコマンドは .Em cracker.evil.org から .Em wolf.tambov.su の telnet ポートへ送られるすべての TCP パケットを拒否するルールを追加します。 .Pp .Dl "ipfw add deny tcp from cracker.evil.org to wolf.tambov.su telnet" .Pp 次のコマンドはクラッカーのネットワーク全体からホスト my への すべてのコネクションを拒否します。 .Pp .Dl "ipfw add deny ip from 123.45.67.0/24 to my.host.org" .Pp 最初に効率良く (動的ルールを用いずに) アクセスを制限する方法は、 次のルールを用いることです。 .Pp .Dl "ipfw add allow tcp from any to any established" .Dl "ipfw add allow tcp from net1 portlist1 to net2 portlist2 setup" .Dl "ipfw add allow tcp from net3 portlist3 to net3 portlist3 setup" .Dl "..." .Dl "ipfw add deny tcp from any to any" .Pp 最初のルールは通常の TCP パケットにすぐにマッチしますが、 最初の SYN パケットにはマッチしません。 指定した発信元/宛先の組の SYN パケットのみ、次の .Cm setup ルールにマッチします。これら以外の SYN パケットは、最後の .Cm deny ルールにより却下されます。 .Pp もし、1 つ以上のサブネットの管理者なら、 .Nm ipfw2 の文法の利点を活用して アドレスセットと論理和ブロックを指定することで、 次のように、 クライアントのブロックにサービスを選択的に利用可能とする 極めてコンパクトなルールセットを記述することができます。 .Pp .Dl "goodguys=\*q{ 10.1.2.0/24{20,35,66,18} or 10.2.3.0/28{6,3,11} }\*q" .Dl "badguys=\*q10.1.2.0/24{8,38,60}\*q" .Dl "" .Dl "ipfw add allow ip from ${goodguys} to any" .Dl "ipfw add deny ip from ${badguys} to any" .Dl "... normal policies ..." .Pp .Nm ipfw1 の文法では、 上の例では各 IP に別々のルールを用意する必要があります。 .Pp .Cm verrevpath オプションを使用し、下記をルールセットの先頭に置くことで、 自動的な対スプーフィングが可能になります: .Pp .Dl "ipfw add deny ip from any to any not verrevpath in" .Pp このルールは、変なインタフェースからシステムに来たように見える 内向きパケットをすべて落とします。 例えば、保護された内部ネットワーク上のホストに属するソースアドレスを持つ パケットは、外部インタフェースからシステムに入ろうとした場合、落とされます。 .Pp .Cm antispoof オプションを下記をルールセットの先頭に追加することで、 同様のことが行なえますが、より限定された対スプーフィングが可能になります: .Pp .Dl "ipfw add deny ip from any to any not antispoof in" .Pp このルールは、他の直接接続されたシステムから変なインタフェースに来たように見える 内向きパケットをすべて落とします。 例えば、ソースアドレスが .Li 192.168.0.0/24 であり .Li fxp0 で受信するように設定されているのに .Li fxp1 で受信されたパケットは落とされます。 .Ss 動的ルール にせの TCP パケットを含む怒涛の攻撃 (flood attack) から サイトを保護するために、次の動的ルールを用いた方が安全です。 .Pp .Dl "ipfw add check-state" .Dl "ipfw add deny tcp from any to any established" .Dl "ipfw add allow tcp from my-net to any setup keep-state" .Pp これらのルールにより、ファイアウォールは、自分たちのネットワークの 内側から到着する通常の SYN パケットで始まるコネクションに対して のみ動的ルールを組み込みます。動的ルールは、最初の .Cm check-state ルール、または、 .Cm keep-state ルールに遭遇した時点でチェックされます。 ルールセットのスキャン量を最小にするために、 .Cm check-state ルールは、ルールセットの最初のほうに置くことになるのが普通です。 実際の燃費は変動します。 .Pp ユーザが開ける接続数を制限するには、次のタイプのルールを使用可能です。 .Pp .Dl "ipfw add allow tcp from my-net/24 to any setup limit src-addr 10" .Dl "ipfw add allow tcp from any to me setup limit src-addr 4" .Pp 前者 (ゲートウェイ上で動作することを仮定) は、/24 ネット上の各ホストが 最大 10 個の TCP 接続を開くことを許します。 後者は、サーバ上に設定可能であり、 単一のクライアントが同時に 4 個を越える接続を使用できないようにします。 .Pp .Em 注意 : ステートフルなルールは、怒涛の SYN 攻撃により極めて大量の動的ルールを 作ってしまい、サービス不能攻撃を受けることになる可能性があります。 ファイアウォールの動作をコントロールする .Xr sysctl 8 変数に従いファイアウォールが動作することによって、 このような攻撃の影響を部分的にでも制限することはできます。 .Pp ここで、カウントされている情報とタイムスタンプ情報を見る .Cm list コマンドのよい例を示します。 .Pp .Dl ipfw -at list .Pp これはタイムスタンプを省略して次のように指定できます。 .Pp .Dl ipfw -a list .Pp これは次の指定と等価です。 .Pp .Dl ipfw show .Pp 次のルールは 192.168.2.0/24 からのすべての受信パケットを、5000 番のポートに 行き先変更するものです。 .Pp .Dl ipfw divert 5000 ip from 192.168.2.0/24 to any in .Pp .Ss トラフィックシェイパ 次のルールは、 .Nm と .Xr dummynet 4 をシミュレーションなどで使う際の使用方法を示しています。 .Pp このルールは 5% の確率でランダムにパケットを落します。 .Pp .Dl "ipfw add prob 0.05 deny ip from any to any in" .Pp 同様の効果は dummynet パイプで実現可能です。 .Pp .Dl "ipfw add pipe 10 ip from any to any" .Dl "ipfw pipe 10 config plr 0.05" .Pp 人工的にバンド幅を制限するためにパイプを使用可能です。 例えばルータとして動作するマシン上で、 192.168.2.0/24 上のローカルクライアントからのトラフィックを制限したい場合、 次のようにします。 .Pp .Dl "ipfw add pipe 1 ip from 192.168.2.0/24 to any out" .Dl "ipfw pipe 1 config bw 300Kbit/s queue 50KBytes" .Pp .Cm out 指示子を使用して、ルールが 2 度使われないようにしていることに 注意してください。 .Nm ルールは、実際には、 入力パケットと出力パケットの両方に適用されることを覚えておいてください。 .Pp バンド幅に制限がある双方向リンクをシミュレートする場合、 正しい方法は次の通りです。 .Pp .Dl "ipfw add pipe 1 ip from any to any out" .Dl "ipfw add pipe 2 ip from any to any in" .Dl "ipfw pipe 1 config bw 64Kbit/s queue 10Kbytes" .Dl "ipfw pipe 2 config bw 64Kbit/s queue 10Kbytes" .Pp 例えば、あなたの装飾的なウェブページが 低速リンクのみで接続されている在宅ユーザにどう見えているか 知りたい場合などに、 上述の方法は非常に有用かもしれません。 半二重メディア (例えば appletalk, Ethernet, IRDA) をシミュレートしたい 場合を除き、単一のパイプを両方の方向に使用すべきではありません。 両方のパイプが同じ設定である必要はないので、 非対称リンクもシミュレート可能です。 .Pp RED キュー管理アルゴリズムを使用してネットワーク性能を検証するには、 次のようにします。 .Pp .Dl "ipfw add pipe 1 ip from any to any" .Dl "ipfw pipe 1 config bw 500Kbit/s queue 100 red 0.002/30/80/0.1" .Pp トラフィックシェイパの他の典型的な応用は、 いくばくかの通信遅延を導入することです。 これは、バンド幅よりも接続のラウンドトリップ時間が制約要因となる ことがしばしばという状況下で、 遠隔手続き呼び出しを多用するアプリケーションに対し 非常に大きな影響を与えます。 .Pp .Dl "ipfw add pipe 1 ip from any to any out" .Dl "ipfw add pipe 2 ip from any to any in" .Dl "ipfw pipe 1 config delay 250ms bw 1Mbit/s" .Dl "ipfw pipe 2 config delay 250ms bw 1Mbit/s" .Pp フローごとのキューはさまざまな用途に有用です。 非常に単純な用途は、トラフィックの集計です。 .Pp .Dl "ipfw add pipe 1 tcp from any to any" .Dl "ipfw add pipe 1 udp from any to any" .Dl "ipfw add pipe 1 ip from any to any" .Dl "ipfw pipe 1 config mask all" .Pp 上述のルールセットは、 すべてのトラフィックに対するキューを生成 (して統計情報を収集) します。 パイプには制限をつけていないので、統計情報を集める効果しかありません。 最後のルールだけでなく 3 個のルールが必要なことに注意してください。 .Nm が IP パケットのマッチを試みるときにポートを考慮しないため、 別々のポート上の接続が違うものとして見えません。 .Pp より洗練された例は、 ネットワークの出力トラフィックを、 ネットワーク毎に制約するのではなく、ホスト毎に制約するものです。 .Pp .Dl "ipfw add pipe 1 ip from 192.168.2.0/24 to any out" .Dl "ipfw add pipe 2 ip from any to 192.168.2.0/24 in" .Dl "ipfw pipe 1 config mask src-ip 0x000000ff bw 200Kbit/s queue 20Kbytes" .Dl "ipfw pipe 2 config mask dst-ip 0x000000ff bw 200Kbit/s queue 20Kbytes" .Ss ルールセット ルールセットを不可分に追加するには、 例えばセット 18 なら、次のようにします。 .Pp .Dl "ipfw set disable 18" .Dl "ipfw add NN set 18 ... # 必要に応じて繰り返す" .Dl "ipfw set enable 18" .Pp ルールセットを不可分に削除するには、単に次のコマンドでよいです。 .Pp .Dl "ipfw delete set 18" .Pp ルールセットのテストを行ったり、 何か間違いがあった場合にルールセットを削除して制御を回復するには、 次のようにします。 .Pp .Dl "ipfw set disable 18" .Dl "ipfw add NN set 18 ... # 必要に応じて繰り返す" .Dl "ipfw set enable 18; echo done; sleep 30 && ipfw set disable 18" .Pp ここで各設定がうまくいった場合、 \&"sleep" が終了する前に control-C を押すと、 ルールセットは活動状態のままとなります。 そうでない場合、 たとえ箱にアクセスすることができなかったとしても、 ルールセットは sleep が終了した後で無効な状態になるので 以前の状態が復元されます。 .Sh 関連項目 .Xr cpp 1 , .Xr m4 1 , .Xr bridge 4 , .Xr divert 4 , .Xr dummynet 4 , .Xr ip 4 , .Xr ipfirewall 4 , .Xr protocols 5 , .Xr services 5 , .Xr init 8 , .Xr kldload 8 , .Xr reboot 8 , .Xr sysctl 8 , .Xr syslogd 8 .Sh バグ +UID, GID, jail ID の制約を含むルールが使用されており、 +debug.mpsafenet が 1 の場合、ロック順序問題がシステムを +ハードロックさせることがあります。 +.Pp 年月とともに文法が大きくなり、ときどき訳がわからないところも あるかもしれません。 不幸にして、後方互換性のために昔しでかした文法定義の誤りを 訂正できないでいます。 .Pp .Em !!! 警告 !!! .Pp ファイアウォールを誤って設定するとコンピュータが 使用不能な状態になり、 ことによると、ネットワークサービスを停止させてしまい、 制御を回復するためにコンソールアクセスが必要となってしまう 可能性があります。 .Pp .Cm divert によって行き先を変更された入力パケットの断片 (フラグメント) は、 ソケットに配送される前に再構成されます。 これらのパケットで使用されるアクションは パケットの最初のフラグメントにマッチしたルールのものです。 .Pp ユーザランドへ向けられ、 ユーザランドのプロセス によって再投入されるパケットは、 パケットの発信元インタフェースを含む パケット属性のいろいろを失っています。 パケットの始点インタフェース名は、8 バイト未満であって、 ユーザランドのプロセスが保存しこれを sockaddr_in で再使用するのであれば、 保持されます .Xr ( natd 8 はそうします)。 さもなくば、この情報は失われます。 パケットがこの方法で再投入された場合、 後のルールは正しく適用されないかもしれません。 ルールの並びにおける .Cm divert ルールの順序は非常に重要なものとなります。 .Sh 作者 .An Ugen J. S. Antsilevich , .An Poul-Henning Kamp , .An Alex Nash , .An Archie Cobbs , .An Luigi Rizzo . .Pp .An -nosplit API は .An Daniel Boulet が BSDI 用に記述したコードに基づいています。 .Pp .Xr dummynet 4 トラフィックシェイパは Akamba Corp. がサポートしました。 .Sh 歴史 .Nm は、 .Fx 2.0 で最初に現れました。 .Xr dummynet 4 は .Fx 2.2.8 から導入されました。 ステートフル拡張は、 .Fx 4.0 から導入されました。 .Nm ipfw2 は 2002 年夏に導入されました。 Index: head/ja_JP.eucJP/man/man8/loader.8 =================================================================== --- head/ja_JP.eucJP/man/man8/loader.8 (revision 22766) +++ head/ja_JP.eucJP/man/man8/loader.8 (revision 22767) @@ -1,881 +1,877 @@ .\" Copyright (c) 1999 Daniel C. Sobral .\" 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. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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/sys/boot/common/loader.8,v 1.64 2004/07/08 22:35:33 brian Exp % +.\" %FreeBSD: src/sys/boot/common/loader.8,v 1.64.2.1 2004/09/26 06:32:03 maxim Exp % .\" .\" $FreeBSD$ -.Dd January 27, 2004 +.Dd August 18, 2004 .Dt LOADER 8 .Os .Sh 名称 .Nm loader .Nd カーネルブートストラップの最終段階 .Sh 解説 .Nm と呼ばれるプログラムは、 .Fx のカーネルブートストラップにおける、最終段です。 IA32 (i386) アーキテクチャでは、これは .Pa BTX クライアントです。 .Xr libstand 3 に静的にリンクされ、通常はディレクトリ .Pa /boot に置かれます。 .Pp また、作業自動化、事前設定、回復処理の補助に使用可能な、 スクリプト言語を提供します。 このスクリプト言語はおおまかに 2 つの主たる部分に分類されます。 小さな方は、通常のユーザが直接使用するようデザインされたコマンドの集合で、 歴史的な事情により「組み込みコマンド」と呼ばれます。 これらのコマンドを提供した背景には、 主としてユーザの使い勝手を改善する目的があります。 大きな部品は .Tn ANS Forth 互換の Forth インタプリタであり、 .An John Sadler の FICL をベースにしています。 .Pp 初期化において、 .Nm はコンソールを検出して .Va console 変数を設定します。 直前のブートステージにシリアルコンソールを使用した場合には、 この変数をシリアルコンソール .Pq Dq comconsole に設定します。 その後、デバイスをプローブし、 .Va currdev と .Va loaddev を設定し、 .Va LINES を 24 に設定します。 次に .Tn FICL が初期化され、組み込み語が語彙に追加され、存在する場合には .Pa /boot/boot.4th が処理されます。 このファイルが読み込まれるまで、ディスクの交換はできません。 .Nm が .Tn FICL とともに使用する内部インタプリタは .Ic interpret に設定されます。これは .Tn FICL のデフォルトです。 この後、使用可能な場合 .Pa /boot/loader.rc が処理され、そうでない場合には歴史的な理由で .Pa /boot/boot.conf が読み込まれます。 これらのファイルは .Ic include コマンドを介して処理されます。 このコマンドは、 処理前にファイル内容すべてをメモリに読み込みますので、 ディスク交換が可能となります。 .Pp この時点で、 .Ic autoboot が試されていない場合でかつ .Va autoboot_delay が .Dq NO (大文字小文字は区別しません) に設定されていない場合、 .Ic autoboot が試されます。 システムがこの時点まで到達した場合、 .Va prompt が設定され、 .Nm は対話モードになります。 .Sh 組み込みコマンド .Nm の組み込みコマンドは、パラメータをコマンドラインから受け取ります。 現在、スクリプトからの呼び出し方法は、文字列上で .Pa evaluate を使用することだけです。 エラー状態が発生すると、 .Tn ANS Forth 例外操作語でインタセプト可能な例外が生成されます。 インタセプトされない場合、エラーメッセージが表示され、 インタプリタの状態がリセットされます。 これにより、スタックが空になりインタプリタのモードが元に戻ります。 .Pp 使用可能な組み込みコマンドは次の通りです: .Pp .Bl -tag -width Ds -compact .It Ic autoboot Op Ar seconds ユーザが割り込まない場合には、 指定した秒数の後にシステムのブートストラップへ進みます。 キーが押されて割り込まれるまで、 カウントダウンプロンプトを表示し、 ユーザに対してシステムがブートするところであることを警告します。 必要であれば、最初にカーネルがロードされます。 デフォルトは 10 秒です。 .Pp .It Ic bcachestat ディスクキャッシュの使用状況を表示します。 デバッグのためだけにあります。 .Pp .It Ic boot .It Ic boot Ar kernelname Op Cm ... .It Ic boot Fl flag Cm ... システムのブートストラップへすぐに進み、 必要であればカーネルをロードします。 すべてのフラグまたは引数はカーネルに渡されますが、 カーネル名が指定された場合、これらはカーネル名の後にある必要があります。 .Pp .Em 警告 : この組み込みコマンドの動作は、 .Xr loader.4th 8 がロードされると、変ります .Pp .It Ic echo Xo .Op Fl n .Op Aq message .Xc 画面にテキストを表示します。 .Fl n を指定しない場合、改行が表示されます。 .Pp .It Ic heap メモリ使用状況が表示されます。デバッグ目的のためだけにあります。 .Pp .It Ic help Op topic Op subtopic ヘルプメッセージを .Pa /boot/loader.help から読み込んで表示します。 特殊トピック .Em index は、使用可能なトピックを表示します。 .Pp .It Ic include Ar file Op Ar スクリプトファイルを処理します。 各ファイルは、順番がまわって来たところで完全にメモリに読み込まれ、 各行がコマンドラインインタプリタに渡されます。 インタプリタがエラーを返すと、 他のファイルは読み込まずに include コマンドは即時に異常終了し、 自身にエラーを返します .Pf ( Sx エラー 参照)。 .Pp .It Ic load Xo .Op Fl t Ar type .Ar file Cm ... .Xc カーネル、カーネルローダブルモジュール (kld)、内容を問わず .Ar type とタグ付けされているファイルのいずれかをロードします。 カーネルとモジュールは、a.out または FLF のどちらの形式であってもかまいません。 ロードされるファイルの後で渡される引数は、 そのファイルに対する引数として渡されます。 現在のところ、これはカーネルに対しては動作しないことに注意してください。 .Pp .It Ic ls Xo .Op Fl l .Op Ar path .Xc ディレクトリ .Ar path 、または .Ar path を指定しなかった場合にはルートディレクトリのファイル一覧を表示します。 .Fl l を指定すると、ファイルの大きさも表示します。 .Pp .It Ic lsdev Op Fl v モジュールのロード元となりうるデバイスをすべて表示します。 .Fl v を指定すると、更なる詳細を表示します。 .Pp .It Ic lsmod Op Fl v ロード済のモジュールを表示します。 .Fl v を指定すると、更なる詳細を表示します。 .Pp .It Ic more Ar file Op Ar .Va LINES 行を表示するごとに停止しながら、指定したファイルを表示します。 .Pp .It Ic pnpscan Op Fl v プラグアンドプレイデバイスをスキャンします。 現在のところ動作しません。 .Pp .It Ic read Xo .Op Fl t Ar seconds .Op Fl p Ar prompt .Op Va variable .Xc 入力行を端末から読み込み、 .Va variable が指定された場合にはこれに読み込み結果を格納します。 タイムアウトは .Fl t で指定可能ですが、これは最初に押されるキーにより打ち消されます。 プロンプトもまた .Fl p フラグにより表示可能です。 .Pp .It Ic reboot 即時にシステムをリブートします。 .Pp .It Ic set Ar variable .It Ic set Ar variable Ns = Ns Ar value ローダの環境変数を設定します。 .Pp .It Ic show Op Va variable 指定した変数の値を表示します。 .Va variable を指定しないと、すべての変数とその値を表示します。 .Pp .It Ic unload 全モジュールをメモリから取り除きます。 .Pp .It Ic unset Va variable .Va variable を環境から取り除きます。 .Pp .It Ic \&? .Dq help index と同じです。 .Pp .El .Ss 組み込みの環境変数 .Nm は実際のところ、異なった 2 種類の .Sq 環境 変数を持ちます。 それは、ANS Forth の .Em 環境問い合わせ と、別の空間であり組み込みコマンドが使用する環境変数です。 後者は Forth の語としては直接使用できません。 この節で説明するのは、後者です。 .Pp 環境変数の設定および設定解除は、 .Ic set と .Ic unset の組み込みコマンドを介して行います。これらの値は、 .Ic show 組み込みコマンドを使用して対話的に検査できます。 これらの値は、 .Sx 組み込みパーザ で説明する方法でもまたアクセス可能です。 .Pp この環境変数は、システムブート後にシェルに継承されないことに注意してください。 .Pp 数個の変数が .Nm により自動的に設定されます。 他の変数は、 .Nm またはブート時のカーネル動作に影響し得ます。 これらのうち値を要求するものがある一方、 設定されるだけで動作を定義するものもあります。 双方の組み込み変数が下記に説明されています。 .Bl -tag -width bootfile .It Va acpi_load ACPI モジュールの自動ロードを無効にするには、これをアンセットします。 .Xr device.hints 5 の .Va hint.acpi.0.disabled も参照してください。 .It Va autoboot_delay .Ic autoboot がブート前に待つ秒数です。この変数が定義されていない場合、 .Ic autoboot はデフォルトの 10 秒になります。 .Pp .Dq NO に設定すると、 .Pa /boot/loader.rc の処理の後に .Ic autoboot を自動的には試みなくなります。 しかし、明示的に .Ic autoboot を指定すると、デフォルトの 10 秒の遅延の後に通常通り処理されます。 .It Va boot_askname カーネルブート時にルートデバイス名をユーザに尋ねるように、 カーネルに指示します。 .It Va boot_ddb ブート時に初期化に進むのではなく DDB デバッガを開始するように、 カーネルに指示します。 .It Va boot_gdb gdb リモートモードを、カーネルデバッガのデフォルトとして選択します。 .It Va boot_single カーネルがマルチユーザスタートアップを開始することを防ぎ、 カーネルがデバイスプローブを完了したときにはシングルユーザモードになります。 .It Va boot_userconfig カーネルブート時に カーネルの対話的なデバイス設定プログラムを実行するよう要求します。 .It Va boot_verbose この変数を設定すると、 ブートフェーズ中に追加のデバッグ情報をカーネルが表示します。 .It Va bootfile セミコロンで区切った検索パスのリストであり、 ここからブート可能なカーネルを探します。 デフォルトは .Dq Li kernel;kernel.old です。 .It Va console 現在のコンソールを定義します。 .It Va currdev デフォルトデバイスを選択します。デバイスの文法は奇妙なものです。 .It Va init_path カーネルが初期プロセスとして実行しようとすべきバイナリのリストを指定します。 最初にマッチしたバイナリが使用されます。 デフォルトリストは .Dq Li /sbin/init:/sbin/oinit:/sbin/init.bak:/stand/sysinstall です。 .It Va interpret Forth の現在の状態がインタプリタの場合、 .Dq Li ok という値を持ちます。 .It Va LINES 画面上の行数を定義します。ページャが使用します。 .It Va module_path モジュールを検索するディレクトリのリストを設定します。 モジュール名は、load コマンドまたは依存関係により暗黙的に指定されます。 この変数のデフォルト値は .Dq Li /boot/kernel;/boot/modules です。 .It Va num_ide_disks IDE ディスクの数を設定します。 これは、ブート時にルートディスクを見つけることに関する問題への対処です。 .Va root_disk_unit により価値が低下しています。 .It Va prompt .Nm のプロンプトの値です。 デフォルトは .Dq Li "${currdev}>" です。 .It Va root_disk_unit ルートディスクのディスクユニット番号を検出するコードが混乱する場合、 この変数を設定することでユニット番号を強制可能です。 混乱するのは、例えば SCSI と IDE のディスクを両方持つ場合や、 IDE ディスクの並びに隙間がある場合 (プライマリスレーブが無い場合など) です。 .It Va rootdev デフォルトでは、カーネルブート時にルートファイルシステムの設定には .Va currdev が使用されます。 これは .Va rootdev を明示的に設定することによりオーバライド可能です。 .It Va dumpdev パニック時にカーネルがクラッシュダンプを保存可能なデバイスの名前です。 これは、自動的に .Va kern.dumpdev .Xr sysctl 3 MIB 変数を設定します。 .El .Pp 他の変数を使用することにより、 カーネルの調整可能なパラメータをオーバライド可能です。 次の調整可能な変数が使用可能です: .Bl -tag -width Va .It Va hw.physmem システムが使用する物理メモリ量を制限します。 デフォルトでは大きさはバイトで指定しますが、 .Cm k , K , m , M , g , .Cm G のサフィックスを使用し、 それぞれキロバイト、メガバイト、ギガバイトで指定可能です。 無効なサフィックスを使用すると、カーネルはこの変数を無視してしまいます。 .It Va hw.pci.enable_io_modes BIOS がオフのままとしたり、デバイスドライバが正しく有効化しなかった PCI 資源を、有効化します。 このチューナブルのデフォルト値は ON (1) ですが、 ペリフェラルによっては問題となることがあります。 -.It Va hw.pci.allow_unsupported_io_range -BIOS に割り当てられた未サポートのメモリレンジを、 -PCI ブリッジが通過させることを許します。 -このチューナブルのデフォルト値は OFF (0) です。 .It Va kern.maxusers 多くの静的に割り当てられるシステムテーブルの大きさを設定します。 このチューナブルに対して適切な値をどのように選択するかについては、 .Xr tuning 7 を参照してください。 このチューナブルが設定されている場合、 カーネルがコンパイルされたときの設定ファイルで宣言された値は、 置き換えられます。 .It Va kern.ipc.nmbclusters 割り当てられる mbuf クラスタ数を設定します。 カーネルコンパイル時に決定されたデフォルト値より小さくは、設定できません。 .Dv NMBCLUSTERS を変更します。 .It Va kern.ipc.nsfbufs 割り当てるべき .Xr sendfile 2 バッファ数を設定します。 .Dv NSFBUFS に優先します。 .It Va kern.maxswzone スワップメタ情報を保持するための KVM 量を制限します。 これは、システムがサポート可能なスワップ量に直接影響を与えます。 この値は、KVA 空間のバイト数で指定され、デフォルトは約 70MB です。 この値を減らし過ぎて、 実際に構成されるスワップが カーネルがサポートするスワップの 1/2 を越えてしまわぬよう、 注意してください。 デフォルトの 70MB は、 カーネルが最大 (約) 14 GB のスワップを構成可能とします。 バッファキャッシュや .Dv NMBCLUSTERS といった 他の資源用の KVM 予約を大幅に増やす場合のみ、 本パラメータを調整してみてください。 .Dv VM_SWZONE_SIZE_MAX を変更します。 .It Va kern.maxbcache バッファキャッシュ用に予約される KVM の量を制限します。 バイト数で指定します。 デフォルトの最大値は 200 MB です。 このパラメータは、大規模構成において、 バッファキャッシュが多くの KVM を消費してしまうことを避けるために使用します。 スワップゾーンや .Dv NMBCLUSTERS といった 他の資源用の KVM 予約を大幅に増やす場合のみ、 本パラメータを調整してみてください。 NBUF パラメータがこの制限に優先することに注意してください。 .Dv VM_BCACHE_SIZE_MAX を変更します。 .It Va machdep.disable_mtrrs i686 MTRR を無効化します (x86 のみ)。 .It Va net.inet.tcp.tcbhashsize .Dv TCBHASHSIZE のコンパイル時の設定値をオーバライドするか、 デフォルトの 512 にプリセットします。 2 のべき乗である必要があります。 .It Va vm.kmem_size カーネルメモリの大きさ (バイト) を設定します。 カーネルコンパイル時に決定された値に、優先します。 .Dv VM_KMEM_SIZE を変更します。 .El .Ss 組み込みパーザ 組み込みコマンドが実行されるとき、 行の残りはコマンドが引数として受け取り、 通常の Forth コマンドには使用されない特別なパーザがコマンドを処理します。 .Pp この特別なパーザは、解析したテキストに対して次のルールを適用します: .Pp .Bl -enum .It すべてのバックスラッシュ文字は前処理されます。 .Bl -bullet .It \eb , \ef , \er , \en, \et は C で扱われるように処理されます。 .It \es は空白文字に変換されます。 .It \ev は .Tn ASCII の 11 に変換されます。 .It \ez は単にスキップされます。 .Dq \e0xf\ez\e0xf のように使用すると便利です。 .It \e0xN と \e0xNN は 16 進数の N と NN に変換されます。 .It \eNNN は 8 進数 NNN の .Tn ASCII 文字に変換されます。 .It \e" , \e' , \e$ は、これらの文字をエスケープし、 後述するステップ 2 における特殊な扱いをされないようにします。 .It \e\e は単一の \e に変換されます。 .It 他の場合、バックスラッシュは単に取り除かれます。 .El .It エスケープされていないクォートまたはダブルクォートの間のすべての文字列は、 後続するステップにおいて単一の語として扱われます。 .It .Li $VARIABLE または .Li ${VARIABLE} は、環境変数 .Va VARIABLE の値に変換されます。 .It 空白で区切られた複数の引数を、呼び出した組み込みコマンドへ渡します。 空白は \e\e を使用することによりエスケープ可能です。 .El .Pp 解析ルールには例外があり、これは .Sx 組み込み語と FORTH で説明します。 .Ss 組み込み語と FORTH すべての組み込み語は、状態を意識する即時実行語です。 インタプリトされると、これらは前述の通りに振舞います。 一方コンパイルされると、 引数をコマンドラインからではなくスタックから取り出します。 .Pp コンパイルされると、 実行時に組み込み語は、スタック上で次のパラメータを見付けられると期待します: .D1 Ar addrN lenN ... addr2 len2 addr1 len1 N ここで .Ar addrX lenX は文字列であり、組み込み語の引数として解釈されるコマンドラインを構成します。 内部的には、おのおのの間に空白を狭んで、 これらの文字列は 1 から N まで結合されます。 .Pp 引数が渡されない場合、組み込み語が引数を受け付けない場合であっても、 単一の 0 を渡す .Em 必要 があります。 .Pp この動作には利点がありますが、それ自身にはトレードオフがあります。 組み込み語の実行トークンが ( .Ic ' または .Ic ['] を通して) 得られて、 .Ic catch または .Ic execute に渡された場合、組み込み語の動作は .Bf Em .Ic catch または .Ic execute が実行されるときの システムの状態に依存します ! .Ef これは、 例外を扱いたいまたは扱う必要があるプログラムにとっては、特に悩ましいものです。 この場合、代理 (proxy) を使用することをお勧めします。 例えば次のようにします: .Dl : (boot) boot ; .Sh FICL .Tn FICL は C で記述された Forth インタプリタであり、 C の関数などとして呼び出し可能な forth 仮想マシンライブラリの形式です。 .Pp .Nm では、対話的に読み込まれた各行は .Tn FICL に与えられます。 .Tn FICL は、組み込み語を実行するために .Nm を呼び戻します。 組み込みの .Ic include もまた、1 度に 1 行ずつを .Tn FICL へ与えます。 .Pp .Tn FICL へ使用可能な語は 4 グループへ分類可能です。それは、 .Tn ANS Forth 標準語、追加の .Tn FICL 語、追加の .Fx 語、そして組み込みコマンドです。 最後のものは既に説明しました。 .Tn ANS Forth 標準語は、 .Sx 規格 の節に列挙しています。 別の 2 グループの語については、以降の小節において説明します。 .Ss FICL 追加語 .Bl -tag -width wid-set-super .It Ic .env .It Ic .ver .It Ic -roll .It Ic 2constant .It Ic >name .It Ic body> .It Ic compare This is the STRING word set's .Ic compare . .It Ic compile-only .It Ic endif .It Ic forget-wid .It Ic parse-word .It Ic sliteral This is the STRING word set's .Ic sliteral . .It Ic wid-set-super .It Ic w@ .It Ic w! .It Ic x. .It Ic empty .It Ic cell- .It Ic -rot .El .Ss FREEBSD 追加語 .Bl -tag -width XXXXXXXX .It Ic \&$ Pq -- 最初に入力バッファを表示した後、入力バッファの残りを評価します。 .It Ic \&% Pq -- .Ic catch 例外ガード下の、入力バッファの残りを評価します。 .It Ic .# .Ic . と同様に動作しますが、後続の空白を表示しません。 .It Ic fclose Pq Ar fd -- ファイルをクローズします。 .It Ic fkey Pq Ar fd -- char ファイルから 1 文字読み込みます。 .It Ic fload Pq Ar fd -- ファイル .Em fd を処理します。 .It Ic fopen Pq Ar addr len mode Li -- Ar fd ファイルをオープンします。ファイル記述子を返します。 失敗時には \-1 を返します。 .Ar mode パラメータは、ファイルオープンの目的が読み込み用、書き込み用、 両用のいずれであるかを選択します。 定数 .Dv O_RDONLY , O_WRONLY , .Dv O_RDWR が .Pa /boot/support.4th で定義され、それぞれ読み込み専用、書き込み専用、読み書きを示します。 .It Xo .Ic fread .Pq Ar fd addr len -- len' .Xc ファイル .Em fd から .Em len バイトを、バッファ .Em addr へ読み込もうとします。 実際に読み込んだバイト数を返します。 エラー時またはファイルの終了の場合には -1 を返します。 .It Ic heap? Pq -- Ar cells ディレクトリヒープ中に残された空間を、セル数の単位で返します。 これは、動的なメモリ割り当ての意味で使われるヒープとは無関係です。 .It Ic inb Pq Ar port -- char ポートからバイトを読み込みます。 .It Ic key Pq -- Ar char コンソールから 1 文字読み込みます。 .It Ic key? Pq -- Ar flag コンソールから読み込み可能な文字がある場合、 .Ic 真 を返します。 .It Ic ms Pq Ar u -- .Em u マイクロ秒待ちます。 .It Ic outb Pq Ar port char -- ポートへバイトを書き込みます。 .It Ic seconds Pq -- Ar u 深夜 0 時からの秒数を返します。 .It Ic tib> Pq -- Ar addr len 入力バッファの残りを、スタック上の文字列として返します。 .It Ic trace! Pq Ar flag -- トレースを有効または無効にします。 .Ic catch とともには動作しません。 .El .Ss FREEBSD で定義される環境問い合わせ .Bl -tag -width Ds .It arch-i386 アーキテクチャが IA32 の場合 .Ic 真 です。 .It arch-alpha アーキテクチャが AXP の場合 .Ic 真 です。 .It FreeBSD_version コンパイル時の .Fx バージョンです。 .It loader_version .Nm のバージョンです。 .El .Ss システム文書 .Sh 関連ファイル .Bl -tag -width /boot/defaults/loader.conf -compact .It Pa /boot/loader .Nm 自身。 .It Pa /boot/boot.4th 追加の .Tn FICL の初期化。 .It Pa /boot/boot.conf .Nm のブートストラップスクリプト。価値が低下しています。 .It Pa /boot/defaults/loader.conf .It Pa /boot/loader.conf .It Pa /boot/loader.conf.local .Nm 設定ファイル。 .Xr loader.conf 5 で解説されています。 .It Pa /boot/loader.rc .Nm のブートストラップスクリプト。 .It Pa /boot/loader.help .Ic help がロードします。 ヘルプメッセージを含みます。 .El .Sh 使用例 シングルユーザモードでブートします: .Pp .Dl boot -s .Pp カーネルのユーザ設定ファイルをロードします。 他の .Ic load コマンドを試みる前にカーネルをロードする必要があることに注意してください。 .Bd -literal -offset indent load kernel load -t userconfig_script /boot/kernel.conf .Ed .Pp カーネルと起動画面をロードし、5 秒以内に自動ブートします。 .Bd -literal -offset indent load kernel load splash_bmp load -t splash_image_data /boot/chuckrulez.bmp autoboot 5 .Ed .Pp ルートデバイスのディスクユニットを 2 に設定し、ブートします。 IDE ディスクが 2 台のシステムで、 2 台目の IDE が wd1 ではなく wd2 に固定されているシステムにおいて、 必要となるでしょう。 .Bd -literal -offset indent -compact set root_disk_unit=2 boot /kernel .Ed .Pp 次を参照してください: .Bl -tag -width /usr/share/examples/bootforth/X .It Pa /boot/loader.4th 追加の組み込み的な語について。 .It Pa /boot/support.4th .Pa loader.conf が処理する語について。 .It Pa /usr/share/examples/bootforth/ 分類された使用例。 .El .Sh エラー 次の値を .Nm は返します: .Bl -tag -width XXXXX -offset indent .It 100 組み込みコマンド処理において任意のタイプのエラーが発生しました。 .It -1 .Ic Abort が実行されました。 .It -2 .Ic Abort" が実行されました。 .It -56 .Ic Quit が実行されました。 .It -256 インタプリトするテキストがありません。 .It -257 成功するためには更なるテキストが必要です -- 次の実行で終了します。 .It -258 .Ic Bye が実行されました。 .It -259 未定義エラー。 .El .Sh 関連項目 .Xr libstand 3 , .Xr loader.conf 5 , .Xr tuning 7 , .Xr boot 8 , .Xr btxld 8 .Sh 規格 ANS Forth 互換性の観点では、loader は .Bf Em 環境に制限がある ANS Forth System です。 Core Extensions 語集合からは、 .Ef .Bf Li .No .( , .No :noname , .No ?do , parse, pick, roll, refill, to, value, \e, false, true, .No <> , .No 0<> , compile\&, , erase, nip, tuck, maker .Ef .Bf Em を提供しています。 Exception Extensions 語集合を提供しています。 Locals Extensions 語集合を提供しています。 Memory-Allocation Extensions 語集合を提供しています。 Programming-Tools 拡張語集合からは .Ef .Bf Li \&.s, bye, forget, see, words, \&[if], \&[else], \&[then] .Ef .Bf Em を提供しています。 Search-Order 拡張語集合を提供しています。 .Ef .Sh 歴史 .Nm が最初に登場したのは .Fx 3.1 です。 .Sh 作者 .An -nosplit .Nm は .An Michael Smith Aq msmith@FreeBSD.org が記述しました。 .Pp .Tn FICL は .An John Sadler Aq john_sadler@alum.mit.edu が記述しました。 .Sh バグ .Ic expect と .Ic accept の語は、コンソールからではなく入力バッファから読み込みます。 後者については修正されますが、前者は修正されません。 Index: head/ja_JP.eucJP/man/man8/rc.8 =================================================================== --- head/ja_JP.eucJP/man/man8/rc.8 (revision 22766) +++ head/ja_JP.eucJP/man/man8/rc.8 (revision 22767) @@ -1,572 +1,567 @@ .\" Copyright (c) 1980, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Portions of this manual page are Copyrighted by .\" The NetBSD Foundation. .\" .\" 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. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. .\" .\" @(#)rc.8 8.2 (Berkeley) 12/11/93 -.\" %FreeBSD: src/share/man/man8/rc.8,v 1.25 2004/07/07 19:57:15 ru Exp % +.\" %FreeBSD: src/share/man/man8/rc.8,v 1.25.2.1 2004/10/10 09:50:52 mtm Exp % .\" .\" $FreeBSD$ .\" .Dd November 4, 2002 .Dt RC 8 .Os .Sh 名称 .Nm rc .Nd 自動リブート処理とデーモン起動のためのコマンドスクリプト .Sh 書式 .Nm .Nm rc.conf .Nm rc.conf.local .Nm rc.d/ .Nm rc.firewall .Nm rc.local .Nm rc.shutdown .Nm rc.subr .Sh 解説 .Nm ユーティリティは、 自動ブート処理を制御するコマンドスクリプトで、 .Xr init 8 に呼ばれます。 .Nm rc.local は特定サイトに特化したコマンドを記述するスクリプトです。 今日では、典型的には .Pa /usr/local/etc/rc.d/ の機構が .Nm rc.local の代りに使用されます。 しかしながら、 .Nm rc.local を使用したいのであればこれはまだサポートされています。 この場合、 .Nm rc.local が .Pa /etc/rc.conf を読み取るようにしてから、 あなたのシステム特有の更なるカスタムスタートアップコードを .Nm rc.local に追加してください。 .Nm rc.local を扱う最良の方法は、これを .Nm rc.d/ スタイルのスクリプトとして分割して、これらを .Pa /usr/local/etc/rc.d/ に置くことです。 .Nm rc.conf ファイルはスタートアップスクリプト群から 参照されるグローバルなシステム構成情報を持ち、 .Nm rc.conf.local はローカルなシステム構成情報を持ちます。 更なる情報については .Xr rc.conf 5 を参照してください。 .Pp .Nm rc.d/ ディレクトリは、ブート時およびシャットダウン時に 自動的に実行されるスクリプトを保持します。 .Ss Nm No の動作 .Bl -enum .It .Pa /etc/rc.subr をソースし、様々な .Xr rc.subr 8 シェル関数を使えるようにロードします。 .It 自動ブート時には、 .Va autoboot Ns = Ns Li yes を設定し、フラグ .Pq Va rc_fast Ns = Ns Li yes を有効にすることで .Nm rc.d/ スクリプトが既に動作中のプロセスのチェックをしないようにします (これによりブート処理を高速化します)。 この .Va rc_fast Ns = Ns Li yes による高速化は、シングルユーザシェルから抜けた後で .Nm が起動されるときには使用されません。 .It .Xr rcorder 8 を起動し、 .Pa /etc/rc.d/ 中のファイルで .Dq Li nostart キーワード .Xr ( rcorder 8 の .Fl s フラグを参照) を持たないものを並び換え、結果をある変数に代入します。 .It .Xr ( rc.subr 8 の) .Fn run_rc_script を使用し、各スクリプトを順番に呼び出します。 この関数は .Va $1 を .Dq Li start に設定し、サブシェルにてスクリプトをソースします。 スクリプトに .Pa .sh サフィックスがある場合、スクリプトは現在のシェルに直接ソースされます。 .El .Ss Nm rc.shutdown の動作 .Bl -enum .It .Pa /etc/rc.subr をソースし、様々な .Xr rc.subr 8 シェル関数を使えるようにロードします。 .It .Xr rcorder 8 を起動し、 .Pa /etc/rc.d/ 中のファイルで .Dq Li shutdown キーワード .Xr ( rcorder 8 の .Fl k フラグを参照) を持つものを逆順に並び換え、結果をある変数に代入します。 .It .Xr ( rc.subr 8 の) .Fn run_rc_script を使用し、各スクリプトを順番に呼び出します。 この関数は .Va $1 を .Dq Li stop に設定し、サブシェルにてスクリプトをソースします。 スクリプトに .Pa .sh サフィックスがある場合、スクリプトは現在のシェルに直接ソースされます。 .El .Ss Nm rc.d/ の内容 .Nm rc.d/ は .Pa /etc/rc.d/ にあります。 次のファイル命名規則が現在 .Nm rc.d/ で使用されています: .Bl -tag -width ".Pa ALLUPPERCASE" -offset indent .It Pa ALLUPPERCASE .Dq プレースホルダ スクリプトであり、ある動作が他の動作の前に実行されることを保証します。 起動での順番では次のものがあります: .Bl -tag -width ".Pa NETWORKING" .It Pa NETWORKING 基本的なネットワークサービスが起動することを保証します。 一般的なネットワーク設定 .Pq Pa network1 , network2 , network3 が含まれます。 .It Pa SERVERS 基本的なサービス .Pa ( NETWORKING , ppp-user , syslogd , isdnd 等) が起動することを保証します。 これらは、早期に開始する .Pa ( named などの) サービスのために存在します。 これらは後述の .Pa DAEMON に要求されています。 .It Pa DAEMON .Pa lpd や .Pa ntpd といったすべての汎用デーモンの前のチェックポイントです。 .It Pa LOGIN ユーザログインサービス .Pa ( inetd や .Pa sshd ) およびユーザとしてコマンドを実行しうるサービス .Pa ( cron や .Pa sendmail ) の前のチェックポイントです。 .El .It Pa foo.sh サブシェルではなく現在のシェルにソースされるスクリプトは .Pa .sh サフィックスを持ちます。 この使用には非常に注意してください。 スクリプトが停止してしまうと、起動シーケンスも停止してしまいますので。 .It Pa bar サブシェル内でソースされるスクリプト。 これらのスクリプトは必要ならば次のシェルコマンドで、ブートを停止できます: .Bd -literal -offset indent if [ "$autoboot" = yes ]; then kill -TERM $$ fi exit 1 .Ed .Pp これを使用することはかなり控えてください! .El .Pp 各スクリプトは .Xr rcorder 8 キーワード、特に適切な .Dq Li PROVIDE エントリと必要に応じた .Dq Li REQUIRE および .Dq Li BEFORE のキーワードを含むべきです。 -さらに、すべてのスクリプトは -.Dq Li "# KEYWORD: FreeBSD" -行を持つ必要があります。 .Pp 各スクリプトは少なくとも下記の引数を扱えることを期待されます。 これらは、 .Fn run_rc_command 関数を使用する場合には自動的にサポートされます: .Bl -tag -width ".Cm restart" -offset indent .It Cm start サービスを開始します。 サービスが開始するよう .Xr rc.conf 5 で指定されるか確認すべきです。 また、サービスが既に実行中かどうか確認し、 その場合にはサービス開始を拒否すべきです。 システムが直接マルチユーザモードを起動する場合、ブート処理を高速するために、 標準の .Fx スクリプトは、後者の確認を行いません。 .Cm forcestart が指定された場合、 .Xr rc.conf 5 のチェックは無視し、強制的に開始します。 .It Cm stop .Xr rc.conf 5 でサービス開始が指定されている場合、サービスを停止します。 サービスが実際に動作していることを確認し、 そうでない場合には文句を言うべきです。 .Cm forcestop が指定された場合、 .Xr rc.conf 5 のチェックは無視し、停止を試みます。 .It Cm restart .Cm stop を実行し、 .Cm start を実行します。 .It Cm status スクリプトが (1 度限りの動作ではなく) プロセスを起動する場合、 プロセスの状態を表示します。 そうでない場合、この引数をサポートする必要はありません。 デフォルトは、(実行中のものがあれば) プログラムのプロセス ID を表示します。 .It Cm poll スクリプトが (1 度限りの動作ではなく) プロセスを起動する場合、 コマンドの終了を待ちます。 そうでない場合、この引数をサポートする必要はありません。 .It Cm rcvar サービスの起動にどの .Xr rc.conf 5 変数が使用されたかを表示します (もしあれば)。 .El .Pp スクリプトが追加コマンドを実装する必要がある場合、 .Va extra_commands 変数にそれらを列挙し、 コマンド名からなる変数にその動作を定義可能です .Sx ( 使用例 節を参照してください)。 .Pp .Pa /usr/local/etc/rc.d/ ディレクトリ内の古いスクリプトには、次の重要事項が適用されます: .Pp .Bl -bullet .It スクリプトは、 .Xr basename 1 がシェルグロブパターン .Pa *.sh にマッチし、実行可能である場合のみ、実行されます。 このディレクトリ中の他のファイルやディレクトリは、黙って無視されます。 .It ブート時にスクリプトを実行するとき、文字列 .Dq Li start が、最初かつ唯一の引数として渡されます。 シャットダウン時には、文字列 .Dq Li stop が、最初かつ唯一の引数として渡されます。 すべての .Nm rc.d/ スクリプトは、これら引数を適切に扱えるものであると期待されます。 指定時に動作不要の場合 (ブート時にもシャットダウン時にも)、 スクリプトは成功裏に終了し、エラーメッセージを出力してはなりません。 .It 各ディレクトリ内のスクリプトは、辞書順に処理されます。 特定の順序が必要な場合には、 既存のファイル名の前に番号を付けると良いかもしれません。 例えば、 .Pa 100.foo は .Pa 200.bar の前に実行されますが、番号を前に付けないと逆の順番になります。 .It 典型的な各スクリプトの出力は、1 個の空白文字の後に、 起動または終了されたソフトウェアパッケージ名が続き、 最後には改行文字は .Em 付きません ( .Sx 使用例 の節を見てください)。 .El .Sh 興味深いスクリプト 自動リブート処理の進行中、 .Nm は .Cm autoboot を引数として起動されます。 .Pa /etc/rc.d/ から起動されるスクリプトのひとつが .Pa /etc/rc.d/fsck です。 このスクリプトは .Xr fsck 8 を .Fl p および .Fl F オプション付きで実行し、 前回のシステムシャットダウンによる些細なディスク不整合を全て .Dq 修繕 し、 ハードウェアあるいはソフトウェアの障害から生じた 重大なディスク不整合を調べます。 これが失敗すると、 ハードウェアもしくはソフトウェアの失敗により発生した重大な矛盾の確認/修復は、 ブート処理の最後にバックグラウンドで実行されます。 .Cm autoboot が設定されていない場合、 例えばシングルユーザモードからマルチユーザモードへ以降するとき、 このスクリプトは何もしません。 .Pp .Nm rc.early スクリプトは、起動処理の非常に早い段階、 すなわちファイルシステムチェックの直前に実行されます。 .Nm rc.early スクリプトは価値が低下しています。 このファイルの中のコマンドは、 .Nm rc.d/ スタイルスクリプトへ分割し、 .Nm システムに組み込むべきです。 .Pp .Pa /etc/rc.d/local スクリプトは複数の .Nm rc.d/ ディレクトリ中のスクリプトを実行可能です。 デフォルト位置は .Pa /usr/local/etc/rc.d/ と .Pa /usr/X11R6/etc/rc.d/ ですが、 .Va local_startup .Xr rc.conf 5 変数で上書き可能です。 .Pp .Pa /etc/rc.d/serial スクリプトは、 シリアルデバイスの特殊な構成があればそれを設定するために使用します。 .Pp .Pa /etc/rc.d/network* スクリプトは、ネットワークを起動するために使用します。 ネットワークの起動は複数パスで行われます。 最初のパス .Pa /etc/rc.d/network1 は、ホスト名とドメイン名を設定し、 ネットワークインタフェースを構成します。 .Pa /etc/rc.d/network2 スクリプトは、ルーティング開始し、ルーティングオプションを設定します。 .Pa /etc/rc.d/network3 スクリプトは、追加のネットワークオプションを設定します。 最後に .Pa /etc/rc.d/network_ipv6 スクリプトは、IPv6 インタフェースとオプションを設定します。 .Pp .Nm rc.firewall スクリプトは、 カーネルベースのファイアウォールサービスの規則の設定に使用されます。 .Pp .Bl -tag -width ".Ar filename" -compact -offset indent .It Cm open 全入力を許可します。 .It Cm client このマシンのみを保護しようとします。 .It Cm simple 全ネットワークを保護しようとします。 .It Cm closed lo0 以外の全 IP サービスを無効にします。 .It Cm UNKNOWN ファイアウォール規則のロードを無効にします。 .It Cm filename 指定したファイル名の規則をロードします (フルパス指定が必要)。 .El .Pp .Pa /etc/rc.d/atm* スクリプトは、ATM ネットワークインタフェースを設定するために使用されます。 インタフェースは 3 つのパスで設定されます。 第 1 のパスでは、インタフェースの初期設定をおこないます。 第 2 のパスでは、インタフェースの設定が終り、 PVC および永続的な ATMARP エントリを定義します。 第 3 のパスでは、任意の ATM デーモンを起動します。 .Pp ネットワーク関連デーモンを含むほとんどのデーモンは、 起動・停止・サービスの状態確認のために使用可能な自身のスクリプトを .Pa /etc/rc.d/ に持ちます。 .Pp 例えば .Pa /etc/rc.d/apm 等のアーキテクチャ固有スクリプトは、デーモンの起動前に、 特に該当アーキテクチャ上であるのかを確認します。 .Pp 伝統に従い、すべてのスタートアップファイルは .Pa /etc ディレクトリに置かれます。 .Sh 使用例 以下は最小の .Nm rc.d/ スタイルスクリプトです。 ほとんどのスクリプトではこれになんらかの追加が必要でしょう。 .Bd -literal -offset indent #!/bin/sh # # PROVIDE: foo # REQUIRE: bar_service_required_to_precede_foo # BEFORE: baz_service_requiring_foo_to_precede_it -# KEYWORD: FreeBSD \&. /etc/rc.subr name="foo" rcvar=`set_rcvar` command="/usr/local/bin/foo" load_rc_config $name run_rc_command "$1" .Ed .Pp スクリプトによっては追加機能を提供したいでしょう。 追加コマンドを介することで、この機能にアクセス可能です。 スクリプトは、コマンドを必要なだけ列挙し定義可能です。 .Bd -literal -offset indent #!/bin/sh # # PROVIDE: foo # REQUIRE: bar_service_required_to_precede_foo # BEFORE: baz_service_requiring_foo_to_precede_it -# KEYWORD: FreeBSD \&. /etc/rc.subr name="foo" rcvar=`set_rcvar` command="/usr/local/bin/foo" extra_commands="nop hello" hello_cmd="echo Hello World." nop_cmd="do_nop" do_nop() { echo "I do nothing." } load_rc_config $name run_rc_command "$1" .Ed .Pp ブート時にデーモンを起動し、シャットダウン時にこれを終了する、 古いスタイルの .Pa /usr/local/etc/rc.d/ スクリプトの仮想的な例を示します。 .Bd -literal -offset indent #!/bin/sh - # # foobar パッケージの初期化/シャットダウンスクリプト case "$1" in start) /usr/local/sbin/foo -d && echo -n ' foo' ;; stop) kill `cat /var/run/foo.pid` && echo -n ' foo' ;; *) echo "unknown option: $1 - should be 'start' or 'stop'" >&2 ;; esac .Ed .Pp シャットダウン時には .Xr init 8 が全プロセスを終了させるので、明示的な .Xr kill 1 は不要ですが、これが含まれることが多いです。 .Sh 関連ファイル .Bl -tag -compact .It Pa /etc/rc .It Pa /etc/rc.conf .It Pa /etc/rc.conf.local .It Pa /etc/rc.d/ .It Pa /etc/rc.firewall .It Pa /etc/rc.local .It Pa /etc/rc.shutdown .It Pa /etc/rc.subr .It Pa /var/run/dmesg.boot .Nm プロセスの開始直後に .Xr dmesg 1 が結果を書き込みます。 カーネル内の dmesg バッファがもはやこの情報を保持していない場合に有用です。 .El .Sh 関連項目 .Xr kill 1 , .Xr rc.conf 5 , .Xr init 8 , .Xr rcorder 8 , .Xr rc.subr 8 , .Xr reboot 8 , .Xr savecore 8 .Sh 歴史 .Nm スクリプトは .Bx 4.0 で登場しました。 Index: head/ja_JP.eucJP/man/man9/microtime.9 =================================================================== --- head/ja_JP.eucJP/man/man9/microtime.9 (revision 22766) +++ head/ja_JP.eucJP/man/man9/microtime.9 (revision 22767) @@ -1,95 +1,114 @@ .\" Copyright (c) 2000 Kelly Yancey .\" 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. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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/man9/microtime.9,v 1.7 2002/01/26 21:41:28 arr Exp % +.\" %FreeBSD: src/share/man/man9/microtime.9,v 1.7.8.1 2004/09/22 04:43:33 brooks Exp % .\" .\" $FreeBSD$ -.Dd January 3, 2000 +.Dd September 16, 2004 .Dt MICROTIME 9 .Os .Sh 名称 +.Nm bintime , +.Nm getbintime , .Nm microtime , .Nm getmicrotime , .Nm nanotime , .Nm getnanotime .Nd 現在時刻の取得 .Sh 書式 .In sys/time.h .Ft void +.Fn bintime "struct bintime *bt" +.Ft void +.Fn getbintime "struct bintime *bt" +.Ft void .Fn microtime "struct timeval *tv" .Ft void .Fn getmicrotime "struct timeval *tv" .Ft void .Fn nanotime "struct timespec *ts" .Ft void .Fn getnanotime "struct timespec *tsp" .Sh 解説 -.Fn microtime +.Fn bintime および -.Fn getmicrotime +.Fn getbintime 関数は、 -.Fa tv +.Fa bt によって指定されたアドレスに、 +.Ft bintime +構造体としてシステム時刻を保存します。 +.Fn microtime +および +.Fn getmicrotime +関数も同等の機能を果たしますが、代わりに .Ft timeval -構造体として、システム時刻を保存します。 +構造体として時刻を保存します。 +同様に、 .Fn nanotime および .Fn getnanotime -関数は、同じ作用を実行しますが、代りに +関数は、 .Ft timespec -構造体として時刻を記録します。 +構造体として時刻を保存します。 .Pp -.Fn microtime -および +.Fn bintime , +.Fn microtime , .Fn nanotime は、可能な限り正確な現在時刻を返す時刻カウンタを、常に請求します。 それに反して、 -.Fn getmicrotime -および +.Fn getbintime , +.Fn getmicrotime , .Fn getnanotime 関数は、正確ではないが高速に得られる時刻を返す抽象化です。 .Pp -.Fn getmicrotime -および +.Fn getbintime , +.Fn getmicrotime , .Fn getnanotime 関数の意図は、タイマの正確さ対実行時間のユーザの好みを強化することです。 .Sh 関連項目 +.Xr binuptime 9 , +.Xr getbinuptime 9 , .Xr getmicrouptime 9 , .Xr getnanouptime 9 , .Xr microuptime 9 , .Xr nanouptime 9 , .Xr tvtohz 9 .Sh 歴史 +.Nm bintime +関数は、 +.Fx 5.0 +で初めて登場しました。 .Nm および .Nm nanotime 関数は .Fx 3.0 で初めて登場しましたが、別の形で .Bx 4.4 から存在していました。 .Sh 作者 このマニュアルページは .An Kelly Yancey Aq kbyanc@posi.net が書きました。 Index: head/ja_JP.eucJP/man/man9/microuptime.9 =================================================================== --- head/ja_JP.eucJP/man/man9/microuptime.9 (revision 22766) +++ head/ja_JP.eucJP/man/man9/microuptime.9 (revision 22767) @@ -1,86 +1,101 @@ .\" Copyright (c) 2000 Kelly Yancey .\" 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. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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/man9/microuptime.9,v 1.5 2001/10/01 16:09:25 ru Exp % +.\" %FreeBSD: src/share/man/man9/microuptime.9,v 1.5.8.1 2004/09/22 04:43:33 brooks Exp % .\" .\" $FreeBSD$ -.Dd January 3, 2000 +.Dd September, 16 2004 .Dt MICROUPTIME 9 .Os .Sh 名称 +.Nm binuptime , +.Nm getbinuptime , .Nm microuptime , .Nm getmicrouptime , .Nm nanouptime , .Nm getnanouptime .Nd 起動からの経過時間の取得 .Sh 書式 .In sys/time.h .Ft void +.Fn binuptime "struct bintime *bt" +.Ft void +.Fn getbinuptime "struct bintime *bt" +.Ft void .Fn microuptime "struct timeval *tv" .Ft void .Fn getmicrouptime "struct timeval *tv" .Ft void .Fn nanouptime "struct timespec *ts" .Ft void .Fn getnanouptime "struct timespec *tsp" .Sh 解説 -.Fn microuptime +.Fn binuptime および -.Fn getmicrouptime +.Fn getbinuptime 関数は、 -.Fa tv +.Fa bt によって指定されたアドレスに、 -.Ft timeval +.Ft bintime 構造体として、起動からの経過時間を保存します。 +.Fn microuptime +および +.Fn getmicrouptime +関数は、同等の機能を果たしますが、代りに +.Ft timeval +構造体として経過時間を記録します。 +同様に、 .Fn nanouptime および .Fn getnanouptime -関数は、同じ作用を実行しますが、代りに +関数は、 .Ft timespec -構造体として経過時間を記録します。 +構造体として経過時間を保存します。 .Pp -.Fn microuptime -および +.Fn binuptime , +.Fn microuptime , .Fn nanouptime は、常に可能な限り正確な現在時刻を返す時刻カウンタを請求します。 それに反して、 -.Fn getmicrouptime -および +.Fn getbinuptime , +.Fn getmicrouptime , .Fn getnanouptime 関数は、正確ではないが高速に得られる時刻を返す抽象化です。 .Pp -.Fn getmicrouptime -および +.Fn getbinuptime , +.Fn getmicrouptime , .Fn getnanouptime 関数の意図は、タイマの正確さ対実行時間のユーザの好みを強化することです。 .Sh 関連項目 +.Xr bintime 9 , +.Xr getbintime 9 , .Xr getmicrotime 9 , .Xr getnanotime 9 , .Xr microtime 9 , .Xr nanotime 9 , .Xr tvtohz 9 .Sh 作者 このマニュアルページは .An Kelly Yancey Aq kbyanc@posi.net が書きました。 Index: head/ja_JP.eucJP/man/man9/time.9 =================================================================== --- head/ja_JP.eucJP/man/man9/time.9 (revision 22766) +++ head/ja_JP.eucJP/man/man9/time.9 (revision 22767) @@ -1,133 +1,113 @@ .\" $NetBSD: time.9,v 1.1 1995/11/25 21:24:53 perry Exp $ .\" .\" Copyright (c) 1994 Christopher G. Demetriou .\" 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. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by Christopher G. Demetriou .\" for the NetBSD Project. .\" 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/man9/time.9,v 1.12 2004/06/16 08:33:57 ru Exp % +.\" %FreeBSD: src/share/man/man9/time.9,v 1.12.2.1 2004/09/22 04:43:33 brooks Exp % .\" .\" $FreeBSD$ -.Dd March 22, 1997 +.Dd September 17, 2004 .Dt TIME 9 .Os .Sh 名称 .Nm boottime , -.Nm mono_time , -.Nm runtime , -.Nm time +.Nm time_second , +.Nm time_uptime .Nd システム時刻変数 .Sh 書式 +.In sys/time.h .Bl -item -compact .It .Va extern struct timeval boottime ; .It -.Va extern volatile struct timeval mono_time ; +.Va extern struct time_t time_second ; .It -.Va extern struct timeval runtime ; -.It -.Va extern struct timeval time ; +.Va extern struct timeval time_uptime ; .El .Sh 解説 -.Va time -変数はシステムの -.Dq 柱時刻 -クロックです。 -これはブート時に -.Xr inittodr 9 -によって設定され、 -.Xr settimeofday 2 -システムコールと周期的なクロック割り込みによって更新されます。 -.Pp .Va boottime 変数はシステムのブート時刻を保持します。 -これはシステムブート時に -.Va time -から設定され、システム時刻が -.Xr settimeofday 2 -を使用して調整されたときに更新されます。 .Pp -.Va runtime -変数はシステムが現在のプロセスにスイッチした時刻を保持します。 -これは個々のコンテキストスイッチの後に設定され、システム時刻が -.Xr settimeofday 2 -を使用して調整されたときに更新されます。 -.Va runtime -はシステムのアカウンティングのために使用されているので、 -.Va time -からコピーされるのではなく、高分解能な -.Xr microtime 9 -関数を使用して設定されます。 +.Va time_second +変数はシステムの +.Dq 柱時計 +クロック (秒) です。 .Pp -.Va mono_time -変数は単調に増加するシステムクロックです。 -これはブート時に -.Va time -から設定され、周期的なタイマ割り込みによって更新されます。 -.Xr ( settimeofday 2 -によって更新されません。) +.Va time_uptime +変数は、ブートしてからの秒数です。 .Pp -これらの変数の全ては、1970 年 1 月 1 日の深夜 (0 時) から経過した時間を、 -秒およびマイクロ秒で表現しています。 -.Pp -.Va time -または -.Va mono_time -の読込みまたは書込み時には、クロック割り込みはブロックされるべきです。 -何故ならば、これらの変数は -.Fn hardclock -によって更新されるからです。 -.Xr gettime 9 -関数は不可分な方法で -.Va time -変数を読み取るために使用することができます。 -.Va mono_time -にアクセスするための同等の関数はありません。 +.Xr bintime 9 , +.Xr getbintime 9 , +.Xr microtime 9 , +.Xr getmicrotime 9 , +.Xr nanotime 9 , +.Xr getnanotime 9 +関数は、現在時刻をより正確に、不可分に取得することができます。 +同様に +.Xr binuptime 9 , +.Xr getbinuptime 9 , +.Xr microuptime 9 , +.Xr getmicrouptime 9 , +.Xr nanouptime 9 , +.Xr getnanouptime 9 +関数は、ブートしてからの経過時間をより正確に、不可分に取得することができます。 .Va boottime -および -.Va runtime -変数は特別な警戒なしに読み書きすることができます。 +変数は、特別な警戒なしに読み書きすることができます。 .Pp -.Xr gettime 9 -および -.Xr microtime 9 -によって返される時刻値は更新方法が違いますので、この 2 つの -ルーチンの結果を比較すると、 -時間が逆戻りするような結果となるかもしれないことに注意してください。 -この問題は、一方の関数またはもう一方の関数を -コンテキスト中で首尾一貫して使用することにより、避けることができます。 .Sh 関連項目 +.Xr clock_settime 2 , +.Xr ntp_adjtime 2 , .Xr settimeofday 2 , -.Xr gettime 9 , -.\" .Xr hardclock 9 , -.\" .Xr hz 9 , -.Xr inittodr 9 , -.Xr microtime 9 -.Sh バグ -マルチプロセッサシステムにおいて単一の -.Va runtime -変数を持つという考えは明らかに適切ではありません。 +.Xr getbintime 9 , +.Xr getbinuptime 9 , +.Xr getmicrotime 9 , +.Xr getmicrouptime 9 , +.Xr getnanotime 9 , +.Xr getnanouptime 9 , +.Xr bintime 9 , +.Xr binuptime 9 , +.Xr microtime 9 , +.Xr microuptime 9 , +.Xr nanotime 9, +.Xr nanouptime 9 +.Rs +.%A "Poul-Henning Kamp" +.%T "Timecounters: Efficient and precise timekeeping in SMP kernels" +.%J "Proceedings of EuroBSDCon 2002" +.%C "Amsterdam" +.%O /usr/share/doc/papers/timecounter.ascii.gz +.Re +.Rs +.%A "Marshall Kirk McKusick" +.%A "George V. Neville-Neil" +.%B "The Design and Implementation of the FreeBSD Operating System" +.%D "July 2004" +.%I "Addison-Wesley" +.%P "57-61,65-66" +.Re