xv6 + Qemu 在Ubuntu下编译运行教程【转】
转自: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下编译运行教程【转】的更多相关文章
- Ubuntu下编译运行Kamailio
kamailio----配置没有成功,这个文档过几天删除,因为这个项目的文档非常少,而且qq群里的人也不活跃,现在正在研究Freeswitch,如果能够满足,就不研究这个了,这篇文档会删除. Kama ...
- Ubuntu下编译运行C#——mono tools
编译C#代码用mono-csc,直接编译成二进制可执行文件: mono-csc a.cs b.cs c.cs d.cs 如果一个工程里文件很多,可以使用通配符“*”: mono-csc *.cs
- ubuntu下编译caffe
Ubuntu下编译caffe 纯粹是个人编译的记录.不用CUDA(笔记本是amd卡,万恶的nvidia):不手动编译依赖包(apt-get是用来干啥的?用来直接装二进制包,以及自动解决依赖项的) ca ...
- ubuntu下编译VLC
ubuntu下编译VLC 标签(空格分隔): ubuntu vlc 视频 编译 [TOC] 1.下载VLC源码包并解压 VLC的源码包在VLC的官网有,可以直接下载.也可以使用git来clone一个. ...
- 在Ubuntu下编译Assimp库
在Ubuntu下编译Assimp库 怎样在Ubuntu下编译Assimp库?这是我曾经编译成功后做的笔记,供參考. 1.去以下的站点去下载Assimp库: http://assimp.sourcefo ...
- linux下编译运行驱动
linux下编译运行驱动 嵌入式linux下设备驱动的运行和linux x86 pc下运行设备驱动是类似的,由于手头没有嵌入式linux设备,先在vmware上的linux上学习驱动开发. 按照如下方 ...
- ubuntu下编译java程序
ubuntu下编译java程序 首先需要安装jdk,并配置好相应环境变量 下面以简单的HelloWorld为例 文件名为HelloWorld.java java代码: public class Hel ...
- linux下编译运行TIGL Viewer步骤
linux下编译运行TIGL Viewer步骤(仅为了正确编译安装的话直接跳到步骤3) 1. linux发行版选择:由于linux发行版众多,不同版本包含的库版本可能存在差别,因此需要选择正确的版本. ...
- ubuntu下编译VLC源码
http://blog.csdn.net/beitiandijun/article/details/9225591ubuntu下编译VLC源码 分类: 视频处理 2013-07-02 17:33 57 ...
随机推荐
- fiddler模拟返回
先把正常的请求响应报文保存为文件,操作方法为选中对应请求>右键> save >reponse>entire response 点击改请求,点击右侧autoresponder,点 ...
- 图论分支-Tarjan初步-割点和割边
所谓割点(顶)割边,我们引进一个概念 割点:删掉它之后(删掉所有跟它相连的边),图必然会分裂成两个或两个以上的子图. 割边(桥):删掉一条边后,图必然会分裂成两个或两个以上的子图,又称桥. 这样大家就 ...
- SQL语法基础之INSEART语句
SQL语法基础之INSEART语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看帮助信息 1>.查看INSERT方法的帮助信息 mysql> ? INSERT ...
- linux优化之系统参数调优篇
linux优化之系统参数调优篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.用户限制配置文件(首先需要编辑/etc/security/limits.conf文件) 大家可以 ...
- MarkdownPad使用
正文: 1.标题的几种写法: 第一种: 前面带#号,后面带文字,分别表示h1-h6,上图可以看出,只到h6,而且h1下面会有一条横线,注意,#号后面有空格 第二种: 这种方式好像只能 ...
- 【1】【leetcode-130】 被围绕的区域
(DFS思路对,写复杂了) 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 示例: X X X X X O ...
- 跨域请求传递Cookie问题
问题描述 前后端完全分离的项目,前端使用Vue + axios,后端使用SpringMVC,容器为Tomcat. 使用CORS协议解决跨域访问数据限制的问题,但是发现客户端的Ajax请求不会自动带上服 ...
- js强制将页面放到最大
<!DOCTYPE html> <html> <head> <title></title> <script language=&quo ...
- 网页浏览 infinite scroll效果知识
infinite scroll 类似一些网站, 例如京东搜索商品, 浏览到最后一页,自动加载新的商品. 一则可以加快首页响应速度, 二则减轻带宽和服务器荷载. 这么多商品信息一次性返回给客户端也是不可 ...
- 十、uboot 代码流程分析---run_main_loop
调用 board_init_r,传入全局 GD 和 SDRAM 中的目的地址 gd->rellocaddr void board_init_r(gd_t *new_gd, ulong dest_ ...