こちらの記事を参考にいたしました! 良記事ありがとうございます。
前回 は、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 言語のソースがコンパイルできるようになったはず。
$ 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
きたー。
ほとんど他所様の記事を参考にコピー&ペーストで終わらせてしまったのですが、これでスタートラインにさらに近づいた気がする…! これにて 1 章完了。
さて、次の 2 日目(2 章)は、UEFI のビルドツールである EDK II の導入ですが、先人の記事ではこれも問題なく動くみたいなので安心して前に進めそう。助かる。
ではまたー。