🍊
ゼロからのOS自作入門の個人的ハマりどころ
ゼロからの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