QEMU

最後更新: 2023-10-25 13:01:22 +0800 +0800
原文以英文撰寫。您正在閱讀AI翻譯版本。

QEMU 提供系統模擬器、使用者模式 CPU 模擬器與儲存工具。系統模擬器會模擬完整的機器,包括 CPU、記憶體、韌體、匯流排與裝置。使用者模式模擬器會轉換異質架構的使用者空間程式,並將其系統呼叫對映至主機核心;它不會啟動客體核心。

系統模擬 #

qemu-system-x86_64 會建立 x86-64 虛擬機器。-m 用於選擇客體記憶體,-smp 用於選擇虛擬 CPU。韌體是機器組態的一部分:SeaBIOS 在 x86 上提供傳統 BIOS,而 OVMF 提供 UEFI 韌體。儲存後端與裝置彼此獨立:-blockdev 定義後端,-device 連接客體控制器或裝置。-drive 是常見組合的便利簡寫。

sh
qemu-img create -f qcow2 guest.qcow2 32G
qemu-system-x86_64 \
  -m 4G -smp 4 \
  -drive file=guest.qcow2,format=qcow2,if=virtio \
  -cdrom installer.iso \
  -boot order=d \
  -display gtk

-boot order=d 會選擇 CD-ROM 作為初始開機裝置。只有在 QEMU 監視器需要與控制終端機共用時,才使用 -monitor stdio;使用序列主控台的客體通常改用 -serial stdio。在相容的 Linux 主機上,可以透過 -accel kvm 啟用 KVM 加速。它會改變執行速度,但不會改變客體裝置語意。

支援工具 #

qemu-img 用於建立、轉換、檢查磁碟映像,以及建立磁碟映像快照。qemu-nbd 透過 Network Block Device 協定公開映像。qemu-io 用於向映像發出受控 I/O,以進行測試。qemu-storage-daemon 透過 QEMU 的區塊層提供儲存後端服務。qemu-pr-helper 協助處理 SCSI 永久保留,qemu-edid 用於測試 EDID 產生。

使用者模式可執行檔包括 qemu-aarch64、qemu-riscv64 和 qemu-mips 等指令。當程式具有動態直譯器時,需要目標使用者空間函式庫樹;-L 用於選擇該前綴。Binfmt 整合可以為異質架構的可執行檔註冊使用者模式模擬器,但系統呼叫的實作仍由主機核心提供。

評論

在 GitHub 上閱讀或評論(發表評論需要登入)