Linux start up process


Linuxが起動し、コンソールが使えるようになるまでを非常に簡単に記述しました。


1: LILOがカーネルイメージをメモリに読みこむ
LILOがカーネルのイメージファイル(/boot/vmlinuz)をメモリにロードし、カーネルを起動させます。
カーネルが起動、つまりLinuxが起動すると、デバイスの初期化などが行われます。
LILOは/boot/vmlinuzの格納位置をファイルシステムから求めるのではなく、独自にシリンダ単位か何かで管理しています。
このため、カーネル(/boot/vmlinuz)の格納位置が変わるような事があれば、起動前にLILOのジェネレーションが必要です。
これに対しGRUBはファイルシステムを理解するため、bootしなくなる条件は少なくなります。

2:

initプロセスの実行
カーネルは/sbin/initというプログラムを実行します。
/sbin/initは/etc/inittabというテキストファイルを参照し、inittabに記載されているプロセスを起動します。
inittabは/etc/rc.d/rc というスクリプトを起動しています。
runlevelに応じて分けてプロセスを起動させるために、/etc/rc.d/rc は引数としてrunlevelが与えられます。
ここの構成はディストリビューションによって異なります。

3:

gettyが起動し、login待ちになる。
/sbin/initは/etc/inittab記述されている数のgettyを起動します。gettyはlogin promptを出し、入力を受けつけます。