inittab(5) 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エントリーのためのrunlevelsA, B, Cのいずれか一つのみを書くことができる。 sysinitboot及び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])が変更を行った。