Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5180694
  • 博文数量: 1696
  • 博客积分: 10870
  • 博客等级: 上将
  • 技术积分: 18357
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-30 15:16
文章分类
文章存档

2017年(1)

2016年(1)

2015年(1)

2013年(1)

2012年(43)

2011年(17)

2010年(828)

2009年(568)

2008年(185)

2007年(51)

分类: LINUX

2008-09-18 22:29:40

OS のブートシーケンス

 OS の起動とは・・・

 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つ、拡張領域の中に任意の数の論理領域となります。 拡張領域を作成することは、後でパーティションが足りなくならない為の保険にもなります。


 マスターブートレコード(MBR)

 ハードディスクには、複数のパーティションが存在できる事を前章までに説明しました。 では、一体何がパーティションを選択し、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

 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 LOdaer)

 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(GRand Unified Bootloader)

 GRUB は、Linux の他にもBSD 系など多くのOS カーネルをロードできます。 LILO と同じように、MBR にもインストールできますし、各パーティションの先頭セクタにもインストールできます。 機能はLILO よりも充実していて、”シェル”という機能があります。
また、LILO はその仕様から”ファイルシステムが認識不可能”なのですが、GRUB は”ファイルシステムが認識可能”です。 LILO はファイルの移動などを行った場合には機能しなくなりますが、 GRUB はファイルの物理的位置ではなくファイル名でアクセスするので、システム環境の変化に強いとも言われています。 さらに、GRUB はFD から起動もできるので、非常に重宝します。

阅读(1355) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~