過程が大事

学んだことを適当にアウトプットします

Mikan OSを自作してみる #3

今回やった内容

  • OSを使わずに起動して「Hello World!」を表示させた

ブートローダーについて

<ブートローダーとは>

OSをメインメモリに読み込み起動させるプログラムのことである

<必要な理由>

パソコンには実行するプログラムはメインメモリに配置しなければならないという制約があり、メインメモリは電源を落とすと内容が消えてしまう仕組みになっている。そのため、ストレージにOSを記録し、ブートローダーを用いてストレージからメインメモリに読み出すようにする

<開発内容>

本開発ではUEFI BIOSで動くブートローダーを作る

UEFIではストレージを読み書きする機能を持っているため、ストレージ装置のプログラムであるデバイスドライバを作る必要がない

OSを使わずにHello worldさせる

OSを使わずに起動して「Hello World!」を表示させるプログラムを作る

Ubuntuでoktetaというバイナリエディタを使ってバイナリで書かれたプログラムのEFIファイルを作った

今回は試験用PCでの実行が上手くいかなかったのでこのプログラムをパソコンの代わりに、ソフトウェアで仮想的なパソコンを再現する「QEMU」というエミュレータで実行する

f:id:recursive1414:20211018201701p:plain

UFI BIOSでUSBに保存したファイルを実行する場合の流れ

  • 作成したefiファイルをUSBに保存し、PC起動時に「Hello World」させる場合

起動後CPUはBIOSの実行を開始する

BIOSはコンピュータを初期化した後、接続されているストレージを探索するようになっており、ストレージの中に実行ファイルを見つけると、BIOSはそのファイルをメインメモリへ読み出す。そして、COUはBIOSの実行を中断し、読み出したファイルの実行を開始する

例) EFIファイル : ブートローダーの実行ファイル

次やる内容

  • 次回はEDK ⅡというUEFI用の開発キットを使い、Hello world を再実装する