转自:https://blog.csdn.net/yinglang19941010/article/details/49310111

如果想要离线看教程,可以下载该 文档

一、使用工具说明

1.       xv6 源代码文件(以下三选一)

1)http://download.csdn.net/detail/yinglang19941010/9201421 (我使用的是这个,怕出错的同学可以下这个)

2)https://github.com/yinglang/Xv6  或

3)http://zoo.cs.yale.edu/classes/cs422/2011/lec/l2-hw

2.       Qemu 源代码下载(可以选择不下,要下的话二选一)

1)http://download.csdn.net/detail/yinglang19941010/9201427(我是用的是这个,怕出错的同学可以下这个)

2)http://wiki.qemu.org/Download 我选择的是qemu-2.4.0.1.tar.gz

3.       VMware10.0+ linux 编译环境:(也可以不选择装虚拟机)

我是用的是ubuntukylin-14.04-desktop-i386,应该其他版本的也可以。

但建议选32bit的Ubuntu。

4.    联网(这个是必须,建议在编译前测试一下能不能联网)。

二、 xv6 编译

1.    解压xv6-master 和 qemu-2.4.0.1.tar.bz2 ,可以使用命令解压,也可用Ubuntukylin提供的可视化解压软件(双击压缩包就能打开)

选择extract

2.    hui@ubuntu:~/Desktop/xv6$cd Xv6-master

3.    hui@ubuntu:~/Desktop/xv6/Xv6-master$make

出现如下结果表示编译成功

三、编译安装qemu

安装qemu有两种方法:(二选一即可)

方法一 : 使用apt-get 安装,不需要下载qemu源代码,较为简单,几乎不出错。

方法二 : 使用源代码进行编译,要先下载源代码,难度较大,出错率高。

下面对两种方法的操作进行详细说明:

方法一 :(不手动表编译,直接利用apt安装运行)

1.     hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$sudo apt-get install qemu

如果出现以下错误

说明可用于linux下载的apt的包列表很久没有更新了,使用

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$ sudo apt-get update

如果出现了failed to fetch的错误提示,说明apt-get的网站访问不到了。

32bit Ubuntu可以使用 该32bitsource.list 替换掉/etc/apt/sources.list

64bit Ubuntu可以使用 该64bitsource.list 替换掉/etc/apt/sources.list

(注意要用root权限

sudo mv ./sources.list /etc/apt/sources.list

下面这几步可以对文件 解锁(lock),最好用一下

cd /etc/apt/sources.list

sudo mv ./sources.list ./source.list

sudo mv ./source.list ./sources.list

)。该文件的网站在2015内应是可以访问的

如果提示如下,则更新成功

这是再输入

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$sudo apt-get install qemu

2.     hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$qemu-system-i386

如果弹出qemu的虚拟机,则证明虚拟机qemu安装成功(由于没有装xv6所以QEMU提示Boot failed)

方法二:(手动编译源码运行, 如果已经使用了方法一,这步可跳过)

1.    解压

2.    cd ../qemu-2.4.0.1

3.    ./configure --disable-kvm --target-list="i386-softmmux86_64-softmmu"

报错如下:

解决:

1)   第一个是警告,提示没有c++编译器,c++部分的代码将无法编译

解决是安装g++编译器,注意这个虽然是警告,但是如果不装的话,后面会报错,敲入命令

sudo apt-get install g++

2)   第二个是错误,没有zlib包

解决是安装zlib

先查找zlib

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$ sudo apt-cache search zlib

红圈中圈出的是我认为可能的package(要问我为什么,首先名字很像,其次他们是library,而编译报错很多时候都是缺少lib)

最后发现是zlib1g-dev (dev表示development开发包,很多时候编译报错都是要装这种package),还有就是猜的:) )

在命令行中敲入以下命令安装:

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$sudo apt-get install zlib1g-dev

4.       在命令行中再次敲入

./configure --disable-kvm--target-list="i386-softmmu x86_64-softmmu"

如果报错

同样先搜索

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$sudo apt-cache search glib

同样有依据的猜到了是libglib2.0-dev,敲入命令安装

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$sudo apt-get install libglib2.0-dev

5.       最后再敲一次

./configure --disable-kvm --target-list="i386-softmmux86_64-softmmu"

以上提示表示该命令成功(因为我还没有装g++,所以c++ compiler是空,这样后面是会报错的)

6.       配置完成后,敲入

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$  make&& make install

如果发现报错

没有autoreconf,安装autoreconf

先查找

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$ sudo apt-cache search autoreconf

这两个都装上,敲入命令安装

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$ sudo apt-get install dh-autoreconf

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$ sudo apt-get install autoconf2.13

再次输入

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$  make&& make install

如果还报错

这很可能是没有装过g++ 而进行的编译,敲入

sudo apt-get install g++

再重新编译,删除qemu-2.4.0.1,重新解压,重启命令行,输入

./configure --disable-kvm --target-list="i386-softmmux86_64-softmmu"

make&& make install

一般到这一步就行了

7.       hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$qemu-system-i386

如果弹出qemu的虚拟机,则证明虚拟机qemu安装成功(由于没有装xv6所以QEMU提示Boot failed

四、运行xv6

切换到xv6源代码的目录

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$cd ../Xv6-master

hui@ubuntu:~/Desktop/xv6/Xv6-master$make qemu

发现报错如下:

原因:这是因为在make(编译)的时候变量QEMu没有指定,我们来手动指定QEMU的位置。

解决:首先找到目录Xv6-master(源代码)下的文件MakeFile (这个文件可以看成是linux下对工程源码进行编译的配置文件,

类似于windows下Visual Studio的.sln之类的文件)

修改红圈中的内容为

再次

hui@ubuntu:~/Desktop/xv6/Xv6-master$make qemu

运行成功

输入ls 可以参见里面的所有命令文件,输入命令测试看看吧

五、总结

其实如果环境lib都装了的话,也就以下几个命令

编译xv6

hui@ubuntu:~/Desktop/xv6$ cd Xv6-master

hui@ubuntu:~/Desktop/xv6/Xv6-master$ make

编译安装qemu

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$ sudo apt-get install qemu

或者

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$ cd ../qemu-2.4.0.1

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$./configure --disable-kvm--target-list="i386-softmmu x86_64-softmmu"

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$  make&& make install

运行xv6

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$ cd ../Xv6-master

hui@ubuntu:~/Desktop/xv6/Xv6-master$ make qemu

六、参考资料:

http://zoo.cs.yale.edu/classes/cs422/2011/lec/l2-hw

https://pdos.csail.mit.edu/6.828/2012/xv6.html
---------------------
作者:吃熊的鱼
来源:CSDN
原文:https://blog.csdn.net/yinglang19941010/article/details/49310111
版权声明:本文为博主原创文章,转载请附上博文链接!

xv6 + Qemu 在Ubuntu下编译运行教程【转】的更多相关文章

  1. Ubuntu下编译运行Kamailio

    kamailio----配置没有成功,这个文档过几天删除,因为这个项目的文档非常少,而且qq群里的人也不活跃,现在正在研究Freeswitch,如果能够满足,就不研究这个了,这篇文档会删除. Kama ...

  2. Ubuntu下编译运行C#——mono tools

    编译C#代码用mono-csc,直接编译成二进制可执行文件: mono-csc a.cs b.cs c.cs d.cs 如果一个工程里文件很多,可以使用通配符“*”: mono-csc *.cs

  3. ubuntu下编译caffe

    Ubuntu下编译caffe 纯粹是个人编译的记录.不用CUDA(笔记本是amd卡,万恶的nvidia):不手动编译依赖包(apt-get是用来干啥的?用来直接装二进制包,以及自动解决依赖项的) ca ...

  4. ubuntu下编译VLC

    ubuntu下编译VLC 标签(空格分隔): ubuntu vlc 视频 编译 [TOC] 1.下载VLC源码包并解压 VLC的源码包在VLC的官网有,可以直接下载.也可以使用git来clone一个. ...

  5. 在Ubuntu下编译Assimp库

    在Ubuntu下编译Assimp库 怎样在Ubuntu下编译Assimp库?这是我曾经编译成功后做的笔记,供參考. 1.去以下的站点去下载Assimp库: http://assimp.sourcefo ...

  6. linux下编译运行驱动

    linux下编译运行驱动 嵌入式linux下设备驱动的运行和linux x86 pc下运行设备驱动是类似的,由于手头没有嵌入式linux设备,先在vmware上的linux上学习驱动开发. 按照如下方 ...

  7. ubuntu下编译java程序

    ubuntu下编译java程序 首先需要安装jdk,并配置好相应环境变量 下面以简单的HelloWorld为例 文件名为HelloWorld.java java代码: public class Hel ...

  8. linux下编译运行TIGL Viewer步骤

    linux下编译运行TIGL Viewer步骤(仅为了正确编译安装的话直接跳到步骤3) 1. linux发行版选择:由于linux发行版众多,不同版本包含的库版本可能存在差别,因此需要选择正确的版本. ...

  9. ubuntu下编译VLC源码

    http://blog.csdn.net/beitiandijun/article/details/9225591ubuntu下编译VLC源码 分类: 视频处理 2013-07-02 17:33 57 ...

随机推荐

  1. MySQL中的主键,外键有什么作用详解

    MySQL中的主键,外键有什么作用详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 学关系型数据库的同学,尤其在学习主键和外键时会产生一定的困惑.那么今天我们就把这个困惑连根拔起 ...

  2. jvm_tool jconsole/ jprofiler/ JProbe/ VirtualVm/ TPV/ YourKit/ ITCAM/ MAT/ MDD4J

    S 学习jvm,关于MAT an internal error occurred during:"Parsing heap dump" from问题 https://www.cnb ...

  3. linux中文件多行合并为一行的例子

    现网中经常遇到匹配到某一关键字下的所有行合并到同一行,再次匹配到相关关键字再和下面的合并,示例如下: # line1ab# line2cde# line3f想要变成: # line1 a b# lin ...

  4. python while 格式化 运算符 编码

    #######################总结############# 1. 循环 while 条件: 循环体(break, continue) 循环的执行过程: 执行到while的时候. 首先 ...

  5. Linux记录-在线扩容8e

    1.fdisk -l 2.增加分区 3.3:键入 p,主分区,并键入3(编号): 默认起始扇区和结束扇区即可(键入两次Enter) 键入t,修改分区类型为8e: 键入w,写分区表,然后重启: 卷扩容, ...

  6. linux 下安装ftp 并远程连接

    1.确认是否已安装 ftp 1 pgrep vsftpd   #查看ftp 服务进程 无结果如下图所示 2.执行安装 1 yum install vsftpd     #安装ftp 服务 3.执行过程 ...

  7. vue input添加回车触发

    普通vue input @keyup.enter="onSubmit" element el-input @keyup.enter.native="onSubmit&qu ...

  8. 建立爬虫代理IP池

    单线程构建爬虫代理IP池 #!/usr/bin/python3.5 # -*- coding:utf-8 -*- import time import tempfile from lxml impor ...

  9. Hibernate的注解和检索

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自 ...

  10. Vertica系列: 自动生成Identity 字段值的方法

    参考 https://thisdataguy.com/2015/01/05/vertica-some-uses-of-sequences/ 在 vertica 中有三种定义 identity 字段的方 ...