前のページ 次のページ 目次

2. ディスク

2.1 ディスクの種類

ブートに関わるディスクを 4 種類に分類します。この文書では特に指定しな い限り「ディスク」という言葉はフロッピーディスクのことを指します。なお この文書の大部分はハードディスクにも同じように適用できるはずです。

ディスクの形式と用途についてまとめます。

boot

ブート可能なカーネルを含むディスク。ファイルシステムを入れ てブートローダを用いることもできますし、単にカーネルだけを入れておくこ ともできます。このディスクを使ってカーネルをブートし、他のディスクにあ るルートファイルシステムを使うこともできます。このようなディスクは、イ ンストールを間違えてブートローダを消してしまった時などに役立ちます。

root

ファイルシステムを含み、これ 1 枚で Linux システムを動作させ ることができるようなディスクです。カーネルやブートローダは必ずしも含む 必要はありません。

一旦カーネルがブートすれば、このディスクだけでシステムを動作させること ができます。カーネルに特別な機能を持たせれば、ブート後にルートディスク を入れ替えてマウントし、ルートディスクの中身を RAM ディスクにコピーしてシ ステムを運用するようなこともできます。

混乱の生じたディスクをマウントせずに調べたり、ディスク不良やファイルの 消失が起こったディスクを修復する場合にこの root ディスクを用いるこ とができます。

boot/root

root ディスクと同じですが、カーネルとブートローダ が含まれています。このディスクを用いればシステムをブートして稼動させる ことができます。このタイプのディスクの利点は 1 枚のディスクの中に必要 なもの全てが納められているため、取り扱いが楽であることです。しかし昨今では色々 なもののサイズが大きくなってきていますので、 1 枚のディスクには(圧 縮を使っても)必要なもの全てが収まりきらない可能性があります。

utility

ファイルシステムを含みますが、ルートファイルシステム としてマウントするために作られたのではないディスク。 utility ディ スクは付加的なデータディスクです。このタイプのディスクは root ディス クに入り切らない復旧用のユーティリティなどを別に入れておくために使います。

レスキューディスクの用途には boot ディスクと root ディスクの組み合わせ を用いると最も柔軟な運用ができるでしょう。入りきらない分に対してユーティ リティディスクを別に用意するのが良いでしょう。

2.2 boot ディスク

概要

全ての PC システムのブート処理では、まず ROM のコードが実行されます。 このコードはブートドライブのシリンダ 0、セクタ 0 にあるセクタを読み込 んで実行します。ブート可能なディスクのシリンダ 0、セクタ 0 には、以下 のどちらかが入っています。

Linux カーネルが raw デバイスのフロッピーに書かれている場合は、最初の セクタが Linux カーネル自身の先頭セクタになり、このセクタがブートプロセ スを実行します。つまりカーネルの残りの部分をロードして Linux を実行す るわけです。ブートセクタの中身についての詳細は lilo-0.15 以上に付 属の文書をご覧下さい。

カーネルをブートディスクに置くもう一つの方法は、ブートディスクにファイ ルシステムを作ることです。ただしこれはルートファイルシステムとして用いる ためのものではなく、 単に LILO をインストールし、ブート時のコマンドラインオプションを指定で きるようにするためのファイルシステムです。ブートディスクにファイルシス テムを作れば、例えばひとつのカーネルでハードディスク上またはフロッピー 上のルートファイルシステムをブートさせることが可能になります。これはハー ドディスク上のファイルシステムを再構築し、繰り返しテストを行うような場 合に便利でしょう。

ルートへのポインタの設定

ルートファイルシステムとしてマウントするドライブやパーティションの在処 をカーネルに伝える必要があります。いくつかの方法があります。

rdev コマンドには上記以外の使い方もあります。

        rdev -h
のように実行すればコマンドの使い方が表示されます。

現在のシステムをそのままブートさせるフロッピーを作る場合は、通常ルート デバイスの設定は必要ありません。現在用いているカーネルには 既にルートデバイスの設定はされているはずです。 しかし例えば他のマシンからカーネルを持ってきたり、配布パッケー ジからカーネルを持ってきたり、あるいはフロッピー上のルートファイルシス テムをブートするためにカーネルを使いたい場合などには、カーネルにルート デバイスを設定する必要があります。 rdev コマンドを用いてカーネルファイ ルに設定されているルートデバイスを調べるには以下のようにします。

        rdev <filename>

rdev を用いずにカーネルのルートデバイス設定を変更することもできます。 詳しくはこの文書の最後にある FAQ の節のうち、 カーネルもブートディスクも無くしてしまった... の項を見て下さい。

boot フロッピーへのカーネルのコピー

カーネルの設定が終わったらブートフロッピーにカーネルをコピーします。

以下のコマンド(そしてこの HOWTO に出てくる全てのコマンド)では、ディ スクは物理フォーマットされているものとしています。フォーマットされてい ない場合は fdformat を用いてフォーマットして下さい。

ディスクにファイルシステムを構築しない場合は、以下のように dd コマンド を用いてカーネルをコピーします。

        dd if=infilename of=devicename
infilename はカーネルのファイル名で、 devicename はフロッピードライブ のデバイス名(普通 /dev/fd0)です。

cp コマンドも使えます。

        cp filename devicename

例えば以下のようになります。

        dd if=zImage of=/dev/fd0
または
        cp zImage /dev/fd0

dd コマンドの seek パラメータを使用してはいけません。カーネルファイル はブートセクタの先頭(セクタ 0、シリンダ 0)からコピーする必要があるから です。 seek パラメータを指定しなければ先頭からになります。

通常用いられる出力デバイス名は、フロッピーの第 1 ドライブ(DOS での "A:")に /dev/fd0、第 2 ドライブに /dev/fd1 です。これらのデバイス名を用いればドライブの属性は自 動判定されます。他のデバイス名を用いれば属性を含めたドライブ指定も可能 です。例えば /dev/fd0H1440 とすれば 1.44 メガバイトで第 1 ド ライブを指定することになります。もっともこのような指定が必要になること はあまりないでしょう。

ファイルシステムを構築したブートディスクにカーネルをコピーする場合は、ディ スクを使用中のファイルシステムの適当なディレクトリにマウントしてから cp コマンドを用いてコピーします。以下に例を示します。

        mount -t ext2 /dev/fd0 /mnt
        cp Image /mnt
        umount /mnt

なおこの HOWTO で行う作業は、ほとんどが root 権限で実行する必要がある ことに注意して下さい。

2.3 root ディスク

概要

root ディスクには完全に動作する Linux システムが含まれていますが、カー ネルは必ずしも含まれていません。言い替えれば root ディスクはブート可能 ではないかもしれませんが、カーネルが動作を始めた後で Linux システムに 必要となるもの全てを含んでいるわけです。したがって root ディスクには最 低以下のようなものが入っている必要があります。

もちろん何かがその上で動かなければシステムは役に立ちません。以下のよう なことができなければ、ルートディスクは役に立つとは言えません。

2.4 boot/root ディスク

これは基本的に root ディスクと同じですが、カーネルとブートローダ(LILO など)を含んでいます。

このディスクを作るにはカーネルファイルをコピーしてから LILO を実行して、 コピーしたカーネルを起動するように設定する必要があります。システムを立 ち上げる時に LILO はディスクのカーネルをブートします。

この方法を用いるためにはいくつかのファイルをフロッピーにコピーしなければ なりません。これらのファイルや必要な LILO の設定については LILO の節で詳しく議論します。

RAM ディスクとフロッピーのルートファイルシステム

フロッピー上のルートファイルシステムを効率的に利用するには、ラムディス ク(メモリ上にエミュレートされたディスク)からシステムを起動できるよう にする必要があります。 RAM ディスクを使えばフロッピーのときに比べてシス テムを高速に動作させることができます。 Ftape HOWTO によれば、 Ftape を 用いるにも RAM ディスクが必要です。なぜなら Ftape はフロッピーコントロー ラを排他的に利用してしまうからです。

RAM ディスクを使用する利点はもう一つあります。 Linux カーネルは自動的 に RAM ディスクをルートとみなす機能を持っています。これはある環境下で root フロッピーの内容を自動的に RAM ディスクにコピーし、ルートドライブを フロッピーから RAM ディスクに切替える機能です。この機能には 3 つの利点 があります。

1.3.48 以降のカーネルでは、 RAM ディスク関連のコードが少々書き換えられ ました。オプションが増え、 RAM ディスクを利用するためのコマンドが変わり ました。 ブートディスク作成上級編 の節で、これらの利用法について述べています。

RAM ディスクを利用するには、カーネルに RAM ディスク機能を持たせる必要が あります。 RAM ディスクのサイズは動的に拡張可能ですから、サイズを指定す る必要はありません。 RAM ディスクのサイズを指定するために用いられていた rdev -r はもう使う必要がありません。その代わりにカーネルイメージ に ramdisk 変数を設定します。 ブートディスク作成上級編 の節で詳細について述べています。

1.3.48 以前のカーネルを使っている人が RAM ディスクを使うには、以下 の条件を満たしている必要があります。(1.3.48 以前の人だけに必要な 条件です)

RAM ディスク機能をカーネルに組み込むにはいくつかの方法があります:

上記に挙げた方法のうち最も簡単なのは LILO の設定です。 LILO の設定ファ イルに RAM ディスクの容量を追加するだけですからね。

LILO の設定ファイルについては LILO の節で簡単に述べていますが、最新バージョンの LILO を近くの Linux ミラーサイトから取り寄せて、付属の文書を読むことをお勧めします。

RAM ディスクはフロッピーのサイズよりも大きくでき、その中にファイルシス テムを構築することができます。こうすればシステムのレスキューに必要なソ フトを全て高速な RAM ディスク上に置いておくことができます。この方法につ いては FAQ の章の 大きな RAM ディスクを作るには? の節で述べます。

2.5 utility ディスク

壊れたディスクドライブを解析、修復、復元するのに必要なソフトウェアを全 て一枚のディスクに詰め込むのは無理なことが多いです。 tar、 gzip、 e2fsck、 fdisk、 ftape 等を収めるだけならフロッピー 1 枚で十分ですが、更に 多くのツールを収めるにはもっと枚数が必要でしょう。

したがってレスキューに必要なファイルを含む utility ディスクのフロッ ピーが必要になります。このフロッピーのファイルシステムを boot/root シ ステムのお望みのディレクトリ(/usr など)にマウントするわけです。

ファイルシステムは簡単に作ることができます。方法は ファイルシステム の節に書いてあります。


前のページ 次のページ 目次