リナックスを実機にインストールする際戸惑ったBIOS(バイオス)について整理しました
(1台のマシンに複数のリナックスを実際にインストールして切り替えて使いたかった為)
この記事でわかること
役目はメインメモリーにOSを読み込む橋渡しをすることです。
小さなプログラムです
パソコンの起動の仕組みがわからないと理解しにくい
パソコンの基本的なこと
- パソコンでは、メインメモリー上の実行コードしか実行できません
- パソコンの電源を入れた直後、メモリー上にはオペレーティングシステムは存在しません
上記の事情でCPUはリセットされると外部からの助けなしにROM内のプログラムを実行するよう設計されています。
このプログラムが起動させるプログラムの一つがBIOS(レガシーなBIOSやEFI)です。
そして ,このBIOS は 起動できる ソフトウエアを探し,見つけたプログラムを起動します。
(複数見つかった場合は選択できるが選択しなければデフォルトのプログラムが選択されます)
このように,小さなプログラムをドミノのように動かして,最終的にOSが起動し,人間がパソコンと直接対話できるようになります。
パソコンの起動
電源投入直後、ないしリセットにより、x86は、まずBIOSの存在する 0xFFFF0 番地のメモリにある命令を実行する(ここはx86を使用するどんなコンピュータでも同じである)
BIOSに制御が渡る
BIOS初期プログラムは Power On Self Test (POST) を実行
必要な機器が正常に動作するかをチェックしそれら周辺機器の初期化を行う
ブート可能な周辺機器を探す
ブート可能デバイスとは、読み込みが可能で、第1セクタの最後尾に 0xAA55 というワード(ブートシグニチャ)があるデバイス
見つけたブートセクタを 実行する
0x7C00 というアドレス(Segment:Offset形式では 0000:7C00 だが、一部のBIOSでは 07C0:0000 を使用)にロードして
ハードディスクドライブの場合、ブートセクタはマスターブートレコード (MBR) と呼ばれ、その内容はオペレーティングシステムには依存しない
MBR(ハードディスクドライブの場合のブートセクタの名称)のコードはパーティションテーブルを調べてアクティブなパーティションを探す
そのパーティションのブートセクタをロードして実行
ブートセクタはオペレーティングシステムに依存することが多い
カーネルをロードして実行する
アクティブなパーティションがなかったり、アクティブなパーティションのブートセクタが不正だった場合
MBRは第二ブートローダをロードして制御を渡す
あとがき
リナックスのことを理解したいと思っている
「リナックス初学者の自分」に向けて書いています。
一つづつ解決していくことが、
リナックスを理解する
早道と感じました。
そして、失敗したこと,解決したことを記録していくことにしました。