訳註: これは作業してる最中のもので、本来、訳作業者以外は見えぬべきものです。 訳作業者以外は見ないでください。意味が反対になったりとか当然にあるから、 内容は利用しないでください。この言語への変換作業(翻訳作業)物に関しては、現在、オープンなライセンス条件ではありません。 十進240のコードのキャラクターを<240>に置換してる場合あり
Chapter7.The rc.d System

Table of Contents

7.1. Basics
7.2. The rc.d Scripts
7.3. The Role of rcorder and rc.d Scripts
7.4. Additional Reading

NetBSD はサービスの制御に特有のスクリプトを用い、 System V および Linux が用いているものに似ています、が、 runlevels はありません。 この章は rc.d システムの概観およびその設定です。

7.1.Basics

システム startup ファイルは /etc ディレクトリーの中に住んでいます。 それらは:

  • /etc/rc

  • /etc/rc.conf

  • /etc/rc.d/*

  • /etc/rc.lkm

  • /etc/rc.local

  • /etc/rc.shutdown

  • /etc/rc.subr

  • /etc/defaults/*

  • /etc/rc.conf.d/*

最初に、制御およびサポートするスクリプトを眺めます ( rc(8)にも documented)。

  • startup起動 時、カーネルの全デバイス初期化の後、 カーネルは init(8) を starts し、これが /etc/rc を in turn runs します。

  • /etc/rc.d 中のスクリプトの sorts に、 /etc/rcrcorder(8) を用い、 その順番で runs します。 rc.d スクリプト の順番決定について、詳細は rcorder(8) を御覧ください。

  • /etc/rc.subr/etc/rc および、さまざまな rc.d スクリプト で使われる共通の関数が入っています。

  • システムを shutdown(8) でシャットダウンするとき、 /etc/rc.shutdown を run 、これが /etc/rc.d 中のスクリプトを逆順 ( rcorder(8) で決められる)で runs 。 註として、 halt(8) コマンドを用いてシステムをシャットダウンした場合、 これらのスクリプトは run されません。

rc.d ディレクトリーの外部に追加のスクリプトが:

  • /etc/rc.lkm は Loadable Kernel Modules (LKMs) をロードまたはアンロード。 modload(8) および /etc/rc.d/lkm[123] を御覧ください。

  • /etc/rc.local は boot up 時 ほとんど最後に呼び出されるスクリプト。 このスクリプトは管理者が rc.d モデルには fit しない ローカルデーモンの start のために編集できます。

rc.d スクリプトは、中枢設定ファイル /etc/rc.conf で制御されていて、これは /etc/defaults/rc.conf から標準設定をロードします。 標準設定を変更したい場合、 /etc/defaults/rc.conf を編集せずに; 代わりに、 /etc/rc.conf でくつがえす設定をしてください。

利用可能なサービスの学習については、 rc.conf(5) man page を読むのが 良い考えです。

次の例は、 default で disabled の SSH デーモンを enable にする方法をあらわし:

# cd /etc; grep ssh defaults/rc.conf
sshd=NO                 sshd_flags=""
# echo "sshd=YES" >> rc.conf

これで sshd(8) は、システムの startup 時に自動的に started されます。 次の節は、いつでもサービスを起動および停止する方法を記述します。

最後だけど最低ではなく、 与えられている rc.d スクリプトの挙動を上書きするには、スクリプトそれ自体を編集せずに、 /etc/rc.conf.d/ ディレクトリーにファイルを作る ことでできます。

7.2.The rc.d Scripts

サービス制御の実際のスクリプトは /etc/rc.d にあります。これらのスクリプトは 起動時に自動的に run 、ですが、必要なら手作業で called できます。 次の例は、前の節で enabled にした SSH デーモンの start のしかたです:

# /etc/rc.d/sshd start
Starting sshd.

後に、 SSH デーモンを stop したいと願うなら、次のコマンドを run :

# /etc/rc.d/sshd stop
Stopping sshd.
Waiting for PIDS: 123.

rc.d スクリプトは次の引数の一つを持ち:

  • start

  • stop

  • restart

  • status

いくつかのスクリプトでは、他の引数をサポートし(例、 reload) 、 しかし、全スクリプトが最低でも上のコマンドをサポートしています。

例として、 named(8) データベースに新しい record を追加した後、デーモンに その設定ファイルを再読み込みするよう言うことができ、 次のコマンドで:

# /etc/rc.d/named reload
Reloading named config files.

註として、上で論ぜられたコマンドの全ては、 /etc/rc.conf で enabled の特定のサービスのみ 作用できます。この必要条件を回避することが、 コマンドに one を前に付けることででき、このように:

# /etc/rc.d/httpd onestart
Starting httpd.

上のコマンドで httpd(8) サービス を一回 start させます。 サービスを停止させるには started させたこの手法で、スクリプトに onestop を 渡します。

7.3.The Role of rcorder and rc.d Scripts

Unix システムごとに、起動するシステムは、どのサービスを started するか、 順番を一通りかその他かに決めます。いくつかの Unix システムでは、これはファイルに番号付け、および/または、 run level を 分離したディレクトリーに置くことで行われました。 Solaris は /etc/rc[23].d/S* のようなワイルドカードを頼り、 展開したときに番号順に並べます。幾つかのものは、 1つの一枚岩のスクリプト中に started されるべきコマンド全部を単純に置きます (これは伝統的 BSD 方法で、 rc.d システムになる前の NetBSD での方法です)。現代の NetBSD では、これは rc.d スクリプトとその中身で行われます。どうか注意として、 NetBSD は、 Solaris および Linux のような SysV-style システムにみつかるような 多重(multiple) runlevels を持っていません。

各 rc.d スクリプトの始まりには、 コメントアウトされた行が連続していて、次の items の1つはそこにあります:

  • REQUIRE

  • PROVIDE

  • BEFORE

  • KEYWORD

これらは、特定のスクリプトの依存関係を記述していて、 rcorder に、スクリプトの境遇が要求するのは updown か 簡単に動作するのを許します。例として、 /etc/rc.d/nfsd の順序情報をここに:

...
 PROVIDE: nfsd
 REQUIRE: rpcbind mountd
...

ここで、このスクリプトは nfsd サービスを 提供(provide) し、 rpcbind および mountd が先に running していることを 要求(require) していることがわかります。 rcorder(8) ユーティリティーはシステム起動時に使われ、全ての rc.d スクリプトに目を通して、 これらがどの順番で実行されるべきか決定します。

7.4.Additional Reading

Luke Mewburn, rc.d の主要な設計者の一人で、 USENIX 2001 にて gave a presentation on the system 。それは PDF に、そのフォーマットで利用可能です。