🍊

ゼロからのOS自作入門の個人的ハマりどころ

2021/12/06に公開

ゼロからのOS自作入門を買って、書いてある事を試してみて上手く動かずググったところをまとめました。

前提

  • windows on WSLで各種操作を行う

1章

  • 付録A.1, A.2の開発環境構築をサボらずに行う事がまずは重要

  • WSLでquemを用いてOSを起動してNo matching fbConfigs or visuals foundというエラーが出る場合はexport LIBGL_ALWAYS_INDIRECT=1で環境変数を設定する。

2章

  • まだインストールされていない場合はWSLにpythonをインストールする。
  • 2章はgit操作でソースコードが良い感じになると油断すると51ページにあるConf/target.txtの編集の存在を見落とす。
  • edkはmasterブランチでは動作が安定しない可能性があるInstance of library class [RegisterFilterLib] is not foundのようなエラーが出た場合は安定板のタグにcheckoutする
cd $HOME/edk2
git checkout edk2-stable202102

3章

2章で環境構築としては安定化してくるので、ビルド~起動までの一連の操作のどれを行うべきかを把握すればgit checkoutからの流れ作業にできる

git操作で変更されたMain.cの内容を反映

cd ~/workspace/mikanos/kernel/
clang++ $CPPFLAGS -O2 --target=x86_64-elf -fno-exceptions -ffreestanding -c main.cpp
ld.lld $LDFLAGS --entry KernelMain -z norelro --image-base 0x100000 --static -o kernel.elf main.o

ビルド~起動

cd ~/edk2
source edksetup.sh
build
~/osbook/devenv/run_qemu.sh ~/edk2/Build/MikanLoaderX64/DEBUG_CLANG38/X64/Loader.efi ~/workspace/mikanos/kernel/kernel.elf

P84 cstdintのインクルード

source ~/osbook/devenv/buildenv.sh
echo $CPPFLAGS

4章

makefileの導入によりカーネルのビルド手順がmakeコマンドになる

cd ~/workspace/mikanos/kernel/
source ~/osbook/devenv/buildenv.sh
make

ビルド~起動の手順は変わらず

cd ~/edk2
source edksetup.sh
build
~/osbook/devenv/run_qemu.sh ~/edk2/Build/MikanLoaderX64/DEBUG_CLANG38/X64/Loader.efi ~/workspace/mikanos/kernel/kernel.elf

4章まで進めば、以降はブランチを切り替えては同じコマンドを実行するだけで良くなりました。

Discussion