試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Gentoo Linuxにおけるパッケージ管理について(サービス、ランレベル、環境変数など)

自動起動サービスについて

Gentoo Linuxでは、OSの起動時に実行されるデーモンなどの起動スクリプトは、/etc/init.d/以下の起動スクリプトを含んだパッケージをインストールしただけでは自動で起動されず、システムの動作レベルを示す「ランレベル」に対して手動で登録する必要がある。
これは不便なようでもあるが、サービスまでは自動起動してほしくない場合もあるため、便利なこともある。
ライブCDのGUIインストーラ(関連記事)では、インストールの途中でチェックボックス操作により設定することができる。

ランレベル

下はGentoo Linuxランレベル値。

  • 1(single): シングルユーザモード(管理者でログイン)、外部ファイルシステムのマウントはしない
  • 2(nonetwork): ネットワークを使用しない
  • 3-5(default): 通常(マルチユーザ、ネットワーク、X Window Systemのグラフィカルログインなど)

構成はDebianに近いが、レベル2と3は区別される。既定のランレベルは3。
0のシステム停止(シャットダウン)、6の再起動は他のディストリと同じ(GNU/Linuxでは全ディストリ共通)。
ランレベルでは/etc/init.d/以下のスクリプトに対する/etc/runlevels/[ランレベル名]/以下のシンボリックリンクからデーモンの起動などが行われる。そのスクリプトGentoo独自で、サービスの依存関係も記述され、処理される。
なお、OS起動時、最初の段階では「boot」というランレベル名で/etc/runlevels/boot/以下に配置されている項目が実行される。通常の起動時はそれらに続いてランレベル3の/etc/runlevels/default/以下にある項目が実行される。

自動起動サービスの登録と削除

/etc/init.d/以下のスクリプトランレベルの中で自動起動するようにするにはrc-updateコマンドを用いる(削除も可能)。

(登録)
$ sudo rc-update add [スクリプトのファイル名] [ランレベル名(bootやdefault)]
(削除)
$ sudo rc-update del [スクリプトのファイル名] [ランレベル名(bootやdefault)]

/etc/init.d/以下のスクリプトを提供するパッケージの多くはパッケージインストール時のメッセージで追加方法を知らせてくれる。また、多くは「default」のランレベルに対して追加するが、「boot」に対して追加することが望ましいものはメッセージに「boot」と書いてある。
下の例はalsa-utilsのインストール後のメッセージ。

 * To take advantage of the init script, and automate the process of
 * loading and unloading the ALSA sound drivers as well as
 * storing and restoring sound-card mixer levels you should
 * add alsasound to the boot runlevel. You can do this as
 * root like so:
 * # rc-update add alsasound boot

デーモンの引数などを設定するファイル

/etc/init.d/以下のスクリプトが起動するデーモンの引数などを設定するファイルが/etc/conf.d/以下に配置されている。
これらの多くは「変数名=値」の形式の設定が並んでいるもので、設定の方法はGentoo固有となる。

自動起動のカスタムスクリプト

「local」というサービスを開始したときに/etc/conf.d/local.startの中に書かれた処理が実行され、同サービスが停止したときに/etc/conf.d/local.stopの中に書かれた処理が実行される。
他のディストリで/etc/rc.local/etc/rc.d/rc.localなどの場所に配置されているファイルと同じようなもの。

システム上の環境変数

システムの環境変数/etc/env.d/以下のファイル群に記録されている。自分で環境変数を追加したい場合、新しいファイル(ファイル名の先頭には処理順のための2桁の番号が付く)をここに作成後env-updateというコマンドで反映する。CLIのシェルでは、その後のログインから変更が有効になる。
env.d HOWTOが詳しい。