当前位置: 首页 > article >正文

QEMU 的详细介绍、安装指南、配置说明

QEMU:开源虚拟化技术的万能引擎

一、QEMU 简介

QEMU 是一款开源的 硬件虚拟化引擎,支持 x86、ARM、MIPS 等多种架构的模拟。它可以运行完整的操作系统(如 Linux、Windows、macOS)或单个程序,无需依赖目标硬件。其核心优势包括:

  • 跨平台支持:可在 Linux、Windows、macOS 上运行
  • 硬件抽象:通过动态翻译技术模拟 CPU、内存、I/O 设备
  • 灵活扩展:支持 KVM、Xen 等内核级虚拟化集成
  • 轻量级:无需额外硬件即可运行精简版操作系统

二、安装指南

1. 系统要求

操作系统版本要求内存建议
LinuxUbuntu 20.04+/Debian 11+≥4GB RAM
Windows10/11 (64位)≥8GB RAM
macOS10.15+≥8GB RAM

2. 安装步骤

Linux (Ubuntu/Debian)

# 安装 QEMU 和 KVM 加速
sudo apt update
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils

# 验证安装
qemu-system-x86_64 --version

Windows

# 下载 QEMU Windows 版本
https://www.qemu.org/download/

# 运行安装程序并完成向导

macOS

# 使用 Homebrew 安装
brew install qemu

# 验证安装
qemu-system-x86_64 -version

三、基础配置

1. 创建虚拟机配置文件

使用 qemu-img 创建磁盘镜像:

# 创建 20GB 的 qcow2 格式磁盘
qemu-img create -f qcow2 disk.img 20G

# 创建虚拟机配置文件(XML)
virsh define <<EOF
<domain type='kvm'>
  <name>myvm</name>
  <memory unit='KiB'>4194304</memory>
  <vcpu placement='static'>2</vcpu>
  <os type='linux'>
    <arch>x86_64</arch>
    <kernel>/boot/vmlinuz-$(uname -r)</kernel>
    <initrd>/boot/initrd.img-$(uname -r)</initrd>
    <rootfs dev='disk' mode='readonly'/>
  </os>
  <devices>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='disk.img'/>
      <target dev='vda' bus='virtio'/>
    </disk>
    <interface type='network'>
      <model type='virtio'/>
      <bridge name='br0'/>
    </interface>
  </devices>
</domain>
EOF

2. 启动虚拟机

# 使用 virsh 启动虚拟机
virsh start myvm

# 或直接使用 QEMU 命令行
qemu-system-x86_64 \
  -m 4096 \  # 内存大小(MB)
  -smp 2 \    # CPU 核心数
  -drive file=disk.img,format=qcow2 \  # 磁盘镜像
  -net bridge,br=br0 \  # 网络桥接
  -boot d \  # 直接启动硬盘

四、基本使用

1. 安装操作系统

Linux (Ubuntu) 示例

# 创建安装介质(ISO 文件)
qemu-img create -f raw install.iso 4G

# 下载 Ubuntu ISO
wget -O install.iso http://releases.ubuntu.com/22.04/ubuntu-22.04.1-live-amd64.iso

# 启动安装进程
qemu-system-x86_64 \
  -m 4096 \
  -drive file=install.iso,format=raw \
  -cdrom install.iso \
  -boot d

Windows 示例

# 创建 Windows PE 启动介质
qemu-img create -f raw winpe.iso 1G

# 下载 WinPE ISO
wget https://github.com/mirror/winget-pkgs/blob/main/microsoft-edge/stable/edge-112.0.167.63/win10-x64-enterprise.iso

# 启动安装
qemu-system-x86_64 \
  -m 8192 \
  -drive file=winpe.iso,format=raw \
  -cdrom winpe.iso \
  -boot d

2. 运行单个程序

# 运行 Linux 可执行文件(需交叉编译)
qemu-aarch64 ./myapp

# 运行 Windows EXE(需 Wine 或 Windows 支持)
qemu-w64 ./myapp.exe

五、高级配置

1. 快照与恢复

# 创建快照
virsh snapshot-create myvm --name snap1

# 恢复快照
virsh snapshot-revert myvm snap1

2. 远程访问

VNC 显示

# 启动虚拟机并启用 VNC
qemu-system-x86_64 \
  -m 4096 \
  -smp 2 \
  -vnc :1 \  # 监听 VNC 端口 5901
  -drive file=disk.img,format=qcow2

RDP 连接

# 修改虚拟机配置启用 RDP
virsh setinterface myvm network --type=rdp

# 连接 RDP 端口
mstsc /v:localhost:3389

3. CPU 模拟模式

完全模拟(慢速但兼容性好)

qemu-system-x86_64 -cpu core2duo

硬件加速(KVM 需要 Linux 内核支持)

qemu-system-x86_64 -enable-kvm

六、典型应用场景

1. 跨平台开发测试

  • 在 Linux 上运行 Windows 版软件进行兼容性测试
  • 在 macOS 上模拟 ARM 架构设备(如 Raspberry Pi)

2. 安全研究

  • 沙盒化运行可疑程序(隔离恶意软件)
  • 分析勒索软件行为(无需物理接触目标设备)

3. 教育与演示

  • 展示操作系统启动过程(通过 QEMU 的 -d 调试模式)
  • 模拟硬件故障(如内存泄漏、磁盘损坏)

七、故障排除

问题现象解决方案
虚拟机无法启动检查磁盘镜像路径和内核版本
网络连接失败确认桥接网络已配置且防火墙开放
内存不足增加 -m 参数值(如 qemu-system-x86_64 -m 8192
CPU 过热关闭 3D 加速或降低模拟频率

八、学习资源

https://wiki.qemu.org/Main_Page

https://www.linux-tec.com/how-to-install-and-use-qemu-on-ubuntu/

https://github.com/qemu/qemu/issues

总结

QEMU 是开源世界最强大的虚拟化工具之一,无论是开发者、学生还是安全研究人员,都能通过它实现硬件无关的计算环境。掌握 QEMU 的安装、配置和使用技巧,能够大幅提升多平台开发和测试效率。建议从基础命令行操作入手,逐步探索 KVM 集成和高级调试功能。

 


http://www.kler.cn/a/558691.html

相关文章:

  • *PyCharm 安装教程
  • 0x06 倍增
  • FMCW MIMO雷达对人的跟踪的定量评估
  • 【CVPR2024-工业异常检测】PromptAD:与只有正常样本的少样本异常检测的学习提示
  • Cannot deserialize instance of java.lang.String out of START_ARRAY token
  • 【设计模式】【创建型模式】工厂方法模式(Factory Methods)
  • Content-Type类型总结(安全)
  • List 接口中的 sort 和 forEach 方法
  • 医疗AI领域中GPU集群训练的关键技术与实践经验探究(上)
  • 《2024工业控制系统网络安全态势白皮书》
  • 第17篇:网络请求与Axios集成
  • Linux——安装Git的方法
  • 【EB-03】 AUTOSAR builder与EB RTE集成
  • WPS接入私有化DeepSeek大语言模型
  • 《西湖绸》(仿郭敬明「蜀绣」)
  • 一题学会Java入门语法(需C\C++基础)
  • Redisson分布式锁java语法, 可重入性实现原理 ,(还有可重试性,超时不释放,主从一致性)
  • Orcale、MySQL中左连接,右连接,内连接的区别以及运用场景系列02(基础语法)
  • 一文理解Encoder,Decoder,Head之间的关系
  • eclipse 运行工程报错in thread “main“ java.lang.OutOfMemoryError: Java heap space