bochs(2.6.11)配置安裝


下載:https://bochs.sourceforge.io/

建議下載2.6.11,下文一開始安裝的2.7,但運行時有無法解決的錯誤。但是大致安裝過程一致。

linux

提前安裝依賴

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

接下來進行配置,以防萬一全部配置上

經評論區提醒,刪去--enable-cpp可以防止后續由於文件后綴出現的諸多問題。

./configure --with-x11 --with-wx --enable-debugger --enable-disasm --enable-all-optimizations --enable-readline --enable-long-phy-address --enable-ltdl-install --enable-idle-hack --enable-plugins --enable-a20-pin --enable-x86-64 --enable-smp --enable-cpu-level=6 --enable-large-ramfile --enable-repeat-speedups --enable-fast-function-calls  --enable-handlers-chaining  --enable-trace-linking --enable-configurable-msrs --enable-show-ips  --enable-debugger-gui --enable-iodebug --enable-logging --enable-assert-checks --enable-fpu --enable-vmx=2 --enable-svm --enable-3dnow --enable-alignment-check  --enable-monitor-mwait --enable-avx  --enable-evex --enable-x86-debugger --enable-pci --enable-usb --enable-voodoo

進入root用戶,之后的操作都在root下進行。

su root

開始編譯

make

開始處理錯誤

  • 錯誤1 No rule to make target 'parser.cc' , needed by 'parser.o' Stop.

進入bx_debug文件夾下:

可以看到是后綴名的緣故,因此

cp parser.cpp parser.cc
  • 錯誤2 config.h osdep.h cpu/decoder/decoder.h

然而這個文件確實存在於主目錄下,因此

"config.h"--->"../config.h"

類似的

都需要更改一下頭文件目錄即可。

  • 錯誤3 error: 'XRRQueryExtension' was not declared in this scope; did you mean 'XQueryExtension'?

    更改gui/x.cpp,在首行添加#include <X11/extensions/Xrandr.h>

  • 錯誤4 No rule to make target 'misc/bximage.cc', needed by 'misc/bximage.o'

    cp misc/bximage.cpp misc/bximage.cc
    cp iodev/hdimage/hdimage.cpp iodev/hdimage/hdimage.cc
    cp iodev/hdimage/vmware3.cpp iodev/hdimage/vmware3.cc
    cp iodev/hdimage/vmware4.cpp iodev/hdimage/vmware4.cc
    cp iodev/hdimage/vpc-img.cpp iodev/hdimage/vpc-img.cc
    cp iodev/hdimage/vbox.cpp iodev/hdimage/vbox.cc
    
  • 錯誤5 error: invalid use of ‘this’ in non-member function 383 | # define BX_CPU_THIS_PTR this->

    修改bx_debug/dbg_main.cc

    -Bit32u index = BX_ITLB_INDEX_OF(laddr);//改成下面一行
    +  Bit32u index = BX_CPU(dbg_cpu)->ITLB.get_index_of(laddr);
    ......
    -  index = BX_DTLB_INDEX_OF(laddr, 0);		
    +  index = BX_CPU(dbg_cpu)->DTLB.get_index_of(laddr);
    

之后繼續make

進行安裝make install

運行bochs

因此刪去默認的.bochsrc中的955行。

再次運行

安裝成功!

測試

首先創建一個軟盤

$ bximage

然后選擇創建軟盤,其余的默認即可

編寫一段boot代碼

org 07C00h                   ; 告訴編譯器程序加載到07C00處
       mov ax, cs
       mov ds, ax
       mov es, ax
       call DispStr                    ; 調用顯示字符串例程
       jmp $              ; 無限循環
DispStr:
       mov ax, BootMessage
       mov bp, ax                    ; es:bp = 串地址
       mov cx, 16                    ; cx = 串長度
       mov ax, 01301h            ; ah = 13, al = 01h
       mov bx, 000Ch              ; 頁號為0(bh = 0) 黑底紅字 (bl = 0Ch,高亮)
       mov dl, 0
       int 10h                          ; 10h號中斷
       ret
BootMessage:  db "Hello,OS world!"
times 510-($-$$)   db   0            ; 填充剩下的空間,使生成的二進制代碼恰好為512字節
dw 0xaa55

下載nasm

$ sudo apt-get install nasm

編譯寫入

nasm boot.asm -o boot.bin && dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc

寫一個bochs配置文件,命名為sample_bochsrc

# how much memorythe emulated machine will have  
megs: 32  
   
# filename of ROMimages  
romimage:file=/usr/local/share/bochs/BIOS-bochs-latest  
vgaromimage:file=/usr/local/share/bochs/VGABIOS-lgpl-latest  
   
# what disk imageswill be used  
floppya:1_44=a.img, status=inserted  
   
# choose the bootdisk.  
boot: floppy  
   
# where do we sendlog messages?  
log: bochsout.txt  
   
# disable themouse  
mouse: enabled=0  
   
# enable keymapping, using Us layout as default  
keyboard:keymap=/usr/local/share/bochs/keymaps/x11-pc-us.map

啟動bochs

$ bochs -f sample_bochsrc

選擇6. Begin simulation

接着按c運行

此時bochs界面便會出現我們想要的


免責聲明!

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



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