iT邦幫忙

鐵人檔案

2025 iThome 鐵人賽
回列表
自我挑戰組

30 天 hypervisor 入門 系列

挑戰將以《嵌入式虛擬化技術與應用:ACRN 開源專案實踐》為主要參考書目,嘗試在 30 天內於 x86 平台探索並實作簡易 Hypervisor。重點將放在 VMX 啟動流程、Stage-2 page table、IRQ 處理與 vCPU 切換等核心機制,並透過 QEMU/KVM 進行驗證。

鐵人鍊成 | 共 30 篇文章 | 0 人訂閱 訂閱系列文 RSS系列文
DAY 21

Day 21:BIOS 顯示服務(INT 10h)

昨天我們談到顯示設備在虛擬化環境中的運作邏輯,也說明了主機端能觀察畫面變化的策略。一種是透過 EPT 寫保護 或 MMIO 映射 強制每次寫入都觸發 VM-ex...

2025-10-05 ‧ 由 borane15532 分享
DAY 22

Day 22 實現螢幕設備(2)

用 SDL2 把 BIOS 文字模式跑起來 在前面的實作中,我們雖然已經完成了螢幕設備的 API 介面與記憶體寫入行為的監控,但並沒有模擬一個真正的畫面,有的也...

2025-10-06 ‧ 由 borane15532 分享
DAY 23

Day 23 A20 Gate

這幾天我們處理了文字模式畫面與硬碟(INT 13h)讀寫。若要讓 loader 能把資料搬進記憶體、再順利切換到保護模式甚至長模式(IA-32e),我們必須提供...

2025-10-07 ‧ 由 borane15532 分享
DAY 24

Day 24 INT 15h, AX=e820h

從 BIOS 的角度看 E820 在 bootloader 啟動之前,BIOS 已經完成整個平台的初始化。雖然 CPU 還在實模式,沒有分頁,也沒有任何軟體邏輯...

2025-10-08 ‧ 由 borane15532 分享
DAY 25

Day 25 在 QEMU 上把 GRUB 跑起來

之前已打通 BIOS 端的 A20 與 E820,也實作了文字輸出(INT 10h,0xB8000 → SDL2);硬碟通路具備 INT 13h 與 ATA P...

2025-10-09 ‧ 由 borane15532 分享
DAY 26

Day 26 GRUB 在 Hypervisor 上啟動

前幾天,我已經完成 BIOS 初始化、磁碟 I/O 模擬等。今天的目標,是讓虛擬機真正載入 GRUB,讓開機流程第一次跨過韌體這一層,進入可互動的 bootlo...

2025-10-10 ‧ 由 borane15532 分享
DAY 27

Day 27 實作缺失 bios 功能(今天都在 debug)

今日檢討 今天應該是沒啥新進度了。花了比較多時間在 debug。先上圖這是目前引入 GRUB 的結果。目前還有一些 INT 中斷服務程式尚未實作,導致 GRUB...

2025-10-11 ‧ 由 borane15532 分享
DAY 28

Day 28 實現 BIOS INT 服務

今日進度 今天大致把 BIOS 到 GRUB 的路徑跑通了。從打印 log 可以看到目前的 INT 13h 有正確執行,我們實現的 ATA PIO 可以正常工作...

2025-10-12 ‧ 由 borane15532 分享
DAY 29

Day 29 今日檢討

檢討 這段時間期時也沒啥好寫的,每天做的事情就是查 BIOS 服務 -> 實作 -> 測試 -> 爆掉 -> 再找哪裡實現錯誤。我在想目...

2025-10-13 ‧ 由 borane15532 分享
DAY 30

Day 30 結語

雖說是結語,我們的 HV 其實只走到一半。一路走來,我把大量時間花在實作硬體抽象層,讓 Guest 的行為對齊真機的中斷處理、I/O 觸發與裝置模擬。這條路過於...

2025-10-14 ‧ 由 borane15532 分享