QEMU-KVM虛擬機
QEMU-KVM是一個高性能的虛擬機,以下是以安裝RockyLinux9爲例.
安裝必備軟件
確保主機已經安裝了 QEMU、KVM 和相關工具。以基於 Debian/Ubuntu 的系統爲例,執行以下命令:
sudo apt update
sudo apt install qemu-kvm qemu-img virt-manager virt-install virt-viewer libvirt libvirt-daemon libvirt-daemon-qemu bridge-utils virglrenderer
對於基於 Fedora/CentOS/Rocky Linux 的系統,命令可能是:
sudo dnf install qemu-kvm qemu-img virt-manager virt-install virt-viewer libvirt libvirt-daemon libvirt-daemon-qemu bridge-utils virglrenderer
安裝完成後,確保當前用戶在 kvm 組中(否則可能沒有權限使用 KVM 加速):
sudo usermod -aG kvm $USER
注意: 修改組後可能需要註銷重新登錄才能生效。
打開KVM硬件加速
運行以下命令檢查 KVM 是否啓用:
egrep -c '(vmx|svm)' /proc/cpuinfo
如果輸出 0,說明 CPU 不支持 KVM 或未開啓 VT-x(Intel)/ SVM(AMD),需要在 BIOS 裏開啓 Intel VT-x 或 AMD SVM 。
然後檢查 KVM 模塊是否加載:
# 验证 KVM 加速可用
lsmod | grep kvm
# 验证当前用户有权限访问 /dev/kvm
ls -l /dev/kvm
如果沒有輸出,加載 KVM 模塊:
sudo modprobe kvm_intel # Intel 处理器
sudo modprobe kvm_amd # AMD 处理器
創建虛擬硬盤文件
你需要爲虛擬機創建一個硬盤鏡像文件。這裏以 qcow2 格式、100GB 爲例(你可以根據需要調整大小)。在終端中運行:
qemu-img create -f qcow2 disk.qcow2 100G
這將在當前目錄下生成一個名爲 disk.qcow2 的虛擬硬盤文件。
準備 OVMF(UEFI 固件)文件
安裝 OVMF 包。例如,在 Ubuntu 上可通過以下命令安裝:
# 一般电脑都默认安装过了
sudo apt install ovmf # Debian/Ubuntu
sudo dnf install edk2-ovmf # RHEL/CentOS/Fedora
安裝後,查找文件路徑,通常位於 /usr/share/OVMF/OVMF_CODE.fd 或 /usr/share/ovmf/OVMF.fd。直接在命令中使用正確路徑。(下方腳本中有例子,你只需要確保你的/usr/share/OVMF/下有這倆文件即可)

也可以下載下面這個文件:
暫時無法在飛書文檔外展示此內容
- 編寫或調整 run.sh 腳本
將下面的內容寫入你的 run.sh 文件(你可以使用文本編輯器)。
sudo vim ./run.sh
下面的腳本示例使用 QEMU 啓動虛擬機並加載 ISO 鏡像:
#!/bin/bash
qemu-system-x86_64 \
-machine q35,vmport=off,kernel_irqchip=on \
-accel kvm \
-cpu host,kvm=on,vmx=on,migratable=on,+invtsc \
-smp 8,sockets=1,cores=4,threads=2 \
-m 8G,slots=4,maxmem=32G \
-device virtio-gpu-gl-pci,max_outputs=1 \
-vga none \
-display sdl,gl=on \
-audiodev pa,id=pa1,server=unix:/run/user/1000/pulse/native \
-device ich9-intel-hda \
-device hda-micro,audiodev=pa1 \
-device qemu-xhci,id=xhci \
-device virtio-tablet-pci \
-device usb-kbd,bus=xhci.0 \
-bios OVMF-pure-efi64.fd \
-boot d \
-blockdev driver=qcow2,node-name=disk1,file.driver=file,file.cache.direct=on,file.aio=io_uring,file.filename=disk.qcow2 \
-device virtio-blk-pci,drive=disk1 \
-drive file=kubuntu-20.04.6-desktop-amd64.iso,media=cdrom,if=none,id=cdrom \
-device usb-storage,drive=cdrom,removable=on \
-nic user,model=virtio-net-pci,hostfwd=tcp::8022-:22 \
-monitor stdio \
-parallel none \
-serial none \
-msg timestamp=on
保存後給腳本執行權限:
sudo chmod +x run.sh
啓動虛擬機
確保當前目錄下有以下文件:
run.shdisk.qcow2(剛剛創建的虛擬硬盤)Rocky-9.4-x86_64-dvd.iso(Rocky Linux 9 安裝 ISO)OVMF-pure-efi64.fd文件
然後在終端中運行腳本:
./run.sh
此時,QEMU 應該會啓動一個窗口,並加載 ISO 鏡像進入安裝界面。
安裝系統
在虛擬機窗口中,你會看到 Linux 的安裝界面。按照安裝嚮導的步驟進行安裝。安裝完成後,你可能需要調整啓動項,將硬盤作爲啓動介質(如果默認還是從 CD 啓動)。
建議: 安裝好系統後,關閉虛擬機,再修改 run.sh 將 ISO 鏡像移除或改爲可選啓動設備,這樣下次啓動時就會直接從硬盤啓動。
例如,將 -drive file=Rocky-9.5-x86_64-dvd.iso,media=cdrom 移除,或者更換爲啓動順序參數。
其他操作
顯卡直通(謹慎,不懂不要亂搞)
此操作的意思是把顯卡完全給虛擬機用,實體宿主機就沒法用顯卡了.
- 主機和 IOMMU 配置
(1) 啓用 IOMMU(以 Intel 爲例)
編輯 /etc/default/grub,在 GRUB_CMDLINE_LINUX_DEFAULT 中加入:
intel_iommu=on iommu=pt
對於 AMD 主機則設置 amd_iommu=on。

更新 grub 後重啓:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg # CentOS/Fedora/Rocky 系列
# 或者
sudo update-grub # Ubuntu/Debian 系统
可以在重啓後用下面命令確認 IOMMU 是否啓用:
dmesg | grep -e DMAR -e IOMMU
如果看到類似“DMAR: IOMMU enabled”之類的信息,就說明生效了。
(2) 查找你的 NVIDIA 顯卡設備 ID 使用 lspci -nn | grep NVIDIA 查找顯卡,例如:
tungchiahui@Dell-G15-5511:~/Downloads$ lspci -nn | grep NVIDIA
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA106M [GeForce RTX 3060 Mobile / M
ax-Q] [10de:2560] (rev a1)
01:00.1 Audio device [0403]: NVIDIA Corporation GA106 High Definition Audio Controller [10de:228
e] (rev a1)
記下上面的 PCI 地址和設備 ID。
顯卡 PCI 地址:01:00.0 設備 ID:10de:2560
顯卡音頻 PCI 地址:01:00.1 設備 ID:10de:228e
(3) 綁定設備到 vfio 驅動
另一種方式是創建一個 modprobe 配置文件,讓 vfio-pci 在加載時綁定這些設備。
- 創建文件(例如
/etc/modprobe.d/vfio.conf):
sudo vim /etc/modprobe.d/vfio.conf
- 在文件中寫入:
options vfio-pci ids=10de:2560,10de:228e
- 保存文件後,更新 initramfs:
# debian系选这个
sudo update-initramfs -u
# 红帽系选这个
sudo dracut --force
- 重啓系統。
- 檢查設備綁定情況
重啓後,你可以用下面命令檢查設備是否已經被 vfio-pci 驅動接管:
lspci -nnk | grep -A3 "10de:2560"
你應該能看到類似:
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA106M [GeForce RTX 3060 Mobile / Max-Q] [10de:2560]
Subsystem: ...
Kernel driver in use: vfio-pci
同樣用相似的命令檢查音頻設備(10de:228e)。
lspci -nnk | grep -A3 "10de:228e"
如果看到 Kernel driver in use: vfio-pci,說明綁定成功。
(4) 啓動選項
在run.sh裏添加上下面兩行
# 直通 NVIDIA 显卡
-device vfio-pci,host=01:00.0,multifunction=on,x-vga=on \
-device vfio-pci,host=01:00.1 \