■ブートストラップのしくみ
これまでに、オペレーティングシステム (OS) は
利用者からの入力を受け付けたり、プログラムを実行したり、
様々なハードウェアを管理したり、といった重要な機能を実現していることを学んだ。
しかし、コンピュータの電源を入れたばかりの時、主記憶装置にはまだOSは読み込まれていない。
それでは、コンピュータはどのようにして起動し、OSをスタートさせるのだろうか?
以下では、標準的なコンピュータの起動の手順について見ていこう。
なお、コンピュータの起動のことをブートストラップと呼ぶ。これは自力で這い上がることを意味する「靴紐を引っ張り上げる」というイディオムに由来している。短縮してブートと呼ぶことも多い。
図4 ブートストラップの概念図(フロッピーディスクの場合)
図5 ブートストラップの概念図(ハードディスクの場合)
ブートストラップの概要
- BIOS の実行
電源を入れると、BIOS ROM 内のプログラムが実行される。(*1)(*2)
- 起動ドライブの検索
BIOS が、ハードウェアを検査・初期化し、OS を起動するドライブを検索する。
- MBR の実行 (HDDの場合のみ)
BIOS が、マスターブートレコード(MBR)を RAM に読み込み、その中のプログラムに制御を移す。(*3)
- IPL の実行
BIOS (もしくは MBRのプログラム)が、IPL を RAM に読み込み、制御を移す。(*4)
- OS の起動
IPL がOSの起動に必要な最初のファイルを読み込み、以下順次実行する。
(*1) BIOS: Basic Input/Output System
コンピュータの起動に必要な低機能・小容量のハードウェア制御用プログラム。
(*2) ROM: Read Only Memory
不揮発性の読み出し専用メモリ。⇔ RAM
(*3) MBR: Master Boot Record
HDD の先頭に書かれている情報。IPL を読み込むプログラムや、
OS がどこにあるかという情報などが含まれる。
HDD が複数の領域に分割されているときに活躍する。
(*4) IPL: Initial Program Loader
OSのある領域の先頭に書かれた、OSを読み込むためのプログラム。
DOS や Windows 95, 98 なら IO.SYS、Windows NT なら NTLDR、
Windows Vista なら Bootmgr.exe。
ポイント
- ブートは多段階式に実行される。
HDDからなら、BIOS → MBR → IPL → OS、
それ以外なら、BIOS → IPL → OS
- BIOS を ROM に格納しておくことで、OSに頼らずにOSを起動できる。
- BIOS の役割は、どこから OS を起動するかを決めて、そこに書かれた「OS読み込み用プログラム」IPL にバトンタッチすること。
- HDD はひとつのドライブを複数の領域に分けて、それぞれの領域に IPL と OS を持たせることができる。MBR は IPL を読み込むためのクッションとなっている。
参考
ブートの仕組み
■サイバーメディアセンター端末のブート
サイバーメディアセンターの情報教育用端末は、上で説明した手順と若干異なり、ネットワークブートをする。ネットワークブートとは、
自分のHDDではなくネットワーク上にあるOSのデータを読み込んでブートする仕組みのことである。ネットワークブートは、大学のように多数のコンピュータを運用する場合によく用いられ、次のような利点と欠点がある。
ネットワークブートの利点
- 故障に強い。コンピュータで最も故障の多い部品のひとつである HDD を使わなくてもよいので、壊れにくい。
- 管理が簡単。サーバ上のファイルを更新するだけで、そのファイルを用いるすべてのコンピュータの OS を更新することができるので、管理が簡単。
ネットワークブートの欠点
- 障害の影響が大きい。サーバや途中のネットワークに障害が発生すると、すべてのコンピュータが利用できなくなる。
- 起動に時間がかかる。OS やアプリケーションをネットワーク経由で転送するので、HDD で起動する場合に比べると起動に時間がかかる。
それでは、ネットワークブートの主な起動手順を見てみよう。
図6 ネットワークブートの概念図
ネットワークブートの概要
- 「ブートストラップの概要」の 2. で起動ドライブとして「ネットワーク」が選ばれるように設定しておく。
- DHCPサーバを探し出し、IPアドレスをもらう。(*5)
- TFTPサーバを探し出し、ブート用プログラムをもらう。(*6)
- ブート用プログラムを通じて、OSのファイルの管理サーバからディスク割り当て情報を取得する。
- ブート用プログラムを通じて、I/O サーバ上のOSのファイルにアクセスする。
- あとは「ブートストラップの概要」の 3. 以降とほぼ同様。
(*5) DHCP: Dynamic Host Configuration Protocol
ネットワーク接続に必要な情報を自動的に割り当てる仕組み
(*6) TFTP: Trivial File Transfer Protocol
コンピュータ間でファイルを転送するための簡易な仕組み
ポイント
- ネットワークブートも多段階式に実行される。
- OSのファイルは I/O サーバにある。負荷を分散させるために、約30台の端末ごとに1台のI/O サーバがある。
- 適切なI/O サーバを知るために、ブート用プログラムを用いて管理サーバから割り当て情報を取得する。
- ブート用プログラムもネットワーク上にあるので、まずそれをTFTPサーバからダウンロードする。
- ダウンロードするために、まずDHCPのサーバに仮のIPアドレスを割り振ってもらう。
■コンピュータの仮想化
一つのコンピュータで、複数のOSを利用したい場合がある。例えば、次のようなときが考えられる。
- Windows 95 でしか動かない昔のソフトを Windows Vista のパソコンで動かしたい。
- ホームページ作成の仕事をしているので、様々なOSやブラウザでの見え具合を確かめたい。
- 同じサービスを提供しつつもサーバ計算機の台数を減らしてコストを削減したい。
複数のパーティションに異なるOSをインストールしておき、毎回再起動して切り替えることもできるが、それでは複数のOSを「同時に」は使えず不便だ。一台のコンピュータで複数のOSを同時に使う方法はないだろうか。
OSは様々なプログラムを監視し、どのプログラムがどのハードウェアを利用してよいかを決定している。つまり、プログラム間でCPUやHDD、主記憶装置などの資源(リソース)の取り合いが発生しないように優先順位をつけている。OSが下した決定は絶対だ。しかし、お互いに他のOSがいることを想定していないOSが複数存在するととたんに問題が発生する。つまり、OS間でハードウェアリソースの取り合いが発生する。その結果、分かりやすくいえば、画面が乱れたりファイルが壊れたりすることになる。
図7 仮想化ソフトの概念図
コンピュータを仮想化するソフトウェアを用いれば、このような問題を解決し、複数OSの同時利用を実現できる。「仮想化」とは、実体は異なるが実効的には同様の働きをする別の仕組みに置き換えることを指す。すなわち、仮想化ソフトはコンピュータ本体(ハードウェア)を置き換え、OSから見たときにあたかもそれ単体で1つのコンピュータであるかのように振舞うソフトウェアだ。
つまり、仮想化ソフトにOSのデータを適切に与えて「起動」することで、そのOSが仮想化ソフトの中だけで利用できるようになる。一般に、本来起動しているOSをホストOS、仮想化ソフトの中で起動しているOSをゲストOSと呼ぶ。仮想化ソフトは、ゲストOSにはあたかもハードウェアを占有しているように思わせておきながら、実際にはホストOSや他のゲストOSとのリソースの競合を監視し、未然に防いでいる。
★サイバーメディアセンターにある仮想化ソフト VMWare を用いて、Linux を使ってみよう
図8 VMWare の実行例