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
遇到的问题:
-
/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
即可编译通过。 -
致命错误: gtk/gtk.h:没有那个文件或目录
安装过预编译软件后需要重新运行configure命令。
xv6编绎
make 然后运行 make bochs 或 make qemu即可(看是安装的什么模拟器) 如果出现任何奇怪的问题,建议重新下载最新版源码(git clone git://pdos.csail.mit.edu/xv6/xv6.git )
遇到的问题
-
mkfs: mkfs.c malloc: Assertion used < 512 failed.
redefinition of struct stat
xv6下载最新源码 -
>>PANIC<< numerical parameter 'n_processors' was set to 2, which is out of range 1 to 1
bochs下载源码自己编绎,不要用apt-get。 -
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调试,也不是很麻烦。果断放弃了折腾。还是把这个过程,记录下来,以供需要的人参考。