THU uCore Lab 0 / 1 快速上手

此系列并不是完整的实验指南,也不能替代实验指导书,而是意图是用我的经验,挑选一部分较好的文章,为时间不太充裕的读者节省一部分查找资料的时间。
简而言之, 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

https://www.jianshu.com/p/2f95d38afa1d

https://niebelungen-d.github.io/posts/ucore-lab-1/