これらのスクリプトによってブートプロセスがどのように働くか?

Linux は SysVinit という名前の特別な起動手段を使います。これはランレベルという概念に基礎を置きます。 これはあるシステムと別のものでは全く異なる可能性があり、あるディストリビューションでうまくいっていたからといって、LFS でもうまくいくと仮定することはできません。 LFS はこれらのことを行なう独自の方法を持っていますが、一般的に受け入れられている標準の方法にだいたい沿っています。

SysVinit (これ以降 init と呼びます)はランレベルという機構を使って動きます。 ランレベルには七つ( 0 から 6 まで)あり(実際にはより多くのランレベルがありますが、しかしこれらは特別な場合であり一般的には使われません。init の man page により詳しく説明されています)、 これらの一つ一つがコンピュータが動き始めた時に行なうべき事と対応します。デフォルトのランレベルは 3 です。 ここによく見られるランレベルの数種類の実装についての説明を載せます。

0: コンピュータを停止
1: シングルユーザーモード
2: マルチユーザーモード ネットワーク無し
3: マルチユーザーモード ネットワーク有り
4: カスタム化のための予約、それ以外は 3 と同じ
5: 4 と同じ、通常 GUI ログイン(X の xdm や KDE のkdm のような)に使われる
6: コンピュータを再起動

ランレベルを変更するために使われるコマンドは init <runlevel> で <runlevel> は対象とするランレベルです。 たとえば、コンピュータを再起動するためには、ユーザーは init 6 というコマンドを発行します。 reboot コマンドは、halt コマンドが init 0 へのエイリアスであるように、ただのエイリアスです。

/etc/rc.d の下には rc?.d で ? がランレベルの番号であるような数多くのディレクトリがあり、また数多くのシンボリックリンクを含む rcsysinit.d というディレクトリがあります。 あるものは K から始まっていて、その他のものは S から始まり、それらの全ては頭文字に続く二つの番号を持っています。 K はサービスを停止( kill )することを意味し、S はサービスを開始( start )する事を意味します。 その後に続く番号は 00 から 99 まででスクリプトが実行する順番を決定し、低い番号のものが先に実行されます。

実際のスクリプトは /etc/rc.d/init.d の中にあります。これらがすべての仕事をして、シンボリックリンクはすべてこれらを指しています。 停止のリンクと開始のリンクは /etc/rc.d/init.d の中の同じスクリプトを指しています。これはスクリプトが start や stop, restart, reload, status のような異なるパラメーターで呼び出されるためです。 K リンクに遭遇したときは、適切なスクリプトが stop の引数で実行されます。また S に遭遇したときは、適切なスクリプトが start の引数で実行されます。

例外が一つあります。rc0.d と rc6.d ディレクトリにある S から始まるリンクは何かを開始することはありません。これらは何かを停止するために stop パラメーターで呼び出されます。 この背景にある考え方は、システムを再起動するか、停止するつもりなら、何かを開始するつもりはなく、システムを停止するだけだということです。

引数がスクリプトをどのように動かすかという説明をここに載せます。

起動プロセスが動く方法を自由に修正してください。(結局、これはあなた自身の LFS システムですから。) ここで与えられたファイルは起動プロセスがどのような良い方法で(私達が考える良い方法ですから、あなたは嫌がるかも知れません)なされるかという一つの例に過ぎません。