本文書で説明したブートディスクよりも,メジャーなディストリビューション (Slackware, RedHat, Debian 等)で使われているブートディスクの方が よくできていることに読者の皆さんも気づかれるかもしれません. このようなディストリビューションのブートディスクも基本的なところは 同じなのですが,他にも色々なテクニックが使われています. というのも,このようなブートディスクには,必要条件がより多くあるからです. まず,このようなブートディスクは 色々なハードウェアで動作しなければならないので, ユーザが指定した各種デバイスドライバをロードできなければなりません. 次に,色々なインストールオプションで動作しなければなりません (これはインストールの自動化の度合いによって変わりますが). さらに,ディストリビューションのブートディスクはインストールと レスキューの機能を合わせ持っています.
ブートディスクによっては initrd (初期 RAM ディスク (initial
ramdisk)) という機能を使っているものもあります.
この機能はカーネル 2.0.x あたりで導入されたもので,2 つのフェーズに分
けてカーネルを起動できるようにします.最初にカーネルを起動するとき,
initrd
は初期 RAM ディスクのイメージをブートディスクからロードし
ます.この初期 RAM ディスクはルートファイルシステムであり,実際のルー
トファイルシステムのロードの前に実行するプログラムが入っています.通常,
このプログラムはシステム環境を調べたり,ユーザに起動オプション(実際の
ルートディスクをロードするデバイス等)を問い合わせたりします.また
initrd
は,カーネルに組み込まれていない追加モジュールのロード
も行います.この初期プログラムが終了すると,カーネルは実際のルートイメー
ジをロードして通常通りに起動を続行します.initrd
に関する詳しい情
報については,
/usr/src/linux/Documentation/initrd.txtや
ftp://elserv.ffm.fgan.de/pub/linux/loadlin-1.6/initrd-example.tgz
をご覧ください.
訳注: JF には initrd.txt の翻訳 があります.また, Ext-Rootfs-mini-HOWTO という関連文書があります.
以下では各ディストリビューションのインストールディスクがどのように動作 するのかを簡単に説明します.これはそれぞれのファイルシステムやソースコー ドを調べた結果に基づいたものです.この情報が正しい保証はありませんし, 本文書に書いてあるバージョン以降で変更されていない保証もありません.
Slackware (バージョン 3.1)は
LILO を使ったカーネルの転送の節で述べたよ
うな,素直な方法を使っています.Slackware のブートディスクは LILO の
message
パラメータを使って,起動メッセージ
(``Welcome to the Slackware Linux bootkernel disk!
'')を表示します.
このメッセージを使い,ユーザの必要に応じて起動パラメータ行を入力させま
す.起動の後に,2枚目のディスクからルートファイルシステムがロードされ
ます.それからユーザは setup
スクリプトを実行して,インストールを
開始します.Slackware では,カーネルをモジュール化しないで,色々な種類
のカーネル(ブートディスク)を用意しています.ユーザは自分のハードウェア
に合うものを選択します.
RedHat(バージョン 4.0)も LILO による起動を行います.LILO は圧縮形式の
RAM ディスクを最初のディスクからロードし,この ramdisk でカスタマイズ
された init
プログラムが実行されます.このプログラムはドライバの
問い合わせを行い,それから必要に応じて追加ディスクから追加のファイルを
ロードします.
Debian (バージョン 1.3)のインストールディスクは多分もっとも凝っている
ものでしょう.このディスクは SYSLINUX というローダを使って各種ロードオ
プションを整理し,initrd
イメージを使ってインストールの
間ユーザのガイドを行います.Debian ではカスタマイズした init
とカ
スタマイズしたシェルを使っているようです.