尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

QEMU使用方法

QEMU使用方法
📅 发布时间:2026/7/3 6:51:17

一、下载qemu

qemu是一个模拟器,可以模拟运行x86、arm、ppc、mips、riscv等CPU,可以添加自定义开发板和硬件设备(如pcie设备),与vmware不同的是vmware是一个虚拟运行环境,一个是模拟器,一个是虚拟运行环境。

下载qemu使用如下命令:
git clone https://gitlab.com/qemu-project/qemu.git

二、编译qemu:

# cd qemu
# ./configure --target-list=x86_64-softmmu # 配置,只编译x86系统模拟
# make -j$(nproc) # 开始编译,-j参数加快速度

三、添加开发板

如下是在qemu种添加一个AST2600(ARM Cortex-A7核)芯片的pf12开发板示例:

1、在hw/arm/aspeed.c下添加开发版描述:

// 在 hw/arm/aspeed.c 文件中 static const TypeInfo aspeed_machine_types[] = { // ... 已有的 Machine 定义,如 "ast2600-evb" { .name = MACHINE_TYPE_NAME("pf12"), // 命令行中使用的机器名 .parent = TYPE_ASPEED_MACHINE, // 继承自 AST SoC 的 Machine 父类 .class_init = aspeed_machine_pf12_class_init, // 初始化函数 }, // ... };

2、实现class_init函数,该函数需实现如下内容:

  • 指定 CPU 型号:设置开发板使用的 CPU 核心类型;
  • 定义内存布局:配置 RAM 的起始地址和大小;
  • 添加外设:通过函数调用将 UART、I2C、GPIO、MMC、网卡等外设挂载到总线上,并分配它们的内存地址和中断号;
  • 配置启动流程:指定固件(如 U-Boot)的加载地址和启动方式。

四、添加硬件

1、在hw/misc/或hw/char/创建test-device.c文件:

1、定义设备状态结构体 // 假设我们的设备叫 "amd.xor-test" typedef struct XorTestState { SysBusDevice parent_obj; // 父对象,必须放在第一位 MemoryRegion iomem; // 设备的MMIO内存区域 qemu_irq irq; // 中断引脚 uint32_t regs[2]; // 两个32位寄存器 } XorTestState; 2、实现寄存器的读写逻辑 static const MemoryRegionOps xor_test_ops = { .read = xor_test_read, // 读操作函数 .write = xor_test_write, // 写操作函数 .endianness = DEVICE_LITTLE_ENDIAN, // ... }; 3、实现设备初始化和复位函数 static const TypeInfo xor_test_info = { .name = TYPE_XOR_TEST, // 设备类型名称,如 "amd.xor-test" .parent = TYPE_SYS_BUS_DEVICE, // 父类,通常为系统总线设备 .instance_size = sizeof(XorTestState), .class_init = xor_test_class_init, .instance_init = xor_test_init, }; 4、注册设备类型 static void xor_test_register_types(void) { type_register_static(&xor_test_info); } type_init(xor_test_register_types) // 注册宏

2、在hw/misc/Makefile.objs或hw/char/Makefile.objs添加如下:

obj-$(CONFIG_MY_DEVICE) += test-device.o

3、启动 QEMU 时:
-device <设备名> # 添加设别
-device <设备名>,help # 查看设备支持的属性
-device <设备名>,<参数1=val1>,<参数2=val2>,<参数3=val3> # 向设备传参

五、启动qemu

gdb --args \ # 在 GDB 中启动 QEMU,用于调试 QEMU 进程本身 qemu-system-x86_64 \ # 启动 x86_64 架构的系统模拟器 --enable-kvm \ # 启用 Linux 内核 KVM 加速,利用宿主 CPU 硬件虚拟化提升性能 -boot c \ # 从硬盘(disk C)引导系统,对应 -drive 中的第一个磁盘 -drive format=qcow2,file=$UBUNTU/ubuntu-22.04-amd64.img \ # 定义系统盘,格式为 qcow2(支持快照、压缩) -drive format=raw,file=$UBUNTU/disk_shared.ext4 \ # 定义第二块硬盘,格式为裸设备 raw,通常用作数据盘 -m 8G \ # 分配 8GB 客户机内存 -smp 4 \ # 为客户机配置 4 个 CPU 核心 -nic user,hostfwd=tcp::$12345-:22 \ # 用户态网络堆栈,将宿主机 12345 端口转发到虚拟机 22 端口(SSH) -nographic \ # 不使用图形界面,将串口/控制台重定向到当前终端 -device edu,edu_id=0,bar_size=1G,offset=0x10000/0x20000 # 启动edu模块,这是一个教学用的开源pcie模块,edu_id/bar_size/offset为传入模块的参数 -device test_device,device_id=0,bar_size=1G,offset=0x10000/0x20000 # 启动test_device模块,这是个自定义模块,device_id/bar_size/offset为传入模块的参数

六、常用命令

  • 查看支持的cpu型号:

qemu-system-x86_64 -cpu help
qemu-system-arm -cpu help
qemu-system-aarch64 -cpu help
qemu-system-ppc -cpu help
qemu-system-ppc64 -cpu help
qemu-system-mips -cpu help
qemu-system-riscv32 -cpu help
qemu-system-riscv64 -cpu help

  • 查看支持的开发板:

qemu-system-x86_64 -M help
qemu-system-arm -M help
qemu-system-aarch64 -M help
qemu-system-ppc -M help
qemu-system-ppc64 -M help
qemu-system-mips -M help
qemu-system-riscv32 -M help
qemu-system-riscv64 -M help

相关新闻

  • ASC0101S自动方向感应架构深度解析:传输门、单稳态加速器与无方向控制的双向电平转换
  • codex对接1688运费,图搜实现选品
  • 从传统零食到健康赛道:马大姐「多谷时代」的技术破局路径分析

最新新闻

  • Source Han Serif CN 字体工程化实践:从 TTF 子集到多平台部署
  • 同样是谷歌新站,为什么别人3个月有排名有流量有订单,你还在等收录!
  • 英雄联盟Akari助手:免费开源游戏效率工具完整使用指南,快速提升游戏表现
  • 深度解密:rtl8812AU_8821AU_linux - 802.11ac无线网卡驱动技术实战指南
  • 大模型微调(Fine-tuning)到底是个啥?一篇讲透全量微调、PEFT与LoRA!(算法篇)
  • 新手向 OpenClaw 小龙虾部署教程,Win11 环境零配置运行(含安装包)

日新闻

  • JMeter接口测试实战:从核心元件到复杂场景构建
  • Java Applet版刽子手游戏源码:含完整项目结构、吊杆绘图与胜负逻辑
  • 使用Apache JMeter对RoadRunner PHP应用进行性能测试与调优指南

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号