作为操作系统课的传统作业,在ubuntu环境下qemu+xv6编译运行的教程网络上已有很多,但大家踩坑则各有不同。本人作为一枚小白,在这个过程中也遇到了很多问题,通过多方查阅资料得以解决,现将一些经验记录如下。
步骤大纲:
-
环境:我用的是 ubuntu-16.04.6-desktop-amd64,但32位的ubuntu或者ubuntukylin应该也可以
-
下载xv6源代码文件
我用的是这个:
http://download.csdn.net/detail/yinglang19941010/9201421 -
将xv6源文件在ubuntu中解压。这里我使用了VMware Tools以便完成文件在主机和虚拟机中的传送: https://blog.csdn.net/yibinqi6303/article/details/78382996
使用右键->extract here即可解压。 -
编译xv6:将鼠标放在解压后的文件夹上,右键->open in terminal (我觉得这比命令行操作方便)
输入:
…/xv6/Xv6-master$make
- 安装qemu:
…xv6/qemu-2.4.0.1$sudo apt-get install qemu
- 运行qemu
~/qemu-2.4.0.1$qemu-system-i386
- 运行xv-6:需要转到xv6-master目录下
~/xv6-master$make qemu
详细笔记:
-
解压
通过VMware Tools设置的与主机的共享文件夹在computer->mnt->hgfs里。
解压时报错:
原因:在与主机共享的文件夹里解压了,把它复制到其他地方如/home就没有这个问题了。个人觉得右键->extract here比双击解压简单一些。 -
编译xv6:出错:“static_assert” redefined [-werror]
解决方案:通过查阅资料,发现原因是static_assert这个宏重复定义了,打开mkfs.c文件,将下面这行注释掉就可以了。
#define static_assert(a, b) do { switch (0) case 0: case (a): ; } while (0) jYWRhYnJhYQ==,size_16,color_FFFFFF,t_70)
最后结果:
5. 安装qemu 出现问题:package ‘qemu’ has no installation candidate
解决方案:
sudo apt-get update
sudo apt-get update 出现问题:failed to fetch… some index files failed to download.
解决方法:经过多番查找资料,提示可能的原因是dns解析的问题。需要修改nameserver,于是执行sudo vi /etc/resolv.conf进行设置,将nameserver 设置为8.8.8.8
注意:这里需要使用vi输入,参考:https://www.cnblogs.com/LiuQizhong/p/11796824.html
然后再次进行sudo apt-get update,再次apt-get install qemu,最后结果:
7.运行xv-6
cd …(返回上一级菜单)
cd xv6-master (进入xv6-master文件夹)
make qemu(编译)
报错:
这是源代码中没有配置好,在vx6-master中找到文件MakeFile
将#if the makefile can’t fine QEMU 这句话下面的代码改为如下图:
最后结果:
弹出了QEMU的操作系统窗口就成功啦!
reference:https://blog.csdn.net/troublemaker2014/article/details/49337161