全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com)
6.828的学习的资料从开始基本信息的讲解,逐步往unix的一个特殊版本xv6过度了。这样,先得熟悉一下这个OS的基本代码以及环境。
在课程中其实是提供了一个git可以直接获取代码的链接的,但是我尝试了一下失败。大概率这个链接还是只开放给在校的学生的缘故,也可能是课程结束后或者其他的什么原因无法继续访问了。
不过,现在比价好的是我们还拥有一个比较大的开源社区github,在上面很顺利找到了一个。链接: https://github.com/guilleiguaran/xv6
工程克隆完了之后,直接尝试编译失败了。这里需要说明一下的是编译环境的搭建,我这里采用的跟JOS的环境完全相同的虚拟机,因此整个环境是完全相同的。虚拟机除了这个课程需要的工具基本没有安装其他的工具,因此也就没有对比makefile中的工具具体细节。不过,看makefile中的信息,qemu的目录还是Mac上的。因此,也顺手改掉了。后面,我会在编译成功之后尝试在QEMU中启动。
我这里复现了一下出现的问题,由于其他文件都是已经编译过的,因此这里的log会跟拿过来的原始的编译的log略有差异。
既然引用的库文件中已经有了这个定义,姑且直接换成库函数里面的应用。如果调试有问题的时候再尝试这方面问题的解决。那么,处理的方式很简单了,上面的代码屏蔽。
之后的编译非常顺利。接下来尝试在QEMU中启动。
为保证启动的顺利,先修改了qemu的路径,这个路径需要跟我们系统上的工具路径一致。JOS启动的过程中,已经针对此有过基本的探索尝试。而我现在的调试环境是ssh远程连接到了虚拟机,因此后面的启动需要以nox的方式启动。Makefile中提供了qemu-nox的target。可以执行make qemu-nox即可,与JOS一致。
这是启动的效果。
看了一下,还提供了好几个工具。
由于还没有pwd等命令支持,我先尝试切换到根目录看看有什么信息,发现之前所在的就是根目录。不过,这已经看到了OS的影子了。