1. ビルドと実行

ビルドと実行は、makemake qemuで行えるとREADMEに記載がある。 また以下の記事からmake qemu-noxでXなしで実行でき、make qemu-nox-gdbでXなしでgdbでデバッグできることが分かる。 「xv6のデバッグ環境をつくる」(リンク2)

コンパイル時にレベル2の最適化オプションが付与されているので、デバッグの際に変数の中身が見れないことがある。 そのときは、MakefileのCFLAGSからオプションO2を削ると変数の中身が見える。

Makefile

#CFLAGS = -fno-pic -static -fno-builtin -fno-strict-aliasing -O2 -Wall -MD -ggdb -m32 -Werror -fno-omit-frame-pointer
CFLAGS = -fno-pic -static -fno-builtin -fno-strict-aliasing -Wall -MD -ggdb -m32 -fno-omit-frame-pointer

シングルスレッドでの動作を確認したいときは、MakefileのCPUS変数の値を1にする。

Makefile

#CPUS := 2
CPUS := 1

また、wsl上でqemuやgdbを動かしていて、キーボード入力などのためにXを使いたいとき(qemu-noxで実行するとシリアルポートを使うことになる)は、windows側でXサーバを起動し、wsl側の環境変数DISPLAYを<win側のvethのアドレス>:0として、make qemu-gdbを実行する。 XサーバにVcXsrvを使う場合は以下の記事が参考になる。 「AsTechLog WSL2+Ubuntu 20.04でGUIアプリを動かす」(リンク26)