RunLevel Memo
Linux のランレベルのお話。 デーモンの自動起動の設定など。
::目次:: 1.RunLevel 0~6 2.テキストログインとグラフィカルログインの切り替え 3.Linux 起動時に特定のデーモンを起動させる 4.参考リンク
RunLevel 0~6
ランレベルは次のような6種類がある。 通常のログイン状態では、ランレベル 3 か 5。
0:システムの停止 1:シングルユーザーモード(管理者モード) 2:NFSを使わないマルチユーザーモード 3:マルチユーザーモード 4:未使用 5:GUIログインを行えるマルチユーザーモード 6:システムの再起動
いつもグラフィカルログインしているが、テキストログインを使いたい場合、LILOなどのブートローダにオプションとして
boot: linux 3
とするのは、ランレベル 3 で起動させるということ。
テキストログインとグラフィカルログインの切り替え
一時的に変更するには、LILO や Grab のブートオプションとして
boot: linux 3 ←テキストログインに変更 boot: linux 5 ←グラフィカルログインに変更
Linux の起動時には、ルート権限で
# telinit 3 ←テキストログインに変更 # telinit 5 ←グラフィカルログインに変更
ずっと変更しておくには、/etc/inittab の Default runlevel を次のように変更する。
id:3:initdefault: ←テキストログインに変更 id:5:initdefault: ←グラフィカルログインに変更
Linux 起動時に特定のデーモンを起動させる
Apache などのデーモンを起動時に実行させるためには、ランレベル 3 と 5 に連動させる必要がある。
このためには、スクリプトに対するシンボリックリンクを次のディレクトリ以下に置いておく。
/etc/rc.d/init.d/ /etc/rc.d/rc3.d/ /etc/rc.d/rc5.d/
/etc/rc.d/rc3.d/ と /etc/rc.d/rc5.d/ 以下にシンボリックリンクを張る場合、
「S+(ポート番号)+デーモン名」とする。
なお、ポート番号は99番以下の数字であれば、適当でも良い(同一の番号が複数あっても良い)。
小さい数字から順番に実行される。
例: # ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc3.d/S80httpd
K で始まるデーモンは実行せず、S で始まるデーモンをOS起動時に実行する。
ちなみに、RedHat 系の Linux の場合、似たようなディレクトリ構造があるが、次のようにシンボリックリンクが張られているだけ。
/etc/init.d -> /etc/rc.d/init.d /etc/rc*.d -> /etc/rc.d/rc*.d
rpm でインストールした場合は、/usr/sbin/ntsysv によって設定できるが、それ以外のソースからインストールした場合は、上記の自動起動の設定が必要となる。