Debianの起動とランレベルの整理 [Linux(Debian)]
2008/02/11 Mon [Edit]
1.ランレベル
ランレベル - システムの動作状態を表すモード。
Debianの場合
0 = 停止
1 = シングルユーザーモード
2 = マルチユーザーモード
3 = 2に同じ
4 = 2に同じ
5 = 2に同じ
6 = 再起動
・現在のランレベルを表示するコマンド「runlevel」
・ランレベルを変更するコマンド「init」もしくは「telinit」
| # runlevel N 2 |
1個目の値が直前のランレベル(ランレベルが変えられたことがないのでN)
2が現在のランレベル(Debianのデフォルトのランレベルが2)
起動時のランレベルは/etc/inittabを変えることで可能。
| # init 3 # runlevel 2 3 # init 2 # runlevel 3 2 |
Linuxの起動時にinitコマンドが実行され、/etc/inittabに
指定されているデフォルトレベルで起動されます。
inittabの抜粋
| # /etc/inittab: init(8)
configuration. # $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $ # The default runlevel. id:2:initdefault: |
2の部分を望みのランレベルの変更にすれば起動時のランレベルが変わります。
0や6を指定すると起動できなくなってしまうので注意。
2.Debianの起動プロセス
(1)ブートプロセス 起動時にinitプログラムが最初に実行するスクリプトが/etc/init.d/rcSです。
これは、init 用の設定ファイル (/etc/inittab) に記述されています。
inittabの抜粋
| # Boot-time system configuration/initialization
script. # This is run first except when booting in emergency (-b) mode. si::sysinit:/etc/init.d/rcS |
/etc/init.d/rcSは、/etc/rcS.d/ にあるスクリプト全てを起動します。
(2)ランレベル毎の起動スクリプト
ブートプロセス完了後、init は デフォルトのランレベルで
起動されるように設定された全てのサービスを起動します。
デフォルトのランレベルは、先述の通り/etc/inittabの指定によって決まります。
そして、ランレベルに応じたディレクトリ(rc1.d〜rc6.d)内の起動スクリプトを実行します。
ランレベルが2ならば、rc2.d内のスクリプトが全て実行されます。
通常、起動スクリプトは全て/etc/init.dに集めておき、ランレベルに応じたディレクトリ
rc1.d〜rc6.dにそのランレベルに必要な起動スクリプトのシンボリックリンクを作成しておきます。
先頭が"S"で始まる物が起動(Start)、"K"で始まる物が停止(Kill)で、
"S"や"K"の後に続く数字順に実行されます。
例)S20inetd
新たに起動/終了スクリプトを追加、あるいは削除するのに
いちいち各ランレベルにシンボリックリンクを作成していくのは面倒です。
Debianでは、"update-rc.d"というコマンドが用意されています。
マニュアルから抜粋| 書式 update-rc.d [-n] [-f] name remove update-rc.d [-n] [-f] name defaults [NN | NN-start NN-stop] update-rc.d [-n] [-f] name start|stop NN runlevel runlevel ... . start|stop NN runlevel runlevel ... . ... 説明 defaults が使用された場合、 update-rc.d はランレベル
2345に サービスの起動用リンクを、 remove オプションを引数に与えると、 /etc/rcrunlevel.d
ディレクトリにあるスクリプト オプション |
(1)新規にサービスを追加する場合
a) /etc/init.d/にスクリプト作成。
ここではhttpd2というWebサーバー用のスクリプトを作成。
パーミッションを755にします。
b)update-rc.d httpd2 defaults
各ランレベルにS20httpd2やK20httpd2が作成されます。
Adding system startup for /etc/init.d/httpd2 ...
/etc/rc0.d/K20httpd2 -> ../init.d/httpd2
/etc/rc1.d/K20httpd2 -> ../init.d/httpd2
/etc/rc6.d/K20httpd2 -> ../init.d/httpd2
/etc/rc2.d/S20httpd2 -> ../init.d/httpd2
/etc/rc3.d/S20httpd2 -> ../init.d/httpd2
/etc/rc4.d/S20httpd2 -> ../init.d/httpd2
/etc/rc5.d/S20httpd2 -> ../init.d/httpd2
(2)サービスを削除する場合
#update-rc.d -f httpd2 remove
----全てのRunLevelからhttpd2のリンクを削除します。
Comments
Track Backs
TB URL



