PCの電源を入れると、BIOSが立ち上がった後、FDDやCD/DVD、HDのいずれかが読み込まれます。 BIOS の設定ではハードウェアの起動順を変える事はできますが、OS の起動の制御まではできません。 HD にインストールされたOS は、HD を読み込んだ後に定められたプロセスで起動します。 ここでは、このプロセスを簡単に説明します。 特に、複数のOS を1つのパソコンで起動させる場合には、ブートシーケンスの理解は必要だと思います。
分类: LINUX
2008-09-18 22:29:40
PCの電源を入れると、BIOSが立ち上がった後、FDDやCD/DVD、HDのいずれかが読み込まれます。 BIOS の設定ではハードウェアの起動順を変える事はできますが、OS の起動の制御まではできません。 HD にインストールされたOS は、HD を読み込んだ後に定められたプロセスで起動します。 ここでは、このプロセスを簡単に説明します。 特に、複数のOS を1つのパソコンで起動させる場合には、ブートシーケンスの理解は必要だと思います。
”パーティション”とは、ハードディスク内の分割された領域のことです。 つまり、一台のハードディスクを複数の領域に区切り、あたかも複数台のハードディスクがあるかのように利用することができるのです。 もちろん、ハードディスクを物理的に割って区切るのではありません(物理的に区切ると壊れます)。 区切る、と言っても”論理的に区切る”のです。
例えば、メーカー製のPCを購入したとします。 Windows がインストールされているパソコンであれば、そのほとんどはハードディスクが”C ドライブ”と名前が付いていると思います。 同じように、フロッピードライブは”A ドライブ”、光学ドライブは”D ドライブ”などとなっているのを見た事があるかと思います。 このアルファベットは各々の記憶装置を指し示しています。 これを、”ドライブレター”と呼びます。 ドライブレターは、アルファベットのA からZ まで与える事ができます。
近年、ハードディスクが大容量になったせいか、メーカー製のパソコンでも初めからハードディスクが論理的に区切られているものを見かけます。 メーカーが出荷前にハードディスクを論理的に分割し、Windows が入っているのはCドライブ、再インストール(リカバリー)用のデータを保存しているのがDドライブ、となっていたりします。 この場合は、光学ドライブのドライブレターは1つずれて”E ドライブ”などとなっている事が多いです。 この状態は、Windows が存在している領域と、リカバリー用のデータが入っている領域が1つのハードディスク内で分割されていて、お互いに影響を及ぼさない状態であると言えます。 1つのハードディスクを複数の部屋に分け、お互いの部屋には簡単に入れないようになっているようなイメージです。 従って、一方のデータが消失したとしても、他方に影響を及ぼすことが少なく、事故が起きた際の被害を小さくできるというメリットもあります。
以上のように、1つのハードディスクを論理的に区切ることを、”パーティションを切る”と言います。 あるいは単に、”パーティションを設定する”、”パーティションを分割する”などと言う事もあります。 1つのハードディスクに複数のOS を共存させたいのであれば、パーティションを切ってそれぞれの領域にOS をインストールすれば良いのです。
パーティションを切る作業は自分で行う事も行うことができます。 この作業には、商用のソフト(Pertition Magic など)やOS のインストーラ、fdisk コマンドなどを使います。 実際のパーティションの切り方は、各商用ソフトのマニュアルを参考に行うのが一番です。 また、fdisk コマンドを用いた方法はインターネット上に情報が多くあります。 Linux をWindows と1つのハードディスクで共存させて使う場合にも、パーティションを切る操作が必要ですのでパーティションについては、多少なりとも理解しておく事をお勧めします。
前章では、パーティションの定義について簡単に説明しました。 このパーティションには以下のように3種類あります。
基本パーティションとは、ハードディスクをいくつかに区切ったパーティションのうち、 MS-DOS/Windows 系のOS を起動できるパーティションの事です。 この基本パーティションは、1つのハードディスク上に4つまでしか作ることができません。 従って、基本パーティションだけを作るとすれば、4分割しかできないのです。 4分割もできるじゃないか、と言われれば確かにそうですが、LinuxをHDにインストールするには4つでは足りない場合が多いのです。 ではどうするか・・・残りの2種類のパーティションの説明をします。
ハードディスクには基本パーティションは4つしか作れない事は述べました。 しかし、基本パーティションの1つを拡張パーティションというものに指定する事が出来ます。 そして、この拡張領域内にはさらに4つまで論理パーティションというものを作成する事が出来ます。
この論理パーティションは、OSから見れば基本パーティションとほぼ同じように見えます。 つまり、基本パーティションが増えているように見える訳です。 パーティションを切る上で一般的な配置は、基本パーティション3つと、拡張領域に指定した基本パーティション1つ、拡張領域の中に任意の数の論理領域となります。 拡張領域を作成することは、後でパーティションが足りなくならない為の保険にもなります。
ハードディスクには、複数のパーティションが存在できる事を前章までに説明しました。 では、一体何がパーティションを選択し、OS の起動まで至るのか?について説明します。
ハードディスクはパーティションという単位で論理的に区切られていますが、基本パーティションと拡張パーティションに関する情報はハードディスクの先頭セクターに記憶されています。 このセクターの事を、”マスターブートレコード(MBR)”と呼びます。 このMBR の後ろに第一基本パーティション、第二基本パーティション・・・拡張パーティションと続きます。 さらに、拡張領域の先頭(1つ目の論理パーティションの先頭)、2番目以降の論理パーティションの先頭には”拡張パーティションブートレコード(EPBR)”が存在します。 これらのブートレコードがOS の起動に深く関わってきますが、起動プロセスはもう少し先で説明します。
さて、MBR とはどんなものでしょうか?その構造を簡単に示します。
MBR はプログラム領域、パーティションテーブル、ブートシグネチャの3つから成ります。
プログラム領域とは、ブートに関するプログラムを記憶している領域で、インストールされているOS によってプログラムが書き込まれています。
パーティションテーブルには、基本パーティションと拡張パーティションについての情報が記憶されています。
ここには4つの”エントリ”というものがあり、各パーティションの情報が記憶されています。
また、パーティションテーブルでは4つまでのエントリしか扱えません。
これが、基本パーティションを4つしか作れない理由です。
ブートシグネチャはMBR が正しいかどうか判断するものです。
一方、拡張ブートレコードは拡張パーティション以降にあります。
MBR と構造は若干異なりますが、機能そのものはほとんど同じです。
MBR のパーティションテーブルには、4つのエントリがある事は説明しました。 このエントリの中にはそのパーティション情報とともに、”アクティブフラグ”というものが存在します。 名前の通り、アクティブかどうかを判定するものですが、”アクティブ”とは、ブート可能かどうかという事です。 例えOS をインストールしていても、そのパーティションをアクティブにしなければ起動しないのです。
ハードディスクが起動すると、MBR のプログラム領域に書き込まれているプログラムが実行されます。 この最初に実行されるプログラムを、IPL(Initial Program Loader)と呼びます。 このIPL はOS によって仕様は様々ですが、最初のファイルの読み込みを行うことだけは同じです。
MS-DOS/Windows からMBR へ書き込まれているプログラムはブートストラップローダーと呼ばれます。 MS-DOS/Windows からMBR へ書き込むというのは、MS-DOS/Windows のインストールやMBR の初期化を行うことです。 ブートストラップローダーは、MBR 内のパーティションテーブルを調べ、アクティブであるパーティションを探します。 ここで重要なのが、ブートストラップローダーはMBR 内のパーティションテーブルしか参照できないために、論理パーティションのOS を直接起動できない事です。 つまり、論理パーティションにインストールしたOS は直接起動させる事はできないのです。 複数のOS を1つのハードディスクで利用する場合には、これは非常に困ることです。 この場合には、ブートストラップローダーに変わる別なブートローダーを使用します。 このブートローダーについては、以降で説明します。
”ブートローダー”とは、コンピュータの起動直後に動作し、OS をディスクから読み込んで起動するプログラムの事です。 このブートローダーは何種類か存在し、それぞれ機能が異なります。 ブートローダーを選択するに当たって重要なのは、”どのOS をブートさせたいのか”、ということです。 例えば、WindowsNT を起動するにはNTLoader が必要であり、Linux のブートにはLILO やGRUB が必要になるのです。 ブートローダーの機能を比較した簡単な表を示します。
動作項目 | MBR | NTLoader | LILO | GRUB |
直接起動出来るOS | MS-DOS、Windows9X | WindowsNT | Linux | Linux、FreeBSD など |
MBR へのインストール | ○ | × | ○ | ○ |
ブートセクタ へのインストール | × | ○ | ○ | ○ |
ファイルシステムの認識 | × | ○ | × | ○ |
アクティブな基本パーティションのブートセクタのロード | ○ | × | ○ | ○ |
任意のパーティションのブートセクタのロード | × | × | ○ | ○ |
ブートセクタのファイルのロード | × | ○ | × | ○ |
例えば、NTLoader はMBR にはインストールできないので、NTLDR を使用するためには、 MBR に標準のブートストラップローダーかLILO、GRUB のどれかをインストールし、2段階でNTLDR を起動する必要があります。 次に、一般的なブートプロセスの例を示しました。 Windows とLinux をデュアルブートさせる場合には、下の方の2通りが適当な方法だと思います。
NTLDR とは、WindowsNT 系に標準で採用されているブートローダーです。
NTLDR は、前述の通りMBR にインストールできません。
つまり、WindowsNT 系のOS は”MBR のブートストラップローダー → NTLDR → Windows の起動”となります。
MBR のブートストラップローダーはNTLDR を読み込む訳ですが、ここでNTLDR がインストールされている所を”ブートパーティション”と呼びます。
ハードディスクにOS が一つしか入っていない場合には、NTLDR の画面はほとんど見ることがないでしょう。
しかし、ハードディスクにOS を2つ以上インストールしている場合には、起動するOS を選択しなければなりません。
また、NTLDR は他のOS を直接起動はできないので、”他のブートセクタをロード”という過程を経て他のOS を起動します。
このように、あるローダーから別のローダーをロードさせる事を、”チェインロード”と言います。
つまり、WindowsNT 系のNTLDER は、
① NTLDER → WindowsNT
② NTLDER → 他のパーティションのブートセクタ → 他のOS
のどちらかになります。
Linux とWindowsNT を共存させたい場合には、ここで他のパーティションのブートセクタにLILO かGRUB をインストールすることになります。
この共存をデュアルブートと呼びます。
この選択はNTLDRでも可能ですが、その際には以下ような画面が出ます。
オペレーティングシステムの選択
Microsoft Windows XP
Vine Linux
上矢印キーと下矢印キーを使って項目を選択し、Enter キーを押してください。
システムが自動的に起動するまで:30
LILO は、Linux を起動するために開発されたブートローダーです。
LILO を標準で搭載したディストリビューションが多かったのですが、近年はより多機能なGRUB も人気があるようです。
LILO は、その多機能さゆえにプログラムのサイズも大きいものです。
従って、LILO はそのままブートセクタには置くことができず、ハードディスク上のどこかにLILO 本体を置き、
ブートセクタにはそのLILO を呼び出すだけのプログラムが置かれるようです。
LILO はMBR にも直接インストールできますが、LILO の設定ファイルはLinux 上にあるために、Windows 上からは設定できません。
つまり、Windows とLinux を共存させた状態で、LILO をMBR にインストールしたままLinux を消してしまった場合には、後で厄介な事になります。
その際には、MBR をWindows 用に初期化する作業が必要になります。
MBR の初期化は、MS-DOS 起動ディスクで立ち上げて、9x系なら”fdisk /mbr”、NT系なら"fixmbr"というコマンドを使います。
GRUB は、Linux の他にもBSD 系など多くのOS カーネルをロードできます。
LILO と同じように、MBR にもインストールできますし、各パーティションの先頭セクタにもインストールできます。
機能はLILO よりも充実していて、”シェル”という機能があります。
また、LILO はその仕様から”ファイルシステムが認識不可能”なのですが、GRUB は”ファイルシステムが認識可能”です。
LILO はファイルの移動などを行った場合には機能しなくなりますが、
GRUB はファイルの物理的位置ではなくファイル名でアクセスするので、システム環境の変化に強いとも言われています。
さらに、GRUB はFD から起動もできるので、非常に重宝します。