今日やること
- 1章を終わらせる (Hello,world!を表示させる)
- 2章を終わらせる (メモリマップを表示させる)
1章
再開時は必ずvscodeのターミナルに
$ OS_DIR=/workspaces/mikanos-devcontainer/mikanos
と打ち込んでから始めましょう。
1章については書いてある通りです!無事表示されました。嬉しい〜!
ちなみに (qemu)コンソールを終了する時は quit を入力します。
写経しないで進めてしまったので、hello.cファイルを書き換えてみましょう。
まずviでhello.cを開きます。
$ cd /home/vscode/osbook/day01/c $ vi hello.c
一番下の方にある"Hello, world!\n"を好きなように書き換えます。viのコマンドはこちら。
(省略) EFI_STATUS EfiMain(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) { SystemTable->ConOut->OutputString(SystemTable->ConOut, L"Hello, My OS world!\n"); while (1); return 0; }
書き換えたら:wqで保存します。
コンパイルしてリンクするとhello.efiができるので、QEMUで動かします。
下の一番最後の行のコマンドはイメージを作って、書き込んでQEMUで動かすのを自動化してるらしいです。すご!
$ clang -target x86_64-pc-win32-coff -mno-red-zone -fno-stack-protector -fshort-wchar -Wall -c hello.c $ lld-link /subsystem:efi_application /entry:EfiMain /out:hello.efi hello.o $ ~/osbook/devenv/run_qemu.sh hello.efi
無事書き換えられました〜!
2章
$ cd $OS_DIR $ git checkout osbook_day02a $ cd ~/edk2 $ ln -nfs MikanLoaderPkg /workspaces/mikanos-devcontainer/mikanos/MikanLoaderPkg ./ ($ source edksetup.sh) $ build $ ~/osbook/devenv/run_qemu.sh ~/edk2/Build/MikanLoaderX64/DEBUG_CLANG38/X64/Loader.efi $OS_DIR/kernel/kernel.elf
本で書いているシンボリックリンクを作成するとすでにあるという旨のエラーが出ましたが、どうやら無効らしいので4行目のように変更します。 また、私はbuildに必要なConf/target.txtがなかったため、この5行目のコマンドで生成しないとbuildに失敗しました。なくても大丈夫なのかもしれません。
6行目のようにQEMUを立ち上げると無事Hello, Mikan World!
と表示されました。
2章クリアです!