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

news/2025/2/24 19:01:00

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.niftyadmin.cn/n/5864727.html

相关文章

《操作系统 - 清华大学》 8 -6:进程管理:进程状态变化模型

进程状态及其转换全解析 在操作系统中&#xff0c;进程有着特定的生命周期和多种状态变化。不考虑进程结束时&#xff0c;进程主要有三个基本状态。 运行态&#xff1a;即进程正在占用CPU执行任务。总结&#xff1a;运行态表示进程当前正在使用CPU。就绪状态&#xff1a;进程…

Windows 下 Visual Studio Code 常用快捷键指南

Windows 下 Visual Studio Code 常用快捷键指南 一、基础操作 命令与文件管理 Ctrl Shift P&#xff1a;打开命令面板&#xff08;支持所有操作&#xff0c;如安装插件、切换主题&#xff09;Ctrl P&#xff1a;快速搜索并打开文件Ctrl N&#xff1a;新建文件Ctrl W&am…

基于 DeepSeek + Gemeni 打造 AI+前端的多人聊天室

开源项目 botgroup.chat 介绍 AI 多人聊天室&#xff1a; 一个基于 React 和 Cloudflare Pages(免费一键部署) 的多人 AI 聊天应用&#xff0c;支持多个 AI 角色同时参与对话&#xff0c;提供类似群聊的交互体验。体验地址&#xff1a;https://botgroup.chat 开源仓库&#x…

[ TypeScript ] “undefined extends xxx“ 总是为 true 的 bug

版本号 "typescript": "^5.7.3", "unplugin": "^2.2.0",说明 在使用 unplugin 时 , 我定义插件的参数是 必填的, 使用时却是一个可空参数, 不传参也不会报错, (options?: UserOptions) > Return &#x1f632;&#x1f632;&…

Grouped-Query Attention(GQA)详解: Pytorch实现

Grouped-Query Attention&#xff08;GQA&#xff09;详解 Grouped-Query Attention&#xff08;GQA&#xff09; 是 Multi-Query Attention&#xff08;MQA&#xff09; 的改进版&#xff0c;它通过在 多个查询头&#xff08;Query Heads&#xff09;之间共享 Key 和 Value&am…

常见的“锁”有哪些?

悲观锁 悲观锁认为在并发环境中&#xff0c;数据随时可能被其他线程修改&#xff0c;因此在访问数据之前会先加锁&#xff0c;以防止其他线程对数据进行修改。常见的悲观锁实现有&#xff1a; 1.互斥锁 原理&#xff1a;互斥锁是一种最基本的锁类型&#xff0c;同一时间只允…

软件工程中涉及的多种图表

软件工程中涉及多种图表&#xff08;Diagram&#xff09;&#xff0c;它们用于不同阶段的需求分析、系统设计、实现和维护。以下是常见的图表类型及其之间的转化关系&#xff1a; 一、主要图表分类 1. 需求分析阶段 用例图&#xff08;Use Case Diagram&#xff09; 描述系统…

基于SpringBoot的校园消费点评管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…