操作系统学习日志 02

开发 #OS

获取 BenOS

我们可以在 github 上找到 BenOS 的源码,地址

我们使用 git clone 命令下载到本地:

git clone https://github.com/runninglinuxkernel/arm64_programming_practice.git

编译 BenOS

我们需要安装编译工具链:

sudo apt install qemu-system-arm libncurses5-dev gcc-aarch64-linux-gnu build-essential git bison flex libssl-dev

我们进入到chapter02/lab01_hello_benos/BenOS目录下,执行如下命令编译:

make

然后目录下就会生成benos.bin可执行文件以及benos.elf文件,如果你的 qemu 支持树莓派 4,可直接使用make run命令来调用 qemu 虚拟机来模拟树莓派运行:

make run
#较新的 qemu 支持树莓派 4B: qemu-system-aarch64 -machine raspi4b -nographic -kernel benos.bin
Welcome BenOS!

GDB 调试

我们可以使用 GDB 调试器来调试 BenOS,首先安装 gdb:

sudo apt install gdb-multiarch

然后我们需要设置 qemu 的串口以及进入调试模式:

qemu-system-arm -machine raspi4b -serial null -serial mon:stdio -nographic -kernel benos.bin -S -s
# 要退出 qemu,按下 Ctrl-A X 即可。

接着我们在另一个终端执行 gdb 命令:

gdb-multiarch --tui build/benos.elf

图 0

进入这个界面后回车,然后依次输入三个命令:

target remote localhost:1234
b _start
c

结果如下图:

图 1

然后我们在 gdb 里输入s命令来单步执行,可以看到程序的执行流程:

图 2

总结

本文介绍了如何获取 BenOS,编译,以及使用 GDB 调试器来调试 BenOS,下一篇我们来解构 BenOS 的源码。