🙆♀️
「ゼロからのOS自作入門」の リベンジ Part1🍊
最初に
「ゼロからOS自作入門」をいつも初回ページだけやるが、めんどくさくて毎回
途中で挫折をしていたが、がんばる・・・
※ Part1 だからって、1日目しかやっていないわけではないよ・・・
やっていく
環境構築
第1章 PCの仕組みとハローワルド
めんどくさいから簡単な方法でやっていく
Windows の Bz で Hello world のコードを書いていく。
出来た hello.efi(実行ファイル) を実行する(UEFI BIOS がそのファイルを読みっとて実行してくれる)
※ 本に書いてあったバイナリエディタは、個人的には使いにくかった…
$HOME/osbook/devenv/run_qemu.sh hello.efi
<C言語版で実施する場合>
clang -target x86_64-pc-win32-coff -mno-red-zone -fno-stack-protector -fshort-wchar -Wall -c hello.c
lld-link /subsystem:efi_application /entry:EfiMain /out:hello.efi hello.o
$HOME/osbook/devenv/run_qemu.sh hello.efi
lld-link は、coff形式[1]のものを、PE形式[2]のファイルを出力するためのもの
hello.efi の中身について
CPUが読むための命令
00:0200 48 83 EC 28 48 8B 4A 40-48 8D 15 F1 0F 00 00 FF
00:0210 51 08 EB FE 00 00 00 00-00 00 00 00 00 00 00 00
00:0220 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
UFEI BIOS について
そもそも BIOS とは?
BIOSは、Basic input Output systemの略。基本的な入出力機能、特にOS起動前にコンピュータ内部を初期化したり、ブートーローダ(OS)を呼び出す。
今回作ったのは、UEFI アプリケーション。
話を戻す
UFEI BIOS は、拡張可能なファームウェア
実行ファイルが実行される大まかな流れ(ざっくり)
- 電源起動
- CPUがBIOS起動
- BIOSの初期化
- BIOSは実行ファイルを見つけ、メインメモリへ読出し
- CPUがBIOSを中断し、項目4で読みだしたファイルを実行し、開始する
Discussion