ucore是一个清华大学出品的教学用操作系统。其以MIT的xv6&jos,harvard的os161,和linux为蓝本。
它循序渐进,适合操作系统的初学者,当然需要对c语言,计算机原理有一定的了解。
其源代码可以在https://github.com/chyyuu/ucore_lab上找到。clone下来是分门别类好的代码,答案,以及需要参考的文档。
在开始做题之前,还需要一些准备工作。
由于整个lab依托于gcc和qemu,所以只能在linux环境下进行。而且在开始之前,还需要先安装gcc和qemu。
我个人使用的是ubuntu 14.04,apt安装的方法:
sudo apt-get install build-essential
sudo apt-get install qemu-system
某些同学安装的linux虚拟机的版本比较低,源当中的qemu版本也较低,调试的时候可能出现不能够设置断点的BUG。
亲测2.0版本以上就没问题,可以用qemu-system-i386 --version来查看自己的qemu的版本。如果版本有问题的话……我也不知道该怎么更新源来获得正确的版本。直接去下载源代码make吧,具体最好找找教程,需要不少依赖包,虽然可以直接通过错误提示逐个安装,毕竟不如一次性搞定方便。
对于ucore,在下载来的代码的/labcode/lab1目录下,可以找到一个Makefile文件。我们的操作都围绕这个文件来进行。
该Makefile当中提供了如下命令:
make 最朴素的编译,生成ucore.img,即操作系统镜像。
make V= 编译并输出编译过程的详细信息
make qemu 编译并用qemu启动这个镜像
make debug 编译并用qemu启动,再使用gdb连接到qemu上,打开tui界面进行调试。
了解了这些基础命令之后,就能够开始真正做题了。
练习 1:理解通过 make 生成执行文件的过程。(要求在报告中写出对下述问题的回答)
在此练习中,大家需要通过阅读代码来了解:
1. 操作系统镜像文件 ucore.img 是如何一步一步生成的?(需要比较详细地解释 Makefile 中
每一条相关命令和命令参数的含义,以及说明命令导致的结果)
2. 一个被系统认为是符合规范的硬盘主引导扇区的特征是什么?