您的位置:首页 > 其它

XV6操作系统的安装与使用

2015-06-27 22:07 309 查看
麻省理工大学的网站上http://pdos.csail.mit.edu/6.828/2011/xv6.html,已经对XV6的来龙去脉及如何下载做了较详细的介绍。这里我们以32位的Ubuntu12.04为例,简单介绍一下如何通过x86模拟器Bochs来运行XV6操作系统。

XV6操作系统是可以运行在多核结构的X86平台上,我们需要支持SMP功能的Bochs模拟器,可从http://sourceforge.net/projects/bochs/files/bochs/2.6.1/下载bochs-2.6.1.tar.gz,解压后的路径不妨记为/home/cse/src/bochs-2.6.1。Bochs的图形界面需要用到GTK函数库,可通过以下命令安装该函数库。
cse@ubuntu:~$ sudo apt-get install libgtk2.0-dev
之后进入/home/cse/src/bochs-2.6.1目录,依次执行以下命令编译并安装Bochs。

./configure --enable-debugger --enable-disasm --enable-smp
make
sudo make install

不妨假设我们把从MIT网站下载来的XV6源代码存放在/home/cse/src/xv6。我们需要对其中的dot-bochsrc文件做一些修改,该文件相当于是模拟器Bochs的配置文件。由于XV6的源代码memlayout.h中把宏PHYSTOP定义为0xE000000,即224M字节的物理内存,而从MIT网站下载来的dot-bochsrc文件只设置了32M的物理内存,因此可把dot-bochsrc第121行的“megs:
32”改为“megs: 256”,比224M更大即可。另一个需要修改的地方是dot-bochsrc第497行的“vga_update_interval: 300000”改为“#vga_update_interval: 300000”,即注释掉配置选项vga_update_interval,Bochs2.6.1模拟器不支持该选项。还有一个需要修改的选项为第273行的“cylinders=1024”,改为“cylinders=1000”,其原因是文件fs.img的大小为512,000 字节,共占用1000个扇区,每扇区512字节,如下所示。

ata0-slave: type=disk, mode=flat, path="fs.img",cylinders=1000, heads=1, spt=1

之后执行以下命令,我们就可以看到图1.1.1这样的界面。

cse@ubuntu:~/src/xv6 $ make bochs



图1.1.1 make bochs
在图1.1.1左下方的<bochs:1>后输入一个字母c,表示continue后,我们就可以得如图1.2的XV6运行界面。从图1.1.2中我们可以看到有cpu0和cpu1这两个CPU在运行,



图1.1.2 XV6在bochs上的运行界面
同时运行的CPU个数,是由配置文件dot-bochsrc由第110行的配置选项count所指定,如下所示。

cpu: count=2, ips=10000000

运行ls命令,我们可得到图1.1.3这样的运行结果,从中我们可以看到我们在Linux系统上也可用的cat、echo、grep、kill、ln、ls、mkdir、rm和wc等命令。刹那间,我们仿佛看到了生命进化的源头,而Unix系统正是Linux系统的源头,XV6是Unix V6在X86多核平台上的重生。



图1.1.3 ls命令的运行结果
在图1.1.3中形如“cat 2 3 11451”的输出告诉我们,根目录下的文件cat在硬盘上占用了11451字节的空间,其i节点号为3,文件类型为2,即普通的文件(不是目录,也不是设备文件)。我们在分析XV6的文件系统时,会进一步讨论什么是i节点。这里我们只要知道,文件中存放了用户要保存的内容,但在文件系统中,我们还需要记录这些文件内容存放在硬盘的哪些扇区,即还要保存文件的说明信息。简单来说,文件由“文件内容本身”和“文件的说明信息”这两部分构成,在XV6操作系统中,会将“文件的说明信息”存放到索引结点(即index
node,通常简称为i节点)中,一个文件对应一个inode,对不同的inode进行编号,因此不同的文件就对应不同的i节点号。
而图1.1.3中的“. 1 1 512”告诉我们,当前所处的目录也是个文件,其文件类型为1,在XV6中,这代表着一个目录(即Windows中的文件夹),其i节点号为1,共占用512字节硬盘空间。而“console 3 18 0”则告诉我们文件console所占的硬盘空间为0,这是一个类型为3的文件,即设备文件,其i结点号为18。文件console即所谓的“控制台”,对应的物理实体是键盘和显示器,对该console文件的读操作,相当于是读取从键盘输入的字符,对console文件的写操作,则是在屏幕上显示字符。在PC还未普及的年代,console文件对应的物理设备,是位于主机房的与主机直接相连的键盘与显示器,在那个年代,能进入主机房这样的核心位置的人员,当然是管理员级别的人物了。在无法人手一机的年代,其他用户就需要通过各自的终端设备,通过电话线等介质连接到主机房,分时共享主机房里的计算机,较早期的终端设备是由Teletype公司生产的电传打字机,缩写为tty。时至今日,我们仍然可在Linux上看到名为/dev/tty的设备文件,虽然其对应的物理实体早已物是人非,但这名字tty却延用至今。XV6为了简单,并未支持tty终端设备。
我们还可在qemu虚拟机上运行XV6,安装qemu及运行XV6的主要步骤如下所示,如果一切顺利,我们可得到如图1.1.4的运行结果。

(1)安装qemu
sudo apt-get install qemu
sudo ln -s /usr/bin/qemu-system-i386/usr/bin/qemu
(2)进入/home/cse/src/xv6目录,在qemu中运行xv6
make qemu



图1.1.1.4 Qemu上运行XV6
--------------------------------------------------------------------------------------
最近一段时间一直比较忙,XV6的分析和讨论只好等有空时再进行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: