・Mac で始める「ゼロからのOS自作入門」 - yamoridon - Qiita
※ファイルを自分で変更していると、git checkout コマンドで
(以下、5.3 の操作です。)
------------------------------
本の記述通りにフォントファイルを作ります。
------------------------------
(以下は、day05b と同じです。)
カーネル用のMakefile($HOME/workspace/mikanos/kernel/Makefile)を修正します。
さらに、上記記事の通りに
また、$HOME/workspace/mikanos/kernel/main.cpp に以下の記述を追加します。
(私の環境では、makeエラーは出なかったのですが、一応。)
※ Makefile、main.cpp の修正はこれ以降もずっと、Macでは同じく必要です。
修正したら、カーネルファイルをmakeします。
続いて、ブートローダです。
$HOME/workspace/mikanos/MikanLoaderPkg/Main.c を修正します。
※ Makefile の修正はこれ以降もずっと、Macでは同じく必要です。
修正ポイントは、day03cの記事と基本的には同じ箇所になります。
修正したら、ブートローダをビルドします。
それでは、QEMUで実行してみます。(長いですがコマンドプロンプトの% を除いて1行です。)

ASCIIコードの文字が一通り出力されました。
の記事の修正点は 5.2 まででしたが、6.4 まで進めたそうなので、引き続き実行していきます。
5.3 フォントを増やそう(osbook_day05c)
5.3 フォントを増やそう(osbook_day05c)
% cd $HOME/workspace/mikanos/kernel
% git checkout osbook_day05c
※ファイルを自分で変更していると、git checkout コマンドで
error: Your local changes to the following files would be overwritten by checkoutというエラーが出ます。変更を廃棄してもいいのなら、
% git reset --hardこれで、チェックアウトできるようになります。
(以下、5.3 の操作です。)
------------------------------
本の記述通りにフォントファイルを作ります。
% ../tools/makefont.py -o hankaku.bin hankaku.txt
% objcopy -I binary -O elf64-x86-64 -B i386:x86-64 hankaku.bin hankaku.o
------------------------------
(以下は、day05b と同じです。)
カーネル用のMakefile($HOME/workspace/mikanos/kernel/Makefile)を修正します。
LDFLAGS += --entry KernelMain -z norelro --image-base 0x100000 --static -z separate-code
さらに、上記記事の通りに
sed --in-place 's|$(notdir $(OBJ))|$(OBJ)|' $@を
sed -I '' -e 's|$(notdir $(OBJ))|$(OBJ)|' $@に変更します。
また、$HOME/workspace/mikanos/kernel/main.cpp に以下の記述を追加します。
(私の環境では、makeエラーは出なかったのですが、一応。)
extern "C" void __cxa_pure_virtual() {while (1) __asm__("hlt");}
※ Makefile、main.cpp の修正はこれ以降もずっと、Macでは同じく必要です。
修正したら、カーネルファイルをmakeします。
% source $HOME/osbook/devenv/buildenv.sh% make
続いて、ブートローダです。
$HOME/workspace/mikanos/MikanLoaderPkg/Main.c を修正します。
※ Makefile の修正はこれ以降もずっと、Macでは同じく必要です。
typedef void EntryPointType(const struct FrameBufferConfig*);を
typedef void __attribute__((sysv_abi)) EntryPointType(const struct FrameBufferConfig*);に修正します。
修正ポイントは、day03cの記事と基本的には同じ箇所になります。
修正したら、ブートローダをビルドします。
% cd $HOME/edk2
% source edksetup.sh
% build
それでは、QEMUで実行してみます。(長いですがコマンドプロンプトの% を除いて1行です。)
% $HOME/osbook/devenv/run_qemu.sh $HOME/edk2/Build/MikanLoaderX64/DEBUG_CLANGPDB/X64/Loader.efi $HOME/workspace/mikanos/kernel/kernel.elf

ASCIIコードの文字が一通り出力されました。