引き続き
Mac で始める「ゼロからのOS自作入門」 - yamoridon - Qiita
の記事を見ながら実行していきます。

4.1 make入門(osbook_day04a)

カーネルファイルのみの書き換えなので、ブートローダをビルドし直す必要はありません。

% cd $HOME/workspace/mikanos/kernel
% git checkout osbook_day04a

※ファイルを自分で変更していると、git checkout コマンドで
error: Your local changes to the following files would be overwritten by checkout
というエラーが出ます。変更を廃棄してもいいのなら、
% git reset --hard
これで、チェックアウトできるようになります。


$HOME/mikanos/kernel/Makefile を修正します。
LDFLAGS に -z separate-code に追加します。これは、day03aの記事からリンカに追加しているオプションです。
LDFLAGS  += --entry KernelMain -z norelro --image-base 0x100000 --static -z separate-code

なお、Makefileでは $CPPFLAGS変数はきちんと展開されるようで、day03cの記事のようにコンパイル時に eval を付ける必要はありませんでした。


% source $HOME/osbook/devenv/buildenv.sh

% make

% $HOME/osbook/devenv/run_qemu.sh $HOME/edk2/Build/MikanLoaderX64/DEBUG_CLANGPDB/X64/Loader.efi $HOME/workspace/mikanos/kernel/kernel.elf

実行結果↓
day04a
 



ゼロからのOS自作入門
内田公太
マイナビ出版
2021-03-22