[x] TODO: 研讀 KVM: Linux 虛擬化基礎建設, 打造以 KVM 為基礎的精簡虛擬機器管理程式, 2022 年報告 和 2023 年報告,以理解 KVM 和 VirtIO 原理,針對電腦網路和 2D 裝置模擬提出方案
[x] TODO: 將 semu 的部分 VirtIO 成果整合到 kvm-hostsemu 已有 virtio-net 和 virtio-gpu,而這些成果若可整合到系統模擬效率更高的 kvm-host,可顯著提高 Linux 系統模擬的可用性實作 virtio-net
任務簡述
在這次專題中,將介紹 KVM 運作原理,並展示一個以 KVM 為基礎的精簡虛擬機器管理程式實作( kvm-host ),它能在 x86-64 及 arm64 平台上運作,提供了基本的 VirtIO 儲存裝置、 serial 裝置 (用來作為 console) ,並且能成功在上面執行 Linux 系統,而目標是在該虛擬機器上實作 Virtio-net 裝置。
KVM
KVM (Kernel-based Virtual Machine) 是 Linux 核心提供的系統虛擬機器基礎建設,它是個 Linux 核心模組,能讓 Linux 系統成為一個 Type-2 Hypervisor 。KVM 透過硬體虛擬化支援 (Intel VT, AMD-V) 來提供 CPU 和記憶體虛擬化功能。藉由硬體虛擬化技術,客體作業系統 (Guest OS) 不必經由軟體模擬或轉換指令,即可高效率且安全地直接執行在硬體上。使用者空間的管理程式只要負責模擬周邊裝置、呼叫 KVM API ,即可建立並高效率地執行虛擬機器。
KVM 提供 API 供 User space 呼叫 :