inittab -
sysv-互換のinitが使うinittabファイルの書式
inittabファイルは、ブートアップ時や通常運転中にどの様なプロセスを
起動するのか(例えば
/etc/init.d/boot, /etc/rc,
getty等)を指定するファイルである。
init(8) は複数の
ランレベルを区別する。
それぞれの
ランレベルに対して固有のプロセス群を起動する事ができる。
ランレベルとして有効なものは、
0-
6と、
ondemandエントリーとしての
A,
B,
Cである。
inittabファイル中のエントリーは次の書式で記される
:
id:
runlevels:
action:
process
`#'
で始まる行は無視される。
- id
- は inittab
ファイル中でエントリーを識別するための、
1-4文字からなる固有の識別子である
(バージョン5.2.18以前の、又はa.outのライブラリでコンパイルされた
sysvinitでは2文字までに制限されている)
。
註:gettys
や他のログインプロセスに対しては、
id欄と対応する tty
の添字を同じにすべきである
(例えば
tty1に対しては
1というように)。
でないと、ログインのアカウンティングが正常に動作しない可能性がある。
- runlevels
- は、指定した動作を行なうランレベルの一覧を示す。
- action
- はどのような動作を行うべきかをあらわす。
- process
- には実行されるプロセスを指定する。
プロセス欄の最初の文字が`+'である場合、
init
はそのプロセスに対して
utmp 及び wtmp
アカウンティングを行わない。
これは gettys
が自分のutmp/wtmpの面倒を自分でみてしまうために必要となっている。
これは歴史上有名なバグでもある。
runlevelsには異なったランレベルを表わす複数の文字を書いても良い。
例えば、
123はランレベル1, 2,
3でそのプロセスを起動することを表わす。
ondemandエントリーのための
runlevelsは
A,
B,
Cのいずれか一つのみを書くことができる。
sysinit、
boot及び
bootwaitエントリーの
runlevel欄は無視される。
システムのランレベルが変更された場合は、
現在実行中のプロセスのうち新たなランレベルに記されていないものは、
先ずSIGTERMにより、次いでSIGKILLシグナルにより
kill される。
action
として有効なものは次の通り:
- respawn
- プロセスが終了した場合は常に再起動する(例えば
getty) 。
- wait
- 指定したランレベルになった時に一度だけ起動する。
init
はこのプロセスが終了するまで待機する。
- once
- 指定したランレベルになった時に一度だけ実行する。
- boot
- システムブート中に実行される。
runlevels欄は無視される。
- bootwait
- システムブート中に実行されるが、
init
はそれが終了するまで待機する
(例えば/etc/rc)。
runlevels欄は無視される。
- off
- 何もしない。
- ondemand
-
ondemandランレベルの印が付いたプロセスは、
指定した
ondemandランレベルになった時に常に実行される。
しかし、ランレベルは変化しない
(
ondemandランレベルとは`a',
`b', `c'のことである)。
- initdefault
-
initdefaultエントリーは、システムブート完了時に入るべき
ランレベルを示す。
initdefaultエントリーが存在しない場合は、
init
はどのランレベルに入るべきかをコンソールに問い合わせる。
process欄は無視される。
- sysinit
- システムブート中に実行される。
このエントリーはいかなる
boot及びbootwaitエントリーよりも
先に実行される。
runlevels欄は無視される。
- powerwait
- 電源に異常が起きた時に実行されるプロセス。
init
は普通コンピュータと接続されている
UPS
と通信しているプロセスから
このことを知らされる。
initはこのプロセスが終了するまで待機する。
- powerfail
-
powerwaitと同様だが、initはこのプロセスが完了するのを
待たないところが異なる。
- powerokwait
- このプロセスは電源が回復したことをinitが知った時に実行される。
- powerfailnow
- このプロセスは電源に異常が起き、さらに外部
UPS
のバッテリー容量が
少なくなったことを(外部
UPS
と監視プロセスがこのような状態を
検出できるようになっている場合に)
initが知った時に実行される。
- ctrlaltdel
-
initがSIGINTシグナルを受け取ったときに実行される。
これは誰かがシステムコンソールで
CTRL-ALT-DELという組み合わせで
キーを押したことを意味する。
システムをシングルユーザレベルにしたい時やマシンをリブート
したい時など、
shutdown的なことを行いたい場合に実行される。
- kbrequest
-
initがキーボードハンドラーから、コンソールキーボード上で特定の組み合わせ
のキー入力が行なわれた、とのシグナルを受け取ったときに実行される。
この機能に関する文書はまだ不完全である;
kbd-x.xx
パッケージ中を探せばより多くの資料が見つかるだろう
(この文書を書いている時点で最新のものは
kbd-0.94 である)。
基本的には、あるキーの組み合わせを"KeyboardSignal"という動作に結びつけたい
という場合に用いられる。
例えば、Alt-上向き矢印というキーの組み合わせをこの用途に使いたい場合は、
キーマップファイル中に次の様に書いておけばよい:
alt keycode 103 = KeyboardSignal
以下は、昔のLinuxで使われていたものに似たinittabの例である:
# linux用のinittab
id:1:initdefault:
rc::bootwait:/etc/rc
1:1:respawn:/etc/getty 9600 tty1
2:1:respawn:/etc/getty 9600 tty2
3:1:respawn:/etc/getty 9600 tty3
4:1:respawn:/etc/getty 9600 tty4
このinittabファイルはブート中に
/etc/rcを実行し、
tty1-tty4でgettyを起動する。
次に示すのは、異なったランレベルがある手の込んだ例である
(スクリプト中のコメントを参照):
# ブート後に入るべきランレベル
id:2:initdefault:
# 何より先ずシステムの初期化をする。
si::sysinit:/etc/rc.d/bcheckrc
# ランレベル0及び6はそれぞれ haltとreboot。
# 1 はメンテナンスモード
l0:0:wait:/etc/rc.d/rc.halt
l1:1:wait:/etc/rc.d/rc.single
l2:2345:wait:/etc/rc.d/rc.multi
l6:6:wait:/etc/rc.d/rc.reboot
# "三つ指をついてリセット"された時に何をすべきか。
ca::ctrlaltdel:/sbin/shutdown -t5 -rf now
# ランレベル2及び3: コンソールでgettyを実行する
# (レベル3の場合はモデムポートでも)。
1:23:respawn:/sbin/getty tty1 VC linux
2:23:respawn:/sbin/getty tty2 VC linux
3:23:respawn:/sbin/getty tty3 VC linux
4:23:respawn:/sbin/getty tty4 VC linux
S2:3:respawn:/sbin/uugetty ttyS2 M19200
/etc/inittab
initはMiquel van Smoorenburg
(
[email protected])により作成された。
この man ページは Sebastian Lederer
(
[email protected])が作成し
Michael Haardt
(
[email protected])が変更を行った。
init(8),
telinit(8)