此系列并不是完整的实验指南,也不能替代实验指导书,而是意图是用我的经验,挑选一部分较好的文章,为时间不太充裕的读者节省一部分查找资料的时间。
简而言之, a collection for jump start.
系统环境
你需要一个 64 位的 Linux,但不建议使用 WSL,Make 容易出现玄学错误。可以在 清华镜像站 下载 Ubuntu,下载后还可以换清华源。
系统安装后还需要 添加 32 位支持、安装 GCC Multilib、QEMU。
uCore 代码在 https://github.com/chyyuu/os_kernel_lab,Git Clone 下来之后使用 git checkout master
切换分支,否则是 rCore 源代码。
如果 make qemu 提示没有找到 gnome-terminal,可以(1)安装 gnome-terminal 或(2)将 makefile 中的 gnome-terminal 改成你的终端名称。
知识基础
请不要忘了 官方文档“练习” 之外的内容,也很有用。
练习 1
什么是 Makefile:https://seisman.github.io/how-to-write-makefile/introduction.html
查找命令和参数的用法:在 Shell 中运行 man
,或者更容易查找的 Ubuntu Manpage 网站
什么是主引导记录 / MBR/0x55aa 是干什么的:https://daemon369.github.io/linux/2013/08/03/master-boot-record
GCC 文档:https://gcc.gnu.org/onlinedocs/gcc-11.2.0/gcc/
练习 2
GDB 远程调试:https://www.cnblogs.com/blogs-of-lxl/p/10462262.html 或使用 vscode(没错,万能的 vscode):https://blog.xhyeax.com/2020/10/15/vscode-debug-ucore/
练习 3
A20 总线:https://wiki.osdev.org/A20_Line
GDT:https://wiki.osdev.org/Global_Descriptor_Table
练习 4
这部分可以查看官方文档的 “ELF 文件格式概述” 和“硬盘访问概述”部分。
练习 5
看代码注释。
练习 6
中断向量表:https://wiki.osdev.org/Interrupt_Descriptor_Table
编程部分看代码注释。
Challenge
暂不包含,如果时间不充裕,不建议尝试 Challenge。
实验报告
https://kiprey.github.io/2020/08/uCore-1/
https://xr1s.me/2018/05/15/ucore-lab1-report