この記事ではMBR(マスターブートレコード)とは何かを初学者が初学者の方向けに解説します。
MBRの読み込みは、Linuxのブートプロセスでは下記2番目に該当します。
ブートプロセスとはOSの起動順序という意味です。
BIOSの起動
↓
MBRの読み込み ←ここ!
↓
カーネルの起動
↓
Systemdの起動
まず、MBR(マスターブートレコード)とはざっくりいうと、
OSを起動させるために必要なプログラムが入ったハードディスクの中にある特定の場所のことです。
具体的には、ハードディスクの先頭セクタにあります。
セクタとは円盤状の記憶媒体における最小の記録単位のことです。
512byteで1セクタといった形ですね。この中にMBRが入っています。
要はハードディスクの中に入ってるわけですね。
この特定の場所は、マザーボードの中にあるROM(読み取り専用)の中にあるBIOSさんが起動すると、CPUやストレージ、HDDなどの状態をチェックし問題がなければそのままOSの起動に入ります。
そのOSの起動に入るときに必要なプロセスの中にMBR読み込むのです。
MBRには何が具体的に入っているかというと3つだけです。
1.ブートローダー
2.パーティションテーブル
3.ブートシグネチャ
下図がMBRのイメージ図になります。
ブートローダーは、LinuxではGRUB2というプログラムが使用されています。
このブートローダーがパーティションテーブルといわれる
パーティションの場所や種類を見てそれぞれのパーティションにある本命の
OSを起動していきます。
パーティションとはハードディスクの中にある部屋のようなもので
この部屋はこのシステムを起動するためのプログラムが入るための部屋
あの部屋はユーザーが自由にファイル作ったり変更したりいい部屋というのが
指定したByteで区切られているものになります。
このパーティションがMBRの中に4個あり、その4つのパーティションに
ブートローダーであるGRUB2がそれぞれのお部屋にお邪魔して
ちょっとOS起動しますねと言って読み込んでいくわけです。
そして読み込まれたOSの核に当たる部分がカーネルになっていて
そのカーネルに制御を移す役割になっております。
まとめると
BIOSさんがMBRを読み込む。
↓
MBRの中のブートローダー(GRUB2)を読み込む
↓
ブートローダー(GRUB2)がパーティションテーブルを見る
↓
ブートローダー(GRUB2)がそれぞれのパーティションにあるOSを起動する。
↓
カーネルに制御が移っていく。
図の下にあるブートシグニチャというのは、このセクタがブートセクタか否かを表しています。
どういうことかというと、先ほどBIOSさんがMBRを読み込みに行くと書きましたが、
このBIOSさんはMBRがどこにあるかわかっていないのでこの、ブートシグニチャがあるかどうかで
このセクタがMBRかどうか判断しています。
つまり、このブートシグニチャがたった1Byte無いだけでOSが起動されないんです。。。
とても大事な役割ですね。
ちなみにこのブートシグニチャが損なわれた際には、TestDiskというソフトウェアを使って復旧できるそうです。
どうしてブートローダーがまた別のお部屋にお邪魔してOSを他のパーティションの中にある
OSの起動プログラムを見るという回りくどいやり方をしているかというと、
MBRにあるブートローダーに厳しい容量制限がかけられているからだそうです。
以上がMBRの読み込みの仕組みの解説になります。
初学者のため何か間違っていることがありましたら、ご指摘いただけると幸いです。
以下は参考にさせていただいたサイト様になります。
ブートセクタとは何か - PCと解 (pctrouble.net)
MBR(マスターブートレコード)を解剖する #filesystem - Qiita
GRUBとは - 意味をわかりやすく - IT用語辞典 e-Words
Linuxがブートするまで · Keichi Takahashi