环境搭建
建议在 docker
环境下搭建,构建的 Dockerfile
如下,如果对这部分有疑问,可以参考 Docker 搭建实验环境
Bug
如果你的位置在南方(例如香港,深圳,广州等),也就是局域网的 IP 地址为
172
或者175
开头的,可以参考 Docker 构建后无法 ssh 登录服务器或容器 进行解决。
from ubuntu:20.04
run sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list && \ apt-get update && \ apt-get install -y --no-install-recommends \ build-essential \ ca-certificates \ curl \ wget \ unzip \ git \ libssl-dev \ pkg-config \ qemu \ qemu-system \ gcc \ gdb
workdir /root/
run wget https://github.com/yuan-xy/Linux-0.11/archive/refs/heads/master.zip && \ mv master.zip linux-0.11.zip && \ unzip linux-0.11.zip
这里考虑到从 原版 开始构建会比较麻烦,毕竟 Linux 0.11
是很早期的版本了,所以直接用了别人修改过的项目(当然关于源码的部分是肯定没改的)
输入命令:
docker build --network=host -t linux0.11 -f <your-dockerfile-name> .
进行镜像的构建,然后使用命令:
docker run --network=host -it linux0.11:latest /bin/bash
运行项目即可。
我在这里使用 VS Code
直接连接进入容器中,如下所示:
然后在此终端中输入 make && make start
即可运行。
如何查看 qemu 的窗口
由于我们在 docker
中没有开启 GUI
,所以这里 qemu
的窗口我们是无法直接看见的,但可以发现,make satrt
会开启一个 vnc server
,在端口 5900
,我们只需要在本机安装一个 vnc client
即可查看此远程桌面。
这里,我们可以选择 realvnc
,在 ArchLinux
下安装:
yay -S realvnc-vnc-viewer
然后,启动此 vnc viewer
,在 url
里输入 localhost:5900
,打开即可看见 qemu
的窗口:
Debug
在 Debug
之前,我们需要修复一个 bug
,修改 Makefile
文件中的 debug
部分如图:
即,将 qemu-system-x86_64
修改为 qemu-system-i386
我们可以在终端输入 make debug
来启动一个 gdb server
,然后,启动另一个终端,输入:
gdb tools/system
进入 gdb
,然后输入:
target remote:1234
即可连接到 gdb server
,然后输入:
b mainc
即可得到下图:
而对于 qemu
的窗口,应该如下所示:
至此,环境已搭建完成。