引き続き
・Mac で始める「ゼロからのOS自作入門」 - yamoridon - Qiita
カーネルファイルのみの書き換えなので、ブートローダをビルドし直す必要はありません。
※ファイルを自分で変更していると、git checkout コマンドで
$HOME/mikanos/kernel/Makefile を修正します。
LDFLAGS に -z separate-code に追加します。これは、day03aの記事からリンカに追加しているオプションです。
なお、Makefileでは $CPPFLAGS変数はきちんと展開されるようで、day03cの記事のようにコンパイル時に eval を付ける必要はありませんでした。
・Mac で始める「ゼロからのOS自作入門」 - yamoridon - Qiita
の記事を見ながら実行していきます。
4.1 make入門(osbook_day04a)
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