考え得るブート構成は、非常にたくさんあります。最も普通の構成は以下の セクションで説明します。
+-------------------------------------------------------------------+ | マスターブートレコード ブートセクター オペレーティングシステム | |-------------------------------------------------------------------| | DOS-MBR --------------> MS-DOS --------> COMMAND.COM | +-------------------------------------------------------------------+ |
+-------------------------------------------------------------------+ | マスターブートレコード ブートセクター オペレーティングシステム | |-------------------------------------------------------------------| | DOS-MBR --------------> MS-DOS --------> COMMAND.COM | | ---> LOADLIN -------> Linux | +-------------------------------------------------------------------+ |
+-------------------------------------------------------------------+ | マスターブートレコード ブートセクター オペレーティングシステム | |-------------------------------------------------------------------| | DOS-MBR --------------> LILO ----------> Linux | | ---> 他の OS | +-------------------------------------------------------------------+ |
+-------------------------------------------------------------------+ | マスターブートレコード ブートセクター オペレーティングシステム | |-------------------------------------------------------------------| | DOS-MBR --------------> MS-DOS --------> COMMAND.COM | | ---> LOADLIN -------> Linux | | ---> LILO ----------> Linux | | ---> MS-DOS --- ... | +-------------------------------------------------------------------+ |
上記のような拡張パターン- MBR は変更せず、双方の分岐はそれぞれ Linux と MS-DOS をブートできます。(LILO はまた別のオペレーティングシステムをブート することができます)
+-------------------------------------------------------------------+ | マスターブートレコード ブートセクター オペレーティングシステム | |-------------------------------------------------------------------| | BOOTACTV -------------> LILO ----------> Linux | | ---> 他の OS | +-------------------------------------------------------------------+ |
ここでは、MBR が BOOTACTV(または他の対話型ブートパーティションセレクター) によって置き換えられ、ブート時に、Linux と他のオペレーティングシステムを 選択することができます。LILO が他のオペレーティングシステムを起動できない 場合などにこの方法を使うべきでしょう。 [2]
Linux をブートします。
以下のようにして、MBR のバックアップをとります。
dd if=/dev/hda of=/fd/MBR bs=512 count=1 |
Linux パーティションのブートセクターに、LILO をインストールします。
以下のようにして、MBR に BOOTACTV をインストールします。
dd if=bootactv.bin of=/dev/hda bs=446 count=1 |
再起動します。
Linux をブートします。
以下のようにして、元の MBR を復元します。
dd if=/fd/MBR of=/dev/hda bs=446 count=1 |
FDISK /MBR |
もし MBR を書き換えるのがいやで、第 2 の Linux パーティション(たとえば /usr など、swap パーティションではだめ)があるなら、BOOTACTV は パーティション テーブルと合わせて、そのパーティションのブートセクターとして格納することが できます。そしてそのパーティションをアクティブにすることで、DOS-MBR から ブートさせることができます。
Example 2-1. BOOTACTV を Linux の第二パーティションに格納する
# dd if=/dev/hda of=/dev/hda3 bs=512 count=1 # dd if=bootactv.bin of=/dev/hda3 bs=446 count=1 |
Warning |
警告- ディスクのパーティションのきり直しをした時は、必ず``予備''の Linux パーティションのこの合併したブートセクターも更新してください。 |
+--------------------------------------------------+ | マスターブートレコード オペレーティングシステム | |--------------------------------------------------| | LILO -----------------> Linux | | ---> 他の OS | +--------------------------------------------------+ |
この方法を試す前に、あなたの他のオペレーティングシステムを LILO がブート できるかを確認しておくべきでしょう。
以下のようにして、フロッピーディスクに MBR のバックアップをとります。
dd if=/dev/hda of=/fd/MBR bs=512 count=1 |
dd if=/fd/MBR of=/dev/hda bs=446 count=1 |
以下の用例は、ブートセクターやオペレーティングシステムの構成物の説明に使った ものです。
``MS-DOS'' は(IO.SYS その他の)システムの他の部分をロードする MS-DOSの ブートセクターを意味します。
``LOADLIN'' は MS-DOS のパーティションから Linux カーネルイメージをメモリに ロードして実行するプログラムです。通常 CONFIG.SYS から呼び出され、BOOT.SYS のような CONFIG.SYS 構成切り替えプログラムと組み合わせて使われます。 [3]
``LILO'' は Linux カーネルと他のオペレーティングシステムのブートセクターの 両方をロードすることができます。LILO は、他の場所から LILO の残りの部分を ロードする第 1 ステージブートセクターを持っています。 [4]
``BOOTACTV'' は、ブートセクターが読み込まれるべきパーティションを対話的に 選択することを可能にします。もし指定の時間、何もキーが押されなかった場合 アクティブなパーティションをブートします。BOOTACTV は pfdisk パッケージ に含まれています。PBOOT や OS-BS などのようないくつかの類似のプログラム も存在します。 [5]
LILO はいろいろな方法でインストールできますが、その時のシステムのセットアップ 状態によって取り得る方法は限定されるので、この場合、既存のシステムにそのまま 適用できる設定の数は少ないと思います。 以下のセクションでは、様々な考えられるケースを説明しています。合わせて BIOS 制限セクションも参照して ください。
例として、以下のような設定ファイル「/etc/lilo.conf」があったとします。
boot = /dev/hda2 compact image = /vmlinuz image = /vmlinuz.old other = /dev/hda1 table = /dev/hda label = msdos |
この設定ファイルでは、Linux カーネル(/vmlinuz)、代わりの Linux カーネル (/vmlinuz.old)と /dev/hda1 から MS-DOS をブートするチェーンローダを インストールしています。2 行目の COMPACT オプションはマップインストーラに ロードを最適化するように指示します。
全ての例において、IDE タイプのハードディスクデバイスには(/dev/hda..)という ような名称を使います。他のタイプのハードディスク(例えばSCSI ハードディスクは /dev/sda...)でも同様です。
シリンダーの制限は、IDE ディスクでは非常に一般的な問題です。もしディスク容量 が 504 MB を超えていたら、シリンダー数が既に 1024 を超えているでしょう。 多くの SCSI ドライバ BIOS は、1GB あたりでこの制限に引っかかるようなディスク ジオメトリを提供します。最近のディスクコントローラなら、この制限を約 8GB くらいまで、押し上げます。1024 以降の全てのシリンダーに BIOS はアクセスでき ません。LILO はこの問題を見つけると、インストールを中止します。(もしLINEAR オプションが使用されていなければですが。グローバルオプションのセクション を参照してください)
一部分がその``禁止された領域''に及んでいるような大きなパーティションの場合、 最初は正しく動作しているように見えても、依然危険な状態であることに注意して ください。なぜなら、ファイルシステムはそのような制限を知らないので、カーネル のインストール時に 1024 シリンダー以降のディスク領域に配置してしまうかもしれ ないからです。それゆえ、LILO は警告メッセージを表示しますが、差し迫った危険が 存在しない限り、処理は続行します。
このような問題を解決する 4 つのアプローチがあります。
アクセス可能なディスクの 1024 シリンダー未満のパーティションを使う。 もし全ての上記基準を満たす DOS のパーティションがあれば、そこを関連の ファイルの格納のために使用することができます。( DOS パーティション上の /bootセクションを参照してください)
パーティションとディスクを再編成する。これは通常、破壊的操作となるので、 十分に注意して、適切なバックアップをとる必要があるでしょう。
システム上に、DOS または Windows95 があるなら、LILO の代わりに LOADLIN を使う。
全てが失敗した場合、より高機能な BIOS のインストール、別のコントローラ 別のディスク構成にする他ないでしょう。
LILO は以下の項目のロードに際し、BIOS に依存します。
/boot/boot.b
/boot/map (/sbin/lilo 実行時に 作成される)
全てのカーネル
全てのオペレーティングシステムのブートセクター
定義されているなら、起動メッセージ
通常、このことは Linux のルートファイルシステムは、その``安全な''領域に 存在すべきであると受け取れます。しかし全てのカーネルを /boot に置いて、 そこを``良き''パーティションにマウントするか、そのようなパーティションに /boot のシンボリックをはるだけで十分 です。
大容量ディスクの問題のより詳しい説明は、/usr/src/linux/Documentation/ide.txt (または古いカーネルでは、/usr/src/linux/drivers/block/README.ide)を参照して ください。
+--------------------------+ | MBR /dev/hda | | +------------------------| | | MS-DOS /dev/hda1 | | |------------------------| --> | | Linux / /dev/hda2 | +--------------------------+ |
+--------------------------+ | MBR /dev/hda | | +------------------------| | | MS-DOS /dev/hda1 | | |------------------------| --> | | 拡張領域 /dev/hda2 | | | +----------------------| | | | Linux /dev/hda5 | | | |----------------------| | | | ... /dev/hda6 | +--------------------------+ |
OS/2 のブートマネージャは、LILO ブートセクターを論理パーティションからブート することができます。この場合は、拡張パーティションへのインストールの必要は ありません。
この場合は、1 ディスクで、そこにシステムがある構成と同じです。Linux ブート セクターは、第 1 ディスクに置き、第 2 ディスクは、ブートプロセスの後の方で 使います。
BIOS 制限セクションで記述されている 制限は、ブートセクター構成物の配置 のみにかかります。その他のもの (/boot/boot.b, /boot/map, ルートファイル システム、スワップパーティション、その他の Linux ファイルシステムなどなど) は第 2 ハードディスク上のどこにあっても構いません。
第 1 ディスク 第 2 ディスク +--------------------------+ +--------------------------+ | MBR /dev/hda | | MBR /dev/hdb | | +------------------------| | +------------------------| | | MS-DOS /dev/hda1 | | | Linux /dev/hdb1 | | |------------------------| | |------------------------| --> | | 拡張領域 /dev/hda2 | | | ... /dev/hdb2 | | | +----------------------| | | | | | | ... /dev/hda5 | | | | | | |----------------------| | | | | | | ... /dev/hda6 | | | | +--------------------------+ +--------------------------+ |
第 1 ディスクに、Linux パーティションも拡張パーティションもない場合、もはや LILO ブートセクターを置ける場所は、一箇所しかありません。- そこはマスター ブートレコードです。
この構成の場合、LILO が他のオペレーティングシステムのブートもすべて責任を もつことになります。
第 1 ディスク 第 2 ディスク +--------------------------+ +--------------------------+ --> | MBR /dev/hda | | MBR /dev/hdb | | +------------------------| | +------------------------| | | MS-DOS /dev/hda1 | | | Linux /dev/hdb1 | | |------------------------| | |------------------------| | | ... /dev/hda2 | | | ... /dev/hdb2 | +--------------------------+ +--------------------------+ |
LILO をインストールする前に、MBR のバックアップは必ずとるべきです。またこの アプローチをとる前に、LILO が他のオペレーティングシステムをブートできるか 確認する必要があります。
boot = /dev/hda2 という行を boot = /dev/hda に変更 |
システムに 2 つを越えるディスクがあっても、通常は最初の 2 つにしかアクセス できません。それゆえ、構成の選択肢としては、ディスク 2 つの場合と同じです。
2 ディスクの制限は、BIOS だけのことなので、一度ブートしてしまえば、Linux は 全てのディスクを利用するのに何の問題もありません。
最新のカーネルは、LILO がマップファイルを MS-DOS(または UMSDOS)のファイル システム上に置くのに必要な機能を全てサポートしています。DOS パーティションは BIOS 制限 (BIOS 制限のセクションを 参照してください) に引っかからない ような場所に確実に配置される傾向があるので、BIOS 問題で、ネイティブな Linux ファイルシステムパーティションを利用できない場合は、/boot 用の場所として、 理想的な場所です。
これを可能にするため、DOS パーティションは、読み書き可能なようにマウントし、 (例えば /dos/linux のような)ディレク トリを作成し、そのディレクトリに /boot から、全てのファイルを移動し、/boot は そこにシンボリックリングを張ることで、 置き換え、カーネルもまたその新しいディレクトリに移し、これらの新しい場所を /etc/lilo.conf に記述して、最後に /sbin/lilo を実行します。
今後は、新しいカーネルは /sbin/lilo を実行する前に必ずその DOS パーティション 上のディレクトリにコピーする必要があります。例えばカーネルを再コンパイルした 時などは、標準の手続きは、
# make zlilo |
から
# make zImage # mv /dos/linux/vmlinuz /dos/linux/vmlinuz.old # mv arch/i386/boot/zImage /dos/linux/vmlinuz # /sbin/lilo |
に変更します。
Warning |
警告- DOS パーティションのデフラグメントは、Linux やシステム全体をブート不能 にしてしまいます。それゆえ、DOS パーティションのデフラグメントをしないか、 Linux を実行するために Linux ブートディスクを用意して(テストもして)から、 デフラグメント後、/sbin/lilo を実行してください。 [6] |
[1] | 他にも、たぶんより有名な切り替え型ブートプログラムとして、例えば OS/2 のブートマネージャなども同様の動作をします。インストールの手続きは普通 違うでしょうが。 |
[2] | もし他のブートパーティションセレクターでは起動できて、LILO では起動 できなかった場合、作者に知らせてもらいたいと思います。 |
[3] | LOADLIN は以下の anonymous FTP サイトから利用できます。 BOOT.SYS は以下の anonymous FTP サイトから利用できます。 |
[4] | LILO は以下の場所にあります。 |
[5] | pfdisk は以下の anonymous FTP サイトから利用できます。 PBOOT は以下の場所にあります。 |
[6] | * 重要なファイル(例えば C:\LINUX の全てのファイル)には、DOS 上でシステム 属性を付与しておくと、再編成から守ることができるかもしれません。しかし その場合でも、なおブートフロッピーは用意すべきです。 |