安装bochs

因为要运行的是xv6,所以不能直接使用 apt-get 直接获取软件。apt-get获取到的软件不支持SMP (Symmetric Multi-Processing)。因此,需要下载源码自己编译(源代码下载地址在下载页面的底部Download SVN Snapshot )

需要预先安装的软件(参考 )

	sudo apt-get install g++
sudo apt-get install libc6-dev
sudo apt-get install build-essential
sudo apt-get install xorg-dev
sudo apt-get install libgtk2.0-dev

配置编绎选项(参考 )

	./configure --enable-smp  --enable-debugger --enable-disasm --enable-vmx=2 --enable-configurable-msrs --enable-x86-64 --enable-a20-pin --enable-acpi --enable-pci

这里x86-64似乎是必须的,而不是在64位机器上才需要。 配置选项说明

配置完成后就可以进行编译安装了。

	make
sudo make install

遇到的问题:

  1. 	/usr/bin/ld: gui/libgui.a(gtk_enh_dbg_osdep.o): undefined reference to symbol 'pthread_create@@GLIBC_2.1'
    

    解决办法:参考这个博客中的第二个方法 在Makefile.in中187行

    	$(MCH_LINK_FLAGS) \
    $(SIMX86_LINK_FLAGS) \
    $(READLINE_LIB) \
    $(EXTRA_LINK_OPTS) \
    $(LIBS)

    在最后$(LIBS)后面加上 \ -lpthread如下:

    	$(MCH_LINK_FLAGS) \
    $(SIMX86_LINK_FLAGS) \
    $(READLINE_LIB) \
    $(EXTRA_LINK_OPTS) \
    $(LIBS)\
    -lpthread

    即可编译通过。

  2. 	致命错误: gtk/gtk.h:没有那个文件或目录
    

    安装过预编译软件后需要重新运行configure命令。

xv6编绎

make 然后运行 make bochs 或 make qemu即可(看是安装的什么模拟器) 如果出现任何奇怪的问题,建议重新下载最新版源码(git clone git://pdos.csail.mit.edu/xv6/xv6.git )

遇到的问题

  1. 	mkfs: mkfs.c malloc: Assertion used < 512 failed.
    
    	redefinition of struct stat
    

    xv6下载最新源码

  2. 	>>PANIC<< numerical parameter 'n_processors' was set to 2, which is out of range 1 to 1
    

    bochs下载源码自己编绎,不要用apt-get。

  3. 	vga_update_interval' is deprecated - use 'vga' option instead.
    

    由于下载的bochs更新,所以导致一些旧选项不兼容。可以修改成相应的选项。在文件 dot-bochsrc 497行,把

    	vga_update_interval: 300000
    

    改为

    	vga:update_freq=10

配了半天,以为已经成功了,但是在运行起来以后,发现,还是没有办法引导成功。之前一直想把boch配起来,是以为boch才方便调试。然后,再去试一下qemu,发现,用gdb调试,也不是很麻烦。果断放弃了折腾。还是把这个过程,记录下来,以供需要的人参考。

xv6实验环境搭建的更多相关文章

  1. 操作系统内核Hack:(一)实验环境搭建

    操作系统内核Hack:(一)实验环境搭建 三四年前,心血来潮,入手<Orange's:一个操作系统的实现>学习操作系统内核,还配套买了王爽的<汇编语言(第二版)>和<80 ...

  2. Nginx配置多个基于域名的虚拟主机+实验环境搭建+测试

    标签:Linux 域名 Nginx 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xpleaf.blog.51cto.com/9 ...

  3. mininet(一)实验环境搭建

    mininet(一)实验环境搭建 mininet(二)简单的路由实验 mininet(三)简单的NAT实验 最近学习(https://github.com/mininet/openflow-tutor ...

  4. 【MySQL】MySQL无基础学习和入门之一:数据库基础概述和实验环境搭建

    数据库基础概述  大部分互联网公司都选择MySQL作为业务数据存储数据库,除了MySQL目前还有很多公司使用Oracle(甲骨文).SQLserver(微软).MongoDB等. 从使用成本来区分可以 ...

  5. TensorFlow实验环境搭建

    初衷: 由于系统.平台的原因,网上有各种版本的tensorflow安装教程,基于linux的.mac的.windows的,各有不同,tensorflow的官网也给出了具体的安装命令.但实际上,即使te ...

  6. Ubuntu下常用强化学习实验环境搭建(MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2)

    http://lib.csdn.net/article/aimachinelearning/68113 原文地址:http://blog.csdn.net/jinzhuojun/article/det ...

  7. Linux下的ssh实验环境搭建与管理

    实验环境[size=10.5000pt]1:网桥模式[size=10.5000pt]2:安装好vmtoos[size=10.5000pt]3:安装好yum[size=10.5000pt]4:安装好ss ...

  8. 实验一:JAVA实验环境搭建 ,JDK下载与安装及 Eclipse下载与安装

    一.搭建JAVA实验环境 1.JDK的下载 (1)打开 IE 浏览器,输入网址“http://www.oracle.com/index.html”,浏览 Oracle 官方主页.鼠标双击Downloa ...

  9. xv6 操作系统的环境搭建

    xv6 是 MIT 设计的一个教学型操纵系统.xv6 可在 Intel X86 框架上运行,为了方便,建议将 xv6 运行在 QEMU 虚拟机器上,本人的实验环境是 ubuntu 18.04 . 1. ...

随机推荐

  1. 在ios开发中nil和NUll和Nilde区别————和如何判断连个对象的关系和UISlider不能拖动的问题

    nil表示一个对象指针为空,针对对象 >示例代码: NSString *someString = nil; NSURL *someURL = nil; id someObject = nil; ...

  2. EasyGUI的安装

    1.下载EasyGUI 在官方网站上下载http://easygui.sourceforge.net/将安装包下载下来,放到桌面上并解压. 2.安装EasyGUI ①在开始菜单的搜索中输入cmd,打开 ...

  3. uva 12587 二分枚举

    思路:维护一个森林,二分枚举最小的最大值. #include<set> #include<map> #include<cmath> #include<queu ...

  4. hdu 4669 模拟

    思路: 主要就是模拟这些操作,用链表果断超时.改用堆栈模拟就过了 #include<map> #include<set> #include<stack> #incl ...

  5. 让UIScrollView、UITableView的滚动条一直显示

    先用xcode5.1.1或更低版本创建一个Category,如图: 然后拷贝以下代码到刚创建的UIImageView+ForScrollView.m文件中: - (void) setAlpha:(fl ...

  6. oracle查看允许的最大连接数和当前连接数等信息

    目前总结的语句,在查看数据的连接情况很有用 ,写完程序一边测试代码一边查看数据库连接的释放情况有助于分析优化出一个健壮的系统程序来. 1.Sql代码1.select count(*) from v$p ...

  7. 用c#写一个json的万能解析器

    CommonJsonModel .cs /// <summary> /// 万能JSON解析器 /// </summary> public class CommonJsonMo ...

  8. SQL Server 2008复制发布订阅(数据同步)

    数据库同步问题 1.有一台主数据库服务器A和另外一台数据库服务器B,客户端首先访问数据库B,当B数据库服务器挂掉时就访问A,当对数据库B进行DML操作时,同时对A进行更新,如果A与B之间通讯失败,则将 ...

  9. jQuery Ajax应用

    jQuery Ajax应用 本章主要了解jQuery的Ajax与传统的Ajax的区别,掌握JQuery的Ajax常用的方法与Ajax相关的函数. 详细内容,请点击jQuery Ajax应用查看:

  10. WIN7实用的运行命令

    运行命令主要是DOS操作系统的运行方式.为方便用户的操作,微软公司将一些常用的命令,如DIR,CD等命令全部集成在系统里面:存放这些内部命令的文件是“Command”(文件后缀.com).它与IO.s ...