ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

QEMU 完整使用教程:虚拟化、KVM 加速与跨架构模拟实战

QEMU 完整使用教程:虚拟化、KVM 加速与跨架构模拟实战 做嵌入式开发或者后端运维的同学大概率遇到过这种场景手里只有一台 x86 笔记本却要调试 ARM 板子的程序或者想在本地快速体验某个 Linux 发行版又不想装 VMware 这类重型软件。之前我也被这类问题困扰后来系统梳理了 QEMU 之后很多麻烦都用一条命令解决了。本文结合近期实战经验整理一份完整的 QEMU 使用教程从基础概念、环境安装、全系统模拟、KVM 加速到跨架构运行尽量把关键配置讲清楚并附上可直接复制的命令。QEMU 是一个开源模拟器兼虚拟机监控器覆盖 x86、ARM、RISC-V、PowerPC、MIPS 等多种架构。它既能用来做纯粹的软件模拟也能借助 KVM、WHPX、HVF 等硬件虚拟化加速让虚拟机运行速度接近宿主机。对于学习 Linux、研究操作系统内核、嵌入式交叉开发、体验国产操作系统QEMU 都是一个非常值得掌握的工具。1. QEMU 是什么虚拟化与模拟的区别1.1 一个工具解决两类需求很多人刚接触 QEMU 时容易把“模拟”和“虚拟化”混为一谈。实际上这两个词描述的是两种不同的能力模拟Emulation用软件模拟一套完整的硬件环境。比如你在 x86 电脑上模拟出一块 ARM 开发板让 ARM 架构的 Linux 镜像运行起来。这种模式下CPU 指令由 QEMU 翻译执行速度会比较慢但可以解决“架构不同”的问题。虚拟化Virtualization通过硬件辅助虚拟化技术让虚拟机直接运行在宿主机的 CPU 上。比如在 Linux 上通过 KVM 模块运行另一个 Linux 或 Windows 虚拟机。这种模式性能损失很小接近原生速度。QEMU 的神奇之处在于它把这两种需求都集成在一个工具里。只要你有一台普通的 x86 电脑就可以通过 QEMU 运行 Linux、Windows、国产麒麟系统、FreeBSD 等不同操作系统甚至可以跨架构运行 ARM 和 RISC-V 的系统镜像。这也是 QEMU 在嵌入式 Linux 开发、内核调试、CI 测试、服务器虚拟化等领域被广泛使用的原因。1.2 与 VMware、VirtualBox 的差异很多人用过 VMware Workstation 或者 VirtualBox它们主要是图形界面的虚拟机软件使用门槛低适合桌面用户。QEMU 和它们相比有几个明显区别对比项QEMUVMware / VirtualBox开源免费完全开源社区版免费商业版收费命令行 / 图形以命令行为主也可加图形界面图形界面为主跨架构模拟支持 x86 / ARM / RISC-V 等主要支持同架构 x86二次开发模块化设计接口开放二次开发难度较大资源占用轻量便于脚本化相对较重因此如果你是做嵌入式开发、内核调试或者希望在服务器上批量创建虚拟机QEMU 是更合适的选择。如果你只是想在 Windows 桌面里跑一个 Ubuntu 办公使用VMware 会更友好。两者并不冲突实际项目中也可以根据场景搭配使用。2. 环境准备在 Linux / Windows / macOS 安装 QEMUQEMU 的安装方式非常灵活官方提供了各平台的安装包主流 Linux 发行版的软件源里也都有。下面分别介绍。2.1 Linux 下安装 QEMU在 Ubuntu / Debian 系统中可以直接用 apt 安装。建议按需安装对应架构的 QEMU 包比安装完整包更清晰# 安装 x86 架构模拟器 sudo apt update sudo apt install qemu-system-x86 qemu-system-arm qemu-system-riscv64 qemu-utils如果不想区分架构也可以安装元包sudo apt install qemu-system在 CentOS / RHEL 系列系统中使用 yum 或 dnf# CentOS 7 / 8 sudo yum install qemu-kvm qemu-img # CentOS 9 / RHEL 9 / Rocky Linux sudo dnf install qemu-system-x86 qemu-imgFedora 用户也可以直接使用 dnf 安装 qemu-system-x86 等相关包。安装完成后可以使用qemu-system-x86_64 --version验证是否成功。2.2 Windows 下安装 QEMUWindows 下推荐直接下载 QEMU 官方编译好的安装包也可以使用 Chocolatey 包管理器choco install qemu安装完成后默认路径一般在C:\Program Files\qemu。为了让命令行直接使用qemu-system-x86_64需要把这个目录加入系统 PATH 环境变量。在 Windows 上需要注意PowerShell 和 CMD 对命令行的反斜杠续行符支持不好本文示例以 Linux/macOS 的 bash 风格为主。如果你在 Windows 上操作需要把命令中的\换成^或者直接写成一行。QEMU 在 Windows 上同样支持 WHPX 加速这样运行 Windows/Linux 虚拟机时性能也不会太差。2.3 macOS 下安装 QEMUmacOS 用户如果安装了 Homebrew安装非常简单brew install qemumacOS 上 QEMU 支持 Hypervisor.framework 加速对应的加速器名称为hvf。在 Apple SiliconM1/M2/M3上QEMU 可以很好地模拟 ARM64 和一些其他架构也可以虚拟化 macOS 和 Linux是很多开发者在本机做异构环境测试的首选工具。2.4 验证安装是否成功无论哪个平台验证安装的方式都一样qemu-system-x86_64 --version qemu-img --version qemu-system-aarch64 --version正常情况下会输出对应的 QEMU 版本信息。如果提示命令找不到说明没有安装成功或者 PATH 没有配置正确。3. QEMU 核心概念拆解架构、加速器与磁盘镜像正式开始使用之前有必要把 QEMU 的几个核心概念弄清楚。这些概念在实际配置中会反复用到提前理解能少踩很多坑。3.1 两种运行模式QEMU 提供两种运行模式系统模式System Mode模拟完整的主机硬件环境包括 CPU、内存、磁盘、网卡、显卡等可以在这套模拟环境中启动一个完整的操作系统。常用命令为qemu-system-x86_64、qemu-system-aarch64、qemu-system-riscv64等。用户态模式User Mode只模拟 CPU 指令集不模拟完整硬件可以直接运行单个可执行文件。例如在 x86 主机上运行一个 ARM 架构的静态编译程序常用命令为qemu-aarch64、qemu-riscv64等。这种模式适合做交叉编译测试和运行单文件程序速度比完整系统模拟快很多。本文重点演示系统模式因为它的使用范围更广也更贴近“跑一个操作系统”的场景。3.2 前端模拟与后端加速QEMU 的运行性能主要取决于“是否使用硬件加速”。你可能会看到这些加速器名称TCGQEMU 自带的纯软件动态翻译引擎不需要宿主机 CPU 支持虚拟化。优点是兼容性最好缺点是性能差。KVMLinux 内核提供的虚拟化模块需要 CPU 支持 VT-x/AMD-V。QEMU 配合 KVM 后性能接近原生。WHPXWindows Hypervisor PlatformWindows 10/11 上可用的硬件加速接口。HVFmacOS 上的 Hypervisor.framework。启动 QEMU 时可以通过-accel参数指定加速器也可以使用传统写法-enable-kvm。例如qemu-system-x86_64 -enable-kvm -m 2048 ...如果没有指定QEMU 默认使用 TCG 软件模拟。在 x86 宿主机上跑 x86 虚拟机如果不开 KVMWindows 或大型 Linux 系统会非常卡。在 ARM 宿主上跑 ARM 虚拟机同理也要开启 HVF 或 KVM。3.3 磁盘镜像格式QEMU 使用磁盘镜像文件来保存虚拟机的硬盘数据。最常用的两种格式raw原始磁盘镜像直接对应物理磁盘的字节流简单高效但占空间。qcow2QEMU 推荐使用的镜像格式支持稀疏分配、压缩、快照和加密。创建时指定 20G实际使用多少才占多少空间。常用命令如下# 创建 20G 的 qcow2 磁盘 qemu-img create -f qcow2 ubuntu.qcow2 20G # 查看镜像信息 qemu-img info ubuntu.qcow2 # 创建虚拟机快照 qemu-img snapshot -c fresh-install ubuntu.qcow2 # 查看快照列表 qemu-img snapshot -l ubuntu.qcow2 # 还原快照 qemu-img snapshot -a fresh-install ubuntu.qcow2推荐的实践是磁盘镜像文件命名为虚拟机名.qcow2创建后先做一次“干净系统”快照方便后续随时还原。4. 实战用 QEMU 全系统模拟运行一个 Linux 虚拟机下面通过一个完整案例演示如何通过 QEMU 安装并运行一个 x86_64 架构的 Linux 虚拟机。环境以 Ubuntu/Debian 宿主机为例安装镜像你可以选择 Ubuntu Server、Debian、CentOS Stream 或者其他 Linux 发行版。4.1 创建磁盘镜像先创建一个 20G 的 qcow2 磁盘镜像qemu-img create -f qcow2 linux-test.qcow2 20G这里使用 qcow2 格式好处是虚拟磁盘占用的宿主机空间会随着虚拟机内部使用量增长而不是一次性占用 20G。如果你的发行版镜像比较大磁盘给到 30G 或 40G 也可以。4.2 获取系统安装 ISO从官网下载一个 Linux 发行版的 ISO 安装镜像例如 Ubuntu Server 或 Debian netinst 镜像。假设下载后的文件名为linux-installer.iso放在当前目录下。4.3 启动安装程序如果宿主机支持 KVM安装时建议直接开启硬件加速否则后面安装过程会比较慢。qemu-system-x86_64 \ -m 2048 \ -smp 2 \ -boot d \ -cdrom linux-installer.iso \ -hda linux-test.qcow2 \ -enable-kvm参数说明-m 2048分配 2GB 内存。-smp 2分配 2 个 CPU 核心。-boot d优先从光驱启动。-cdrom linux-installer.iso把 ISO 挂载为光驱。-hda linux-test.qcow2使用刚才创建的磁盘镜像作为系统盘。-enable-kvm开启 KVM 硬件加速。执行后QEMU 会弹出一个图形窗口显示安装程序界面。你按照发行版默认步骤安装即可。需要注意安装过程中不要选择“整块磁盘加密”等特殊选项否则首次启动可能增加额外配置步骤。4.4 从磁盘启动虚拟机系统安装完成后再次启动虚拟机时不再需要 ISO 和光驱启动直接使用磁盘即可qemu-system-x86_64 \ -m 2048 \ -smp 2 \ -hda linux-test.qcow2 \ -enable-kvm启动后画面会进入虚拟机的 GRUB 菜单然后加载 Linux 系统。登录后你就在 QEMU 创建的虚拟机里拥有了一个完整的 Linux 环境。4.5 使用串口控制台很多服务器和嵌入式开发场景下没有图形界面只能通过串口登录系统。QEMU 也能模拟串口设备并将串口输出重定向到当前终端。qemu-system-x86_64 \ -m 2048 \ -smp 2 \ -hda linux-test.qcow2 \ -nographic \ -enable-kvm-nographic表示不使用图形窗口QEMU 会把虚拟机的串口输出转发到当前终端。需要注意的是Linux 系统默认的 GRUB 和控制台可能并不输出到串口需要在系统内配置 GRUB 的 console 参数或者安装时选择串口安装模式。对于 QEMU 纯命令行操作这一步经常被忽略建议先在一台测试虚拟机里验证串口配置再批量使用。5. 使用 KVM 加速让虚拟机性能直接起飞TCG 软件模拟模式下虚拟机的 CPU 指令全部由 QEMU 翻译执行安装系统和运行大型软件都会很慢。在生产环境或日常开发中强烈建议使用 KVM 加速。5.1 检查 KVM 支持在 Linux 宿主机上执行以下命令ls /dev/kvm如果能输出/dev/kvm说明 KVM 模块已经加载。如果没有输出先检查 CPU 虚拟化是否在 BIOS 中开启。查看 CPU 是否支持硬件虚拟化egrep -c (vmx|svm) /proc/cpuinfo输出数字大于 0说明 CPU 支持 VT-xIntel或 AMD-VAMD。如果数字为 0说明 BIOS 中没有开启虚拟化功能需要重启进入 BIOS 设置界面开启 Intel VT-x 或 AMD SVM。需要注意的是如果你是在虚拟机里再用 QEMU比如在 VMware 虚拟机或 WSL2 里使用 QEMU还需要开启“嵌套虚拟化”否则/dev/kvm可能不存在或者 QEMU 无法获得 KVM 权限。WSL2 中运行 QEMU 时如果报错“无法启动因为此计算机上未启用虚拟化”多数情况下就是 Windows 的虚拟机平台功能未开启或者嵌套虚拟化未打开。5.2 启用 KVM 加速运行启动参数中加上-enable-kvm即可qemu-system-x86_64 \ -m 4096 \ -smp 4 \ -hda linux-test.qcow2 \ -enable-kvm也可以使用更明确的写法qemu-system-x86_64 \ -accel kvm \ -m 4096 \ -smp 4 \ -hda linux-test.qcow2开启 KVM 后虚拟机内部执行的是原生指令CPU 性能大幅提升。不过要注意KVM 加速只适用于与宿主机架构相同或兼容的虚拟机。比如在 x86 宿主机上跑 x86 虚拟机可以开 KVM但在 x86 宿主机上跑 ARM 虚拟机KVM 不适用只能用 TCG 软件模拟。5.3 Windows 下开启 WHPX 加速Windows 10/11 上QEMU 可以通过 WHPXWindows Hypervisor Platform加速。使用前需要开启对应的 Windows 功能打开“控制面板 - 程序 - 启用或关闭 Windows 功能”。勾选“虚拟机平台”和“Windows 虚拟机监控程序平台”。重启系统。然后在 QEMU 启动命令中使用-accel whpxqemu-system-x86_64.exe -accel whpx -m 4096 -smp 4 -hda linux-test.qcow2如果提示 WHPX 不可用可能是 Windows 版本不支持或者 Hyper-V 功能冲突。在 Windows 上同时使用 VMware/VirtualBox 和 QEMU 时需要注意 Hyper-V 与第三方虚拟化软件之间的兼容性这也是不少开发者遇到的经典问题。6. 跨架构模拟用 x86 跑 ARM 与 RISC-VQEMU 最强大的能力之一就是跨架构模拟。在 x86 宿主机上可以直接运行 ARM64 或 RISC-V 的 Linux 系统镜像。这对于嵌入式开发、国产芯片适配和学习操作系统内核非常有用。6.1 为什么需要跨架构模拟很多场景下我们手头没有 ARM 开发板或者 RISC-V 开发板价格高昂、资源紧张。QEMU 可以通过软件模拟出 ARM 或 RISC-V 的处理器和外围设备直接运行对应的 Linux 发行版或内核镜像。这样既能验证代码是否能编译通过也能测试内核启动流程、驱动初始化和文件系统挂载。需要注意的是跨架构模拟只能使用 TCG 软件模拟性能远低于原生硬件。因此它适合做功能验证、内核学习和 CI 测试不适合跑重型负载。6.2 运行 ARM64 Linux 示例以 ARM64 的 Ubuntu Cloud 镜像为例需要准备 UEFI 固件和 ARM64 磁盘镜像。QEMU 启动命令如下qemu-system-aarch64 \ -M virt \ -cpu cortex-a53 \ -smp 4 \ -m 2048 \ -bios QEMU_EFI.fd \ -drive fileubuntu-arm64.qcow2,formatqcow2,ifvirtio \ -netdev user,idnet0,hostfwdtcp::2222-:22 \ -device virtio-net-pci,netdevnet0 \ -nographic参数说明-M virt选择 QEMU 内置的通用虚拟平台这是 ARM64 模拟最常用的机器类型。-cpu cortex-a53指定模拟的 CPU 型号。-bios QEMU_EFI.fd指定 UEFI 固件文件。这个文件可以从发行版软件包或上游固件中获取不同发行版名称可能不同。-drive file...,ifvirtio使用 virtio 接口挂载磁盘性能更好。-nographic将串口作为主控制台输出。如果你拿到的镜像不是完整磁盘镜像而是内核和根文件系统分离的版本也可以用-kernel和-initrd方式启动qemu-system-aarch64 \ -M virt \ -cpu cortex-a53 \ -m 2048 \ -kernel vmlinuz \ -initrd initrd.img \ -append consolettyAMA0 root/dev/vda1 rw \ -drive filerootfs.img,formatraw,ifvirtio \ -nographicARM64 的串口设备通常是ttyAMA0如果你的内核使用其他串口名称需要从内核日志中确认。这块比较容易被忽略经常有人镜像启动后看不到任何输出最后发现是 console 参数写错了。6.3 运行 RISC-V Linux 示例RISC-V 是近年来非常火的开源指令集架构QEMU 对它也有完善支持。以 RISC-V 64 位 Linux 为例qemu-system-riscv64 \ -M virt \ -m 1024 \ -smp 2 \ -bios fw_payload.elf \ -kernel Image \ -drive filerootfs.img,formatraw,ifvirtio \ -append consolettyS0 root/dev/vda1 rw \ -nographicRISC-V 架构下-M virt是常用的虚拟平台fw_payload.elf是 OpenSBI 固件负责启动 RISC-V 内核。串口参数通常是ttyS0。如果你使用的是不同发行版提供的固件和内核启动参数需要相应调整。6.4 注意事项CPU、内存与启动参数跨架构模拟时有几个容易出问题的点CPU 型号-cpu参数决定模拟的 CPU 特性如果内核或发行版要求较高建议选择最新支持型号。内存大小ARM64 和 RISC-V 的发行版对内存要求不同一般建议至少 1GB桌面版建议 2GB 以上。串口参数不同架构的 console 名称不一样需要确认。显示方式-nographic适合服务器版和无头环境如果镜像自带图形界面需要去掉-nographic使用默认的图形窗口。7. QEMU 网络配置从用户模式到桥接网络是虚拟机使用中非常关键的部分。QEMU 默认的网络模式是用户模式user mode适合大多数单机测试场景。如果想要让虚拟机被局域网内其他机器访问则需要配置桥接网络。7.1 用户模式网络QEMU 默认会创建一个用户模式网络栈虚拟机的网卡会自动获得一个虚拟私有 IP通常是10.0.2.15。这个网络栈并不需要宿主机上有真实的网卡配置QEMU 内部会负责 NAT 转发。虚拟机访问外网时流量通过 QEMU 进程转发到宿主机网络。启动命令中显式配置用户模式网络qemu-system-x86_64 \ -m 2048 \ -hda linux-test.qcow2 \ -netdev user,idnet0 \ -device e1000,netdevnet0 \ -enable-kvm在这个模式里虚拟机 IP 通常为10.0.2.15。虚拟网关为10.0.2.2。DNS 服务器为10.0.2.3。用户模式网络的优点是配置简单不需要管理员权限缺点是虚拟机无法被外部主机直接访问只能主动访问外部。7.2 端口转发为了让外部主机可以访问虚拟机内的服务比如 SSH可以使用hostfwd参数做端口转发qemu-system-x86_64 \ -m 2048 \ -hda linux-test.qcow2 \ -netdev user,idnet0,hostfwdtcp::2222-:22 \ -device e1000,netdevnet0 \ -enable-kvm启动后在宿主机上执行ssh -p 2222 userlocalhost这样就能通过宿主机的 2222 端口访问虚拟机内的 22 端口。端口映射的格式为hostfwdtcp:[宿主机IP:]宿主机端口-虚拟机IP:虚拟机端口。如果不指定宿主机 IP默认绑定到所有网卡。需要注意暴露端口到公网时一定要小心避免被恶意扫描。7.3 桥接网络如果希望虚拟机拥有一个和宿主机在同一网段的独立 IP外部主机可以直接访问虚拟机就需要使用桥接网络。这种模式更适合服务器虚拟化场景。桥接网络需要预先在宿主机上创建 bridge 和 tap 设备。以 Linux 为例简要流程如下创建 bridgebr0把宿主机物理网卡加入br0。创建 tap 设备tap0也加入br0。启动 QEMU 时指定使用tap0。QEMU 启动参数qemu-system-x86_64 \ -m 2048 \ -hda linux-test.qcow2 \ -netdev tap,idnet0,ifnametap0,scriptno,downscriptno \ -device virtio-net-pci,netdevnet0 \ -enable-kvm桥接网络需要 root 权限并且在系统重启后需要重新配置网桥和 tap 设备。对于生产环境更推荐用 libvirt 管理 QEMU 虚拟机它提供了更方便的网络管理和生命周期管理能力。8. 常见问题与排查思路QEMU 使用过程中新手经常遇到一些问题。下面整理几个高频场景和对应排查思路问题现象常见原因解决思路启动报错/dev/kvm not foundCPU 虚拟化未开启或处于嵌套虚拟化环境检查 BIOS 中的 VT-x/AMD-V 设置在虚拟机软件中启用嵌套虚拟化暂时用 TCG 模拟Windows 下启动报错 WHPX 不可用Windows 虚拟机监控程序平台未开启控制面板 - 启用或关闭 Windows 功能 - 勾选“虚拟机平台”和“Windows 虚拟机监控程序平台”后重启ARM64 镜像启动后无输出UEFI 固件缺失或 console 参数错误确认-bios参数是否正确检查内核串口是ttyAMA0还是ttyS0虚拟机性能很慢没有开启硬件加速确认宿主机支持并开启 KVM/WHPX/HVF查看启动日志确认加速器生效GUI 模式黑屏或无法打开宿主机没有图形环境或者 DISPLAY 变量未设置无图形环境时改用-nographic或在宿主机安装桌面环境WSL2 中使用 QEMU 提示虚拟化未启用WSL2 嵌套虚拟化未开启在 Windows 中开启虚拟机平台功能并在 WSL2 配置中启用嵌套虚拟化磁盘镜像越来越大内部删除文件后 qcow2 不会自动收缩在虚拟机内清理文件后用qemu-img convert转换收缩镜像虚拟机无法访问外网用户模式网络 DNS 或网关配置异常确认虚拟机内 IP 是 10.0.2.15网关 10.0.2.2DNS 10.0.2.3或改用桥接网络排查问题时建议先查看 QEMU 的启动输出。很多错误信息会在启动时直接打印在终端里比如设备初始化失败、固件加载失败等。配合-d参数或-trace可以输出更详细的调试信息但日常使用中先看错误行即可定位大部分问题。9. 最佳实践与工程建议从“能跑起来”到“稳定好用”还有一段路要走。这里分享一些 QEMU 的最佳实践供你在实际项目中参考。9.1 优先使用 qcow2 格式并开启快照qcow2 镜像支持写时复制、压缩和快照非常适合开发调试。在安装完系统、配置好基础环境后建议立刻做一个快照qemu-img snapshot -c base-system linux-test.qcow2之后如果系统被玩坏可以直接还原qemu-img snapshot -a base-system linux-test.qcow2这比重新安装系统快得多也能节省大量时间。9.2 使用 virtio 设备提升性能在同架构 KVM 加速场景下内存、磁盘和网卡尽量使用 virtio 半虚拟化设备性能远好于默认的 IDE 设备和 e1000 网卡qemu-system-x86_64 \ -m 2048 \ -smp 2 \ -drive filelinux-test.qcow2,formatqcow2,ifvirtio \ -netdev user,idnet0,hostfwdtcp::2222-:22 \ -device virtio-net-pci,netdevnet0 \ -enable-kvm不过要注意如果镜像内没有安装 virtio 驱动启动时可能找不到磁盘。Linux 发行版通常内置了 virtio 驱动Windows 则可能需要单独加载驱动。9.3 显式配置串口和日志输出无论是调试内核还是排查启动失败串口日志都很有价值。建议在启动参数中增加串口输出并把日志重定向到文件qemu-system-x86_64 \ -nographic \ -serial file:serial.log \ ...这样即使 QEMU 崩溃也能从serial.log中查看虚拟机启动阶段发生了什么。9.4 统一管理启动脚本QEMU 参数较多不建议每次手敲。建议把启动命令写成脚本放到项目目录中例如start-vm.sh#!/bin/bash qemu-system-x86_64 \ -m 4096 \ -smp 4 \ -drive filelinux-test.qcow2,formatqcow2,ifvirtio \ -netdev user,idnet0,hostfwdtcp::2222-:22 \ -device virtio-net-pci,netdevnet0 \ -enable-kvm \ $以后启动虚拟机只需要执行./start-vm.sh额外参数也可以追加传递。9.5 注意生产环境安全在服务器上使用 QEMU KVM 时建议不随意把端口转发暴露到公网。使用独立网桥和虚拟网络隔离不同业务。定期备份重要磁盘镜像和快照。对虚拟机镜像文件设置合理的文件权限避免其他用户直接读取。生产环境优先使用 libvirt/virsh 管理虚拟机而不是零散的手动脚本。9.6 区分开发环境与生产环境QEMU 作为一个功能强大的模拟器/虚拟化工具开发环境和生产环境的使用策略完全不同。开发环境可以灵活使用 TCG 跨架构模拟做功能验证生产环境则必须使用 KVM 硬件加速并通过 libvirt 做生命周期管理、资源限额和故障恢复。两者不要混为一谈。10. 总结与动手实践建议如果你刚开始接触 QEMU建议按下面顺序做几个小实验逐步熟悉它的运行方式在 x86 宿主机上安装 QEMU用qemu-img创建一个 qcow2 磁盘安装一个最小化的 Linux 系统。开启 KVM 加速对比一下同样命令在 TCG 和 KVM 模式下的安装速度差异。使用-netdev user和端口转发从宿主机 SSH 登录虚拟机。下载一个 ARM64 或 RISC-V 的 Linux 内核和 rootfs用qemu-system-aarch64或qemu-system-riscv64启动体验跨架构模拟。给磁盘打快照破坏系统后尝试还原理解快照的用法。做完这几个实验QEMU 的基本使用就会比较熟练了。之后再深入学习 libvirt、云镜像定制、内核调试等内容就会顺畅很多。QEMU 是一个值得长期投入学习的工具尤其是做 Linux 开发、嵌入式开发和虚拟化方向的同学。希望这篇文章能帮你理清思路快速上手。如果你在实践过程中遇到其他问题欢迎留言交流一起讨论排错经验。
返回列表