iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0
自我挑戰組

30 天 hypervisor 入門系列 第 28

Day 28 實現 BIOS INT 服務

  • 分享至 

  • xImage
  •  

今日進度

https://ithelp.ithome.com.tw/upload/images/20251012/20178814vXo9cmrxXk.png
今天大致把 BIOS 到 GRUB 的路徑跑通了。從打印 log 可以看到目前的 INT 13h 有正確執行,我們實現的 ATA PIO 可以正常工作,而中間的 INT 13h AX=0h 是正常的重置流程。它的作用是讓 BIOS 把 ATA 的清乾淨,讓硬碟回到出始狀態。同時有大量的 INT 13h, AH=42 讀取,可以看到 GRUB 搬運了許多資料,同時啟動序列也會掃多個 DL,系統碟可在 DL=0x80 上工作正常。
另外截圖裡冒出的 INT 16h (鍵盤) 與 INT 1Ah (clock) 是因為我處理文字緩衝時是直接覆蓋,並不會特別去清空那區,實際上這兩個中段服務我還沒實現,所以他們只會打印 INT 16h 與 INT 13h 而以。
另外我發現 grub 其實完全不走 0xb8000 的文字輸出模式,而是切到 VBE 輸出,所以接下來我們需要實作 INT 10h 的 VBE 設定讓 GRUB 的東西可以真正顯示在畫面中。
另外之前為了確認螢幕是否可以正常顯示所以把 LOG 輸出轉介到 SDL2 建立的螢幕中。現在既然確定畫面可以工作,同時也有 LOG 輸出那這部分的程式碼就可以去除了。


上一篇
Day 27 實作缺失 bios 功能(今天都在 debug)
系列文
30 天 hypervisor 入門28
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言