init プログラムは、設定ファイル inittab に基づいて動作します。また、init プログラムはランレベルという概念を用いています。これは、システムの状態を表します。
# These are the default runlevels in Slackware: # 0 = halt # 1 = single user mode # 2 = unused (but configured the same as runlevel 3) # 3 = multiuser mode (default Slackware runlevel) # 4 = X11 with KDM/GDM/XDM (session managers) # 5 = unused (but configured the same as runlevel 3) # 6 = reboot |
Slackware Linux デフォルトの inittab によると、ランレベル 0 は電源遮断状態、ランレベル 1 はシングルユーザモード、ランレベル 3 はマルチユーザモード、ランレベル 4 は X window 用のモード、ランレベル 6 は再起動状態と定義されています。ランレベル 2 と 5 は使われません。
# Default runlevel. (Do not set to 0 or 6) id:3:initdefault: |
ここでは、デフォルトのランレベルが定義されます。ランレベル 3、すなわちマルチユーザモードがデフォルトのランレベルとなります。
# System initialization (runs when system boots). si:S:sysinit:/etc/rc.d/rc.S |
システム起動時に /etc/rc.d/rc.S を実行します。/etc/rc.d/rc.S ではシステムの初期化処理を行います。
# Script to run when going single user (runlevel 1). su:1S:wait:/etc/rc.d/rc.K |
ランレベルが 1 またはシングルユーザモードへ移行した時 /etc/rc.d/rc.K を実行します。/etc/rc.d/rc.K ではすべてのデーモンを終了します。init は /etc/rc.d/rc.K の終了を待ちます。
# Script to run when going multi user. rc:2345:wait:/etc/rc.d/rc.M |
ランレベルが 2、3、4、5 のいずれかへ移行した時 /etc/rc.d/rc.M を実行します。/etc/rc.d/rc.M ではさまざまな設定を行います。init は /etc/rc.d/rc.M の終了を待ちます。
# What to do at the "Three Finger Salute". ca::ctrlaltdel:/sbin/shutdown -t5 -r now |
CTRL-ALT-DEL が押された時 /sbin/shutdown -t5 -r now を実行します。/sbin/shutdown -t5 -r now は 5 秒後にシステムを再起動します。
# Runlevel 0 halts the system. l0:0:wait:/etc/rc.d/rc.0 |
ランレベルが 0 へ移行した時 /etc/rc.d/rc.0 を実行します。/etc/rc.d/rc.0 では終了処理を行います。init は /etc/rc.d/rc.0 の終了を待ちます。
# Runlevel 6 reboots the system. l6:6:wait:/etc/rc.d/rc.6 |
ランレベルが 6 へ移行した時 /etc/rc.d/rc.6 を実行します。/etc/rc.d/rc.6 では終了処理を行います。init は /etc/rc.d/rc.6 の終了を待ちます。
# What to do when power fails. pf::powerfail:/sbin/genpowerfail start |
電源に異常が起きた時 /sbin/genpowerfail start を実行します。init はこのことを UPS 管理デーモンにより知らされます。init は /sbin/genpowerfail start の終了を待ちません。
# If power is back, cancel the running shutdown. pg::powerokwait:/sbin/genpowerfail stop |
電源異常状態から復帰した時 /sbin/genpowerfail stop を実行します。init は /sbin/genpowerfail stop の終了を待ちます。
# These are the standard console login getties in multiuser mode: c1:1235:respawn:/sbin/agetty 38400 tty1 linux c2:1235:respawn:/sbin/agetty 38400 tty2 linux c3:1235:respawn:/sbin/agetty 38400 tty3 linux c4:1235:respawn:/sbin/agetty 38400 tty4 linux c5:1235:respawn:/sbin/agetty 38400 tty5 linux c6:12345:respawn:/sbin/agetty 38400 tty6 linux |
ランレベルが 1、2、3、5 のいずれかへ移行した時 agetty を 6 個起動します。ランレベルが 4 へ移行した時は agetty を 1 個だけ起動します。init は agetty の終了後、再び agetty を起動します。但し、ここでの agetty 終了とは、結果的にログインシェルの終了を意味します。
# Runlevel 4 used to be for an X window only system, until we discovered # that it throws init into a loop that keeps your load avg at least 1 all # the time. Thus, there is now one getty opened on tty6. Hopefully no one # will notice. ;^) # It might not be bad to have one text console anyway, in case something # happens to X. x1:4:wait:/etc/rc.d/rc.4 |
ランレベルが 4 へ移行した時 /etc/rc.d/rc.4 を実行します。init は /etc/rc.d/rc.4 の終了を待ちます。
マルチユーザモードを例に、実行されるプログラムを追うと次のようになります。
参考文献
前へ | 起動プロセス入門 | 次へ |