「ゼロからのOS自作入門」 01日目

参考文献

こちらの記事を参考にいたしました! 良記事ありがとうございます。


試行錯誤メモ

前回 は、00 日目ということで M1 Mac で動く QEMU をセットアップして OS の実行環境の整備をしました。

本日は、その続きで C 言語のビルド環境を整えていきたいと思います(書籍的には、第 1 章の後半あたりですね)。

ビルドツールの準備

Xcode をインストール済みなので clang は使えたのだけど、リンカ類がないので homebrew でそのあたりをインストールします。 もともとの clang とバッティングしそうなので躊躇ったのですが、homebrew ならあとから削除もできそうなので、そのままローカル環境に開発環境を作ることにしました。

$ brew install llvm nasm

# よろしくPATHなどを通す
$ vim ~/.zshrc
export PATH=/opt/homebrew/Cellar/llvm/11.1.0/bin:$PATH

Cで書かれたEFIプログラムをコンパイルしてみる

コンパイラとリンカがインストールできたので、C 言語のソースがコンパイルできるようになったはず。

$ cd day01/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 
-> hello.efi ができてるはず!

あとは、前回の要領でディスクイメージを作成して QEMU で動かしてみます。

$ qemu-img create -f raw disk.img 200M
$ mkfs.fat -n 'MIKAN OS' -s 2 -f 2 -R 32 -F 32 disk.img
$ hdiutil attach disk.img
$ mkdir -p /Volumes/MIKAN\ OS/EFI/BOOT
$ cp hello.efi /Volumes/MIKAN\ OS/EFI/BOOT/BOOTX64.EFI
$ hdiutil detach /Volumes/MIKAN\ OS

$ qemu-system-x86_64 \
  -drive if=pflash,file=$HOME/Code/mikanos-build/devenv/OVMF_CODE.fd \
  -drive if=pflash,file=$HOME/Code/mikanos-build/devenv/OVMF_VARS.fd \
  -hda ./disk.img

boot

きたー。

ほとんど他所様の記事を参考にコピー&ペーストで終わらせてしまったのですが、これでスタートラインにさらに近づいた気がする…! これにて 1 章完了。

さて、次の 2 日目(2 章)は、UEFI のビルドツールである EDK II の導入ですが、先人の記事ではこれも問題なく動くみたいなので安心して前に進めそう。助かる。

ではまたー。

© 2021 czu.jp