环境搭建

xv6环境的搭建可参考lab tool,但是在搭建的过程中遇到了许多的问题,故记录下来。

环境介绍

这门课采用软件模拟的方式来调试整个操作系统,也就是说让xv6操作系统运行在一个用软件仿真出来的x86计算机上。这个仿真软件就是QEMU,这个仿真器有一个非常好的优点,就是它能和调试器GDB共同配合使用,这样的话我们就可以一条指令一条指令的调试运行在QEMU里面的xv6操作系统了。

在按照lab tool配置环境的过程中,安装qemu时出现了种种问题,下面列举出安装过程。

QEMU Emulator 安装

  • git clone git://git.qemu-project.org/qemu.git
  • ./configure --disable-kvm
    • ERROR: zlib check failed
      Make sure to have the zlib libs and headers installed.
      sudo apt-get install zlib1g-dev
    • ERROR: glib-2.22 gthread-2.0 is required to compile QEMU
      sudo apt-get install libglib2.0-dev zlib1g-dev
    • ERROR: pixman >= 0.21.8 not present. Your options:
      (1) Preferred: Install the pixman devel package (any recent
          distro should have packages as Xorg needs pixman too).
      (2) Fetch the pixman submodule, using:
          git submodule update --init pixman
      
      git submodule update --init pixman
    • ERROR: DTC (libfdt) version >= 1.4.0 not present. Your options:
      (1) Preferred: Install the DTC (libfdt) devel package
      (2) Fetch the DTC submodule, using:
          git submodule update --init dtc
      
      git submodule update --init dtc
  • make && make install
    • (cd /home/ljm/qemu/pixman; autoreconf -v –install)
      /bin/sh: 1: autoreconf: not found
      make: *** [/home/ljm/qemu/pixman/configure] Error 127
      sudo apt-get install dh-autoreconf

利用QEMU来运行xv6操作系统

安装好QEMU之后,我们就可以用它来运行我们的操作系统啦~

  当然第一步就是把操作系统的源代码拷贝下来

  首先打开一个terminal,然后任意cd到一个目录下,比如我都是在~/Documents这个目录下工作的。

  然后输入 git clone https://github.com/fatsheepzzq/6.828mit.git 即可

  这样你就会在你的当前目录下面看到一个文件夹6.828mit,这个文件夹下面有一个子文件夹lab,这里面存放的就是所有操作系统源码

  然后我们就要先编译这个操作系统源码,来生成能够运行在Qemu上的操作系统映像文件,我们只需要在lab目录下输入命令

  make

  这样计算机会为我们自动编译整个xv6操作系统,如果你的屏幕上显示下列信息,代表你已经编译成功

  我们可以看一下它生成的最后一个信息 mk obj/kern/kernel.img,这个kernel.img就是内核映像文件,另外obj目录在make之前是没有的,它是make指令生成的,它里面将会有许多的文件我们之后会重点观察。

  编译完内核源码,我们就可以把它运行在QEMU上!

  首先还要是在lab目录下面,输入 make qemu,此时qemu就开始自动加载我们的操作系统内核映像文件了,如果你的屏幕上打印如下信息,就代表你终于运行成功了!

  

  从6828 decimal.. 那句话开始之后的信息都是由xv6操作系统内核显示出来的~

  到目前为止,你已经完成了在ubuntu上仿真x86计算机,并且运行xv6操作系统内核了!!


参考资料:

  1. cnblogs fatsheep9146