Open8

ゼロからのOS自作入門_memo

miyatakamiyataka

OS起動までには、いくつかのステップがある。

電源ON

ファームウェア起動(レガシーBIOS、UEFI BIOS)

ブートローダー起動

OS起動

BIOSとは、Basic Input/Output Systemのこと。
レガシー(BIOS)と、UEFI(BIOS)があり、近年はUEFIになっている。
起動順序などを設定できるソフトウェア。

ブートローダというソフトウェアがある。これはOSを起動するために、OSをメインメモリに読み込み、起動するためのソフトウェアである。
UEFIにおいては、ストレージを特定フォーマット(FAT)でフォーマットしたのち、特定パス(/EFI/BOOT/BOOTX64.EFI)に格納したファイルを自動で起動するようになっている。

miyatakamiyataka

この本では、UEFIアプリケーションとして、ブートローダを実装しているようだ。

miyatakamiyataka

P75の脚注にあったが、Linuxはカーネルファイルの先頭部分を細工してEFIファイルと認識させるようにして、ブートローダなしで起動するための「EFI boot stub」という仕組みがあるようだ。なるほどねぇ。

miyatakamiyataka

3章で、ブートローダ(UEFIアプリケーション)を更新して、kernel(となるはずのプログラム)のエントリポイントを実行する変更を加えた。ブートローダはMain.cだけでなく、Loader.infも更新する必要があるのに注意。