Linuxが起動される手順

この文書では、バージョン2.6前後のLinuxがどのような手順で起動され るか、概要を説明します。

Linuxが起動される一般的な手順

一般的に、最近のLinuxは下記のような手順で起動されます。

まずはBIOSの仕事です。

ここからはブートローダの仕事です。

ここまではBIOSがデバイスとやりとりをしています。で、Linuxカーネル の出番。

こう書くと簡単そうなのですが、Linuxカーネルがルートファイルシステ ムをマウントするには、Linuxカーネルがルートファイルシステムの記録 されているデバイスとやりとりできないいけません。

もっとも簡単な場合は、カーネルが直接デバイスとやりとりをして、デ バイス上のあるパーティションをルートファイルシステム (この場合は、 起動後に / 以下に見えているファイル) としてマウントできます。が、 ルートファイルシステムのあるデバイスは、 IDEハードディスクとは限 らないで、SCSIだったりUSBだったり、ネットワークの向こうにあったり します。カーネル自体がこれらのルートパーティションをマウントする 方法を知らないと、kernel panic になります。

で、カーネル自体にルートパーティションを読むためのコードをごちゃ ごちゃとつっこんでおく代わりに、最近のLinuxではinitrdというものを 使います。

initrdというのはブートローダが一緒にメモリに読んでくれる仮のルー トファイルシステムのイメージ (cpioというコマンドでディレクトリ構 造をファイルにして、それをgzipで圧縮しておくことが多いようです) です。ブートローダがinitrdをメモリ上に読んでおいてくれた場合には、

initrdの中のinitが作業を続けます。

で、本当に使うルートファイルシステムがマウントできると、上に戻っ て、カーネルは今度はマウントしたルートファイルシステムの中の/init や/sbin/initを実行します。

このinitプロセスが、/etc/inittab や /etc/fstab を見ながら追加のパー ティションをマウントしたりネットワークの設定をしていくことになり ます。

どこでもモモンガの場合

どこでもモモンガの 場合は、最近のハードウェアが比較的多くのメモリを積んでいて容量の 大きいinitrdを使えることと、レスキュー用のOSとしても使いやすいよ うに、initrdの中に、カーネルモジュールの他、Linuxがrun level 1ま で上がるのに必要なファイルを入れてあります。

どこでもモモンガのカーネルは、ブートローダによってUSBメモリから読 まれたinitrdをマウントした段階で、常用のinitプロセスを起動し、 initプロセスはそのままrun level 1の状態になります。この状態ではシ ステムの稼動に必要なファイルはすべてメモリ上にありますので、USBメ モリをとりはずしても問題ありません。

通常使用するrun level 3に上がる時に、initプロセスは、initrdに入っ ていない/usrや/homeのファイルをUSBメモリからマウントします。これ らのファイルシステムは、USBメモリにSquashFSやext2のイメージファイ ルとして記録されているので、initプロセスは、USBメモリとやりとりを するためのカーネルモジュールをロードして、これらのファイルとやり とりをできるようにします。Run level 3の状態では、システムの一部は、 USBメモリのファイルをループバックマウントしたファイルシステムの上 にありますので、USBメモリをとりはずすことはできません。

Copyright

Copyright (C) 2007 zunda <zunda at freeshell.org>

Permission is granted for copying, modification, distribution, and distribution of modified versions of this work under the terms of GPL version 2 or later. Read the GPL file or GPL3 file for more details.