在ubuntu环境下的Xv6+qemu编译运行

作为操作系统课的传统作业,在ubuntu环境下qemu+xv6编译运行的教程网络上已有很多,但大家踩坑则各有不同。本人作为一枚小白,在这个过程中也遇到了很多问题,通过多方查阅资料得以解决,现将一些经验记录如下。

步骤大纲:

  1. 环境:我用的是 ubuntu-16.04.6-desktop-amd64,但32位的ubuntu或者ubuntukylin应该也可以

  2. 下载xv6源代码文件
    我用的是这个:
    http://download.csdn.net/detail/yinglang19941010/9201421

  3. 将xv6源文件在ubuntu中解压。这里我使用了VMware Tools以便完成文件在主机和虚拟机中的传送: https://blog.csdn.net/yibinqi6303/article/details/78382996
    使用右键->extract here即可解压。

  4. 编译xv6:将鼠标放在解压后的文件夹上,右键->open in terminal (我觉得这比命令行操作方便)
    输入:

…/xv6/Xv6-master$make

  1. 安装qemu:

…xv6/qemu-2.4.0.1$sudo apt-get install qemu

  1. 运行qemu

~/qemu-2.4.0.1$qemu-system-i386

  1. 运行xv-6:需要转到xv6-master目录下

~/xv6-master$make qemu

详细笔记:

  1. 解压
    通过VMware Tools设置的与主机的共享文件夹在computer->mnt->hgfs里。
    解压时报错:
    YWRhYnJhYQ==,size_16,color_FFFFFF,t_70)
    原因:在与主机共享的文件夹里解压了,把它复制到其他地方如/home就没有这个问题了。个人觉得右键->extract here比双击解压简单一些。

  2. 编译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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值