安裝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調試,也不是很麻煩。果斷放棄了折騰。還是把這個過程,記錄下來,以供需要的人參考。
