xv6实验环境搭建

安装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调试,也不是很麻烦。果断放弃了折腾。还是把这个过程,记录下来,以供需要的人参考。

原文地址:https://www.cnblogs.com/Sisyphean/p/xv6_bochs.html