コンテンツにスキップ

FreeBSD/RCスタートアップシステム

出典: フリー教科書『ウィキブックス(Wikibooks)』

FreeBSDのRCスタートアップシステム

[編集]

FreeBSDのRCスタートアップシステムは、システムのブートプロセスを管理し、自動起動サービスを制御するための仕組みです。このシステムは、起動およびシャットダウン時に一連のスクリプトを実行し、サービスやシステムコンポーネントを適切な順序で処理します。

主なコンポーネント

[編集]
  • rc: FreeBSDの起動プロセスを管理するメインスクリプトで、init(8)によって呼び出されます。
  • rc.conf: グローバルなシステム設定を格納するファイルで、起動スクリプトが参照します。
  • rc.conf.local: ローカルシステム固有の設定を格納するファイル。rc.confを補完します。
  • /etc/rc.d/: 起動時およびシャットダウン時に実行されるスクリプトが配置されるディレクトリ。
  • /usr/local/etc/rc.d/: サードパーティ製のサービススクリプトを配置するためのディレクトリ。
  • service(8): 起動スクリプトを管理するための便利なコマンドインターフェース。
  • sysrc(8): rc.confファイルの設定をスクリプトから変更するためのコマンド。

起動プロセスの流れ

[編集]
  1. 初期設定: 自動起動時にautoboot=yesを設定し、rc_fast=yesフラグを有効にしてブートプロセスを高速化します。
  2. ディスクレス起動の確認: ディスクレスシステムの場合は/etc/rc.initdisklessを実行します。
  3. スクリプトと設定の読み込み: /etc/rc.subrを読み込んで、共通の関数を利用可能にします。また、rc.confrc.conf.localを読み込みます。
  4. スクリプトの順序付け: rcorder(8)を使用して、/etc/rc.d/内のスクリプトを依存関係に基づいて適切な順序に並べます。
  5. スクリプトの実行: 並べ替えられたスクリプトをrun_rc_script()関数で順次実行します。
  6. ローカルスクリプトの実行: /usr/local/etc/rc.d/内のスクリプトを実行します。

シャットダウンプロセスの流れ

[編集]
  1. 初期設定: シャットダウンモードを設定し、/etc/rc.subrを読み込みます。
  2. スクリプトの順序付け: rcorder(8)を使用して、/etc/rc.d/および/usr/local/etc/rc.d/内のスクリプトを逆順に並べます。
  3. スクリプトの実行: 各スクリプトをrun_rc_script()で順次実行し、サービスを停止します。

/etc/rc.d/のスクリプト構造

[編集]
  • スクリプトには、依存関係を定義するためのPROVIDEREQUIREBEFOREといったキーワードが含まれます。
  • 各スクリプトは、以下の標準引数をサポートします:
    • start: サービスを起動。
    • stop: サービスを停止。
    • restart: サービスを再起動。
    • status: サービスの状態を確認。
    • enable: サービスをrc.confで有効化。
    • disable: サービスをrc.confで無効化。

ローカルスクリプトの管理

[編集]

従来は/etc/rc.localが使用されていましたが、現在では/usr/local/etc/rc.d/に配置する形式が推奨されています。このディレクトリ内のスクリプトは、*.sh形式で実行可能属性が設定されている場合に実行されます。

このように、FreeBSDのRCスタートアップシステムは、スクリプトによる柔軟なサービス管理を可能にし、依存関係の制御や効率的な起動プロセスを実現します。