高等学校工業/ソフトウェア技術/OS起動の仕組み

出典: フリー教科書『ウィキブックス(Wikibooks)』
ナビゲーションに移動 検索に移動

BIOSの起動[編集]

パソコンの電源を入れるなどしてコンピューターが起動されるときに、まずハードウェアが先に起動する。そのハードウェアの起動では、マザーボードのROM(read only memory)に書き込まれているBIOS(バイオス)が読み込まれる。BIOSとは、ハードウェア起動用のソフトウェアである。そもそもBIOSが起動しないと、パソコンに接続された他の多くのハードウェアを起動できないので、まずBIOSを起動させる必要がある。また、このようにBIOSはパソコンの起動に絶対に必要になるので、そもそもマザーボードに固定されて取り付けされているROMチップに、マザーボードの生産時点ですでにBIOSが入れられている。

パソコンの一般利用者が、そのパソコンのBIOSを消したりはできない仕組みになっている。BIOSを他社製BIOSに交換するなども、一般利用者は不可能な仕組みになっている。

(※ 範囲外, 備考: )近年の流行の「UEFI」は、名目上はBIOSとは別のファームウェアかのようにIT業界の新技術紹介では慣用的に扱われるが、しかし文献やwebサイトによっては、新しいUEFIと旧来のBIOSとを組み合わせたファームウェアの種類の総称として「BIOS」という場合もある[1]。このような事情もあり、なので当面は、旧来のBIOSのことを言いたい場合は、区別のために たとえば「レガシーBIOS」などというべきだろう。

さて、レガシーBIOS起動の少しあと、ディスプレイなどのハードウェアが起動する。BIOSはOSに依存しないので、そのパソコンに入ってるOSがwindowsだろうがlinuxだろうが、BIOSの画面は同一である。BIOS起動画面では、たいてい、BIOS生産企業のロゴなどが表示される。

なお、レガシーBIOSでは、マザーボード以外の他のハードウェアの起動順序に関する設定などもできる。たとえば、フロッピーディスクから起動するか、それともCD/DVDから起動するか、それともハードディスクから起動するかなども、BIOSで設定できる機能が用意されている。


OSの起動[編集]

マスターブートレコードとブートローダ[編集]

そして、このようにBIOSなどが起動してから、それからOSの起動の準備に、コンピュータが取り掛かる。OSは通常、ハードディスクにインストールされているので、まずハードディスクを起動しなければならない。 そして、OSを起動して、通常の待機画面になってから、人間がアプリケーションを起動するという仕組みである。

このように、パソコンの電源を入れてから、人間がアプリケーションを操作できるようにするまでの間の、コンピューターが自動的に行う一連の作業のことを「ブート」(boot)という。「ブート」とは起動という意味である。

さて、コンピューター起動時にOSが起動されるときも、いちいち、そのOSのすべてのプログラムを起動する必要はない。そのパソコンを使用できる状態にするための最低限のプログラムだけを、OSは起動すればいいのである。

まず、ハードディスクを起動した直後、ハードディスクの記憶領域の先端(先端から512バイトまで)にある情報を最初にメモリに読み込むという仕組みになっており、この、起動直後に最初に読み込まれる(ハードディスクの)記憶領域のことをマスターブートレコード(MBR、master boot record)という。

MBRである先端512バイトぶんの領域(「ブートセクタ」という)には、機械語でプログラムが書かれている。

そして、MBR(先端512バイト)の最後の2バイトに書き込まれた16進数が 55 aa であると、BIOSは「このデバイスはブート可能なデバイスである」と認識する。(※ この先端512バイトの最後2バイトの 55 aaのことを「ブートシグニチャ」と言う。)

(そして、ブート可能なデバイスであると判断すると、先端512バイトの領域に書かれた機械語プログラム(OSの起動プログラム)をメモリに読み込み、そのメモリの機械語プログラムの先端にプログラム・カウンタを合わせる事で、そのプログラムを実行する、・・・という仕組みらしい。)

コンピュータが起動するとき、まずハードディスクを起動する際に、CPUなどによってハードディスクのマスターブートレコードが読み込みこまれ、メモリ上などにOSのブートに必要なプログラムなどが保管される。

このように MBRの大きさは、規格などにより決められている。通常の仕様のハードディスクでは、MBRの大きさは512バイトであると決められている。512バイトという記憶容量は、現代のパソコンではとても小さい領域である。
このため、現代のパソコンでは、起動に必要なプログラムのサイズがそれよりも遥かに大きいため、MBRにブートに必要なプログラムをすべて収めきる事ができない。なので、MBRとは別に、「ブートローダ」と呼ばれる、起動用のプログラムを格納するための記憶領域を用意しておく。MBRには、ブートローダを呼び出すためのプログラムが収められる。

その後、パソコンはMBRの指示にしたがって、OSの起動に必要なさまざまなプログラムを読みだす。そのパソコンを起動して使用できる状態にするためのプログラムのことをブートローダという。

つまり、パソコンの起動では、MBRの指示にしたがって、ブートローダが始動する。 ブートのためのプログラムを読み込む(ロードする)ので、ブートローダというわけである。

そして、さらにパソコンはブートローダの指示にしたがって、自動的に、OSが起動する。

このように、OSが起動するまでに、さまざまなプログラムのブートが順番に行われている。

OS起動までの各種のプログラムの起動の段階を大まかに区分すると、

(パソコン電源が入る) → (ハードディスクの電源が入る) → MBRの起動と読み込み → MBRの指示にしたがい、(OS起動用の)ブートローダの起動 → (ブートローダの指示にしたがい)OSの起動 (→ 人間がOSを操作できる段階)

という順番である。

なお、ブートローダを格納するための(ハードディスク上に用意する必要のある)記憶領域のことを「ブートパーティション」と言ったり、「ブートレコード」と言ったりする。なお、ブートパーティションとMBRとは、別物である。

  1. ^ 中島能和『Linux教科書 LPICレベル1 Version5.0対応』、翔泳社、2019年7月10日 初版 第2刷、18ページ