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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM