简而言之, 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/