想写一个OS很久了,今天开始正式动工了!!
大家都知道操作系统是计算机科学中十分重要的一门基础学科。但是以前在学习这门课时,仅仅只是把目光停留在课本上一些关于操作系统概念上的叙述,并不能对操作系统有着深层次的理解。毕竟实践出真理。 MIT的操作系统课程6.828是一门被广泛好评的入门课程。它最重要的特点就是它实践第一的教学原则。在这门课程中会涉及到非常丰富的实验,也会有非常多的动手机会。而且授课者更是亲自构建了一个简化的基于Unix内核的操作系统xv6。所有的实验都是在这个操作系统上完成。虽然它功能很简单,但是它能够帮助我们真正的了解操作系统在做什么。 这一系列博文就是用来记录我学习JOS的过程的!
废话不多说。
在开始做lab之前的第一件事当然是搭建开发环境了。
本文就来简单说明一下开发环境的搭建过程。
我是采用Parallels Desktop来运行linux ubuntu 12.04。开发环境也都是在这个上面搭建的。
首先我们需要安装git和QEMU,用以下命令就可以安装QEMU
$ sudo apt-get install git
$ git clone git://git.qemu-project.org/qemu.git
Cloning into 'qemu'...
remote: Counting objects: 131834, done.
remote: Compressing objects: 100% (29320/29320), done.
remote: Total 131834 (delta 104345), reused 129302 (delta 102090)
Receiving objects: 100% (131834/131834), 45.42 MiB | 300 KiB/s, done.
Resolving deltas: 100% (104345/104345), done.
Checking out files: 100% (2849/2849), done.
$ cd qemu/
$ ./configure
$ make
$ sudo make install
这中间会出现很多问题,下面大致说一下
在运行./configure时,会出现缺少一些程序的问题,显示如下
Error: zlib check failed
Make sure to have the zlib libs and headers installed.
其实需要安装的远不止上面的显示信息。
下面大致罗列一些需要安装的软件和相应解决的命令
c++ compiler: sudo apt-get install g++
libtool : sudo apt-get install libtool
glib: sudo apt-get install libglib2.0-dev
pixman: sudo apt-get install libpixman-1-dev
zlib: sudo apt-get intall zlib1g-dev
dtc:
git submodule update --init dtc
cd dtc
git fetch origin #
git rebase origin/master
make
这中间有一个先后顺序,记得不要搞混
到这里运行./configure就可以成功显示一些配置信息,接下来,make一下就可以了。虽然这个过程有点点长、
编译完成后运行sudo make install ,此时qemu就已经安装上了。
接下来就是将xv6在qemu上运行起来了。
git clone https://github.com/fatsheepzzq/6.828mit.git
cd lab
make
这样xv6就开始编译了。我们可以看一下它生成的最后一个信息 mk obj/kern/kernel.img,这个kernel.img就是内核映像文件,另外obj目录在make之前是没有的,它是make指令生成的,它里面将会有许多的文件我们之后会重点观察。
最后运行make qemu,此时qemu就开始自动加载我们的操作系统内核映像文件了。
本章完结