首页 > 代码库 > 6.828学习笔记2 - QEMU和x86汇编语言
6.828学习笔记2 - QEMU和x86汇编语言
6.828的工具都装好了,在正式开始实验之前,要先熟悉每个工具的使用。对于我这种小白用户,需要熟悉的更多。
1、x86汇编语言
果然,课程首先让我熟悉汇编语言,并提供了两份参考文献。虽然我对汇编语言离熟悉还差十万八千里,不过好歹是用过的。我感到如果想要保持学习的兴趣,目前采取“如无必要,绝不深究”的态度非常重要。所以对汇编语言就先这样。我把参考文献下载到本地,然后跳到下一步。
2、模拟x86
课程给出了QEMU的作用、特性和辅助调试工具(GDB),不过这些细节我现在还统统不感兴趣。程序能跑起来才是我目前最关心的。
结果悲剧了。课程中使用的编译环境和我自己搭建的不一样,里面的操作基本用不了。既然easy way走不通,只好开启hard模式了。直接看QEMU的文档吧。
(1)QEMU文档的部分内容
a. QEMU是什么
QMEU是处理器的模拟器,它最大的特色就是快。也许这就是课程选择它作为目标机模拟器的原因吧。
QMEU有两种操作模式:全系统模拟和用户模式模拟。
b. QEMU可以模拟什么
从给出的列表来看,可模拟的设备相当多。因为我对计算机系统的硬件了解有限,这些设备还只是名字而已。
c. 启动系统镜像
重点来了,文档里对系统镜像的启动只有三行。
第一行:下载并解压linux镜像(linux.img);
第二行:执行qemu-system-i386 linux.img;
第三行:linux将启动,并给出提示符。
看到这里,我的内心是崩溃的。如此简单,又如此困难。因为我既没找到下载linux镜像的方法,也不知道如何执行命令。
自己不行,就百度吧。这样,我找到了fatsheep9146的博客。好神奇啊,他也自学了6.828。既然前人都已经探过路了,为什么一定要自己走呢?
(2)fatsheep9146的方案
读了他的博客文章,发现开发环境和我的不一样。他是用VMware运行ubuntu,将它作为编译环境。然后再ubuntu中下载了QEMU来使用。这和我想的不一样啊,原来可以在虚拟系统中运行虚拟系统!
如果是这样,整个开发环境就好多了。下面按课程文档中给出的linux环境下载和安装QMEU的步骤
a. 克隆仓库 git clone http://web.mit.edu/ccutler/www/qemu.git -b 6.828-2.3.0;
b. 安装SDL开发库 sudo apt-get install libsdl1.2-dev
c. 配置QEMU ./configure --disable-kvm --target-list="i386-softmmu x86_64-softmmu"
里面只报了两个问题:
c++ compliler:sudo apt-get install g++
pixman:sudo apt-get install libpixman-1-dev
d. 执行make编译,然后执行sudo make install安装。
(3)运行实验中的镜像
首先cd到工作文件夹,然后克隆源代码
git clone https://pdos.csail.mit.edu/6.828/2014/jos.git lab
上面的命令会得到一个lab文件夹,进入这个文件夹,执行make编译,就得到kernel.img了。
要把内核镜像运行在QEMU上,需要继续在lab文件夹内执行make qemu。
6.828学习笔记2 - QEMU和x86汇编语言