在上一篇博文中(自己寫操作系統–開發環境的搭建與第1個操作系統(完全可復現)),提到了開發環境的搭建和第一個操作系統(其實就是MBR)。
這一篇繼續編寫MBR,但是開發環境有一點的小改動,是在Linux環境下的bochs中進行測試我們寫好的MBR
好了,我們馬上開始。
1. 首先先在Ubuntu中安裝 bochs2.9.6。
sudo apt-get update //先升級一下,以免後續的安裝出錯
接下來的具體過程參考博文:https://blog.csdn.net/Sunnil/article/details/79243192。
2.編寫mbr.S彙編文件並編譯爲bin文件
org 07c00h ; 告訴編譯器程序加載到7c00處
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 boot.asm -o boot.bin
3. 把bin文件寫入虛擬軟盤中
利用上一篇博文中的虛擬軟盤。自己寫操作系統–開發環境的搭建與第1個操作系統(完全可復現)
dd if=boot.bin of=myOS.img bs=512 count=1 conv=notrunc
4. 編寫bochs配置文件
命名爲bochsrc.conf
megs:32
romimage:file=/usr/local/share/bochs/BIOS-bochs-latest
vgaromimage:file=/usr/local/share/bochs/VGABIOS-lgpl-latest
floppya:1_44=myOS.IMG,status=inserted
boot:floppy
log:bochs.out
其中第2、3行中的路徑是根據BIOS-bochs-latest和VGABIOS-lgpl-latest的真實路徑,可以在文件管理器中查找到。
5.在bochs啓動自己編寫的MBR
把虛擬軟盤映像文件myOS.img 、配置文件bochsrc.conf 放至bochs2.9.6的安裝目錄裏。然後執行命令
bochs -f bochsrc.conf
輸入 -f 的目的是直接使用配置文件bochsrc.conf
默認選擇了第 6 項,直接回車。
啓動之後按提示 輸入’c’就跳到MBR執行。