
カーネルがロードされたときに init プロセスが実行されると、/etc/inittab ファイルがトップダウン方式で読み取られ、つまり、ファイルに表示される各行が実行されます。
もしそうなら、そして私の読んだことと理解に基づくと、これは文書化された実行レベルに入ってから sysinit プロセスを起動することを意味しますか、それともその逆ですか?
例えば私が見た一般的な例は次のとおりです
id:3:initdefault:
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
答え1
まず、 の形式はinittab
次のようになっていることに注意してください。
Identifier:RunLevel:Action:Command
ここで重要な点は ですrunlevel
。次のサンプルコードがあるとします。
a:3::
b:123::
c:23::
d:123::
e:23::
runlevel
すると、 1から始まるさまざまな ID の実行順序は次のようになります。
init 1: b d
init 2: c e
init 3: a
overall: b d c e a
ご覧のとおり、ファイルに記載されている順序で実行されます。ランレベルによるグループ化! また、識別子が指定されたランレベルにない場合は、 が発行されSIGTERM
、次に が発行されることを覚えておいてくださいSIGKILL
。
答え2
これは、特定の順序で処理されるスクリプトではありません。特定のイベントまたは実行レベルに対してどのスクリプト/コマンドを実行するかをシステムに指示する構成ファイルです。ファイル内のエントリの順序は関係なく、実行レベルごとに複数のスクリプトまたはコマンドを持つことができます。
最初に表示する行「id:3:initdefault:」は、デフォルトの実行レベルが 3 (ほとんどのフレーバーではマルチユーザー モード) であることをシステムに伝えます。
「si::sysinit:...」行は、システムの初期化時にスクリプト /etc/rc.d/rc/sysinit を実行するようにシステムに指示します (システムの起動時に実行されます)。
man inittab を実行すると、ファイルのすべてのオプションのリストが表示されます。