挑戰將以《嵌入式虛擬化技術與應用:ACRN 開源專案實踐》為主要參考書目,嘗試在 30 天內於 x86 平台探索並實作簡易 Hypervisor。重點將放在 VMX 啟動流程、Stage-2 page table、IRQ 處理與 vCPU 切換等核心機制,並透過 QEMU/KVM 進行驗證。
I/O Thread 到目前為止,我們的 Guest 雖然能跑起來,但它沒有辦法真實地「感受到」外部事件。 沒有 IRQ、沒有鍵盤輸入,等於只是一個單純的 wh...
在先前的實作中,我們已經建立了 host_io 模組,並且透過 epoll 以統一監聽各檔案描述符的事件,同時透過分發對應的 callback,讓 Host 模...
在前幾天,我們時做簡易的 host I/O 模組,並且透過 KVM_CREATE_IRQCHIP + KVM_IRQ_LINE 將 IRQ 傳遞給 Guest。...
Extended Page Table(EPT)是 Intel VT-x 的二級分頁技術,用來處理 Guest Physical Address (GPA) 到...
這一階段我們將會在 KVM 的 API 之上,劃分 Guest 的 GPA 空間並賦予不同語意,用於控制哪些地址被直接映射、哪些地址必須回到 Host 處理。我...
雖然目前 hypervisor 大部分功能尚未實作,但我想可先以簡易 boot loader 作為目標。目前的 boot loader 先不涉及模式切換,以實作...
想要讓 boot 動起來,必須在我們的系統裡實作一個最小的 BIOS 模組。而這些 bios 的入口地址被記錄在 0x0 ~ 0x3FF 的中斷向量表(IVT)...
在 x86 架構中,CPU 上電後會從固定地址 reset vector (0xFFFF0) 開始執行。BIOS 在這裡會放置一條 far jump 指令,將控...
在之前的實作中,我們在 Host 端直接用 memcpy 將 boot.bin 放入 Guest 的 0x7C00 並跳過了 BIOS 與硬碟存取的整個流程。因...
在 x86 BIOS 環境保留了固定的地址作為畫面顯示使用(0Xb8000) 則對應彩色的文本寫入 (80 * 25),而 0xA0000 則用於圖形模式顯式。...