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

QEMU参数与使用

1. 基础参数

1.1 -h--help

qemu-system-x86_64 -h

含义:
显示 QEMU 的帮助信息,列出所有支持的命令行选项和参数。这是了解 QEMU 功能的最直接方式

1.2 -M

qemu-system-x86_64 -M pc
qemu-system-aarch64 -M virt

含义:
指定模拟的机器类型。不同的架构支持不同的机器类型。
pc :模拟标准的 x86_64 个人电脑,适用于运行 WindowsLinux 等操作系统。
virt :模拟 ARM 架构的虚拟化平台,常用于嵌入式开发。
q35 :模拟更现代的 x86_64 架构,支持更多高级功能。

1.3 -m

qemu-system-x86_64 -m 2048

含义:
为虚拟机分配内存大小。单位可以是 MB 或 GB(如 -m 2G 表示 2GB 内存)。
默认值: 128MB
建议: 根据虚拟机运行的操作系统和应用程序需求分配足够的内存。

1.4 -smp

qemu-system-x86_64 -smp 4

含义:
指定虚拟机的 CPU 核心数。
默认值: 1 核
建议: 根据宿主机的 CPU 核心数和虚拟机的需求分配核心数。例如,如果宿主机有 8 核,可以为虚拟机分配 2-4 核。

2. 存储设备参数

2.1 -hda

qemu-system-x86_64 -hda disk.img

含义:
指定第一个硬盘镜像文件,用于加载虚拟机的主硬盘镜像文件。-hda 是硬盘设备的别名,通常用于 IDE 硬盘。

2.2 -cdrom

qemu-system-x86_64 -cdrom ubuntu.iso

用途: 常用于加载操作系统安装镜像(如 ISO 文件),指定光盘镜像文件,以便从光盘启动虚拟机。

2.3 -drive

qemu-system-x86_64 -drive file=disk.img,format=raw
qemu-system-x86_64 -drive file=disk.qcow2,format=qcow2,if=virtio

含义:
更灵活地配置存储设备,支持多种格式和选项。
file=<镜像文件> :指定镜像文件路径。
format=<格式> :指定镜像文件格式,如 rawqcow2 等。
raw :原始格式,简单高效,但不支持快照。
qcow2 :支持快照和动态扩展,适合开发和测试。
if=<接口类型> :指定存储设备的接口类型,如 idevirtio 等。
ide :传统 IDE 接口,兼容性好。
virtio :高性能虚拟化接口,适用于虚拟机。

2.4 -boot

qemu-system-x86_64 -boot order=dc

含义:
指定虚拟机的启动顺序。
order=<设备顺序> :定义启动设备的优先级。
d :光盘(CD-ROM)。
c :硬盘(HDD)。
n :网络(PXE 启动)。
示例: -boot order=dc 表示先从光盘启动,如果光盘不可用,则从硬盘启动。

3. 网络参数

3.1 -net-netdev

qemu-system-x86_64 -net nic -net user

-net nic :添加一个虚拟网卡(默认是 e1000 网卡)。
-net user :使用用户模式网络,提供 NAT 功能,虚拟机可以访问外部网络,但外部无法访问虚拟机。
用途: 适用于简单的网络需求,如虚拟机访问互联网。

3.2 -net bridge

qemu-system-x86_64 -net nic -net bridge,br=br0

含义:
配置桥接网络,允许虚拟机与宿主机共享网络接口。
br=<网桥名称> :指定宿主机的网桥设备(如 br0 )。
用途: 适用于需要高性能网络的场景,虚拟机可以直接与外部网络通信。

4. 显示和交互参数

4.1 -nographic

qemu-system-x86_64 -nographic

含义:
禁用图形界面,所有输出通过终端显示。

4.2 -serial

qemu-system-x86_64 -serial stdio

含义:
配置串口设备。
stdio :将串口设备重定向到标准输入输出(终端)。

4.3 -monitor

qemu-system-x86_64 -monitor stdio

含义:
配置 QEMU 的监控接口,用于管理虚拟机。可以在运行时动态修改虚拟机的配置,如添加设备、保存快照等。
stdio :将监控接口重定向到标准输入输出,允许用户通过终端发送命令管理虚拟机。

5. 其他高级参数

5.1 -snapshot

qemu-system-x86_64 -drive file=disk.img -snapshot

含义:
以快照模式运行虚拟机,适用于临时测试。所有写入操作不会修改原始镜像文件,避免了修改原始镜像文件。

5.2 -enable-kvm

qemu-system-x86_64 -enable-kvm

含义:
启用 KVM 加速功能(仅限 Linux)。通过 KVM 提供硬件加速,可以显著提高虚拟机性能。
前提条件: 宿主机必须支持硬件虚拟化(如 Intel VT-xAMD-V )。

5.3 -kernel-initrd

qemu-system-aarch64 -kernel vmlinuz -initrd initrd.img -append "root=/dev/vda1"

含义:
用于启动 Linux 内核和初始化 RAM 盘。
-kernel <内核文件> :指定 Linux 内核文件。
-initrd <初始化 RAM 盘文件> :指定初始化 RAM 盘文件。
-append "<启动参数>" :传递启动参数给内核,如 root=/dev/vda1 指定根文件系统。

6.表格说明

参数含义
-h--help显示 QEMU 的帮助信息
-M <machine>指定模拟的机器类型
-m <size>分配虚拟机的内存大小
-smp <count>指定虚拟机的 CPU 核心数
-hda <file>指定第一个硬盘镜像文件
-cdrom <file>指定光盘镜像文件
-drive <options>配置存储设备
-boot <options>指定启动顺序
-net <options>-netdev <options>配置虚拟机的网络设备
-nographic禁用图形界面,仅通过串口输出
-serial <device>配置串口设备
-monitor <device>配置 QEMU 的监控接口
-snapshot以快照模式运行虚拟机
-enable-kvm启用 KVM 加速功能
-kernel <file>指定 Linux 内核文件
-initrd <file>指定初始化 RAM 盘文件
-append "<options>"向内核传递启动参数

7. 参数组合示例

示例 1:启动一个带有 ISO 文件的虚拟机

qemu-system-x86_64 -M pc -m 2048 -cdrom ubuntu.iso -boot order=d

解释:
-M pc :模拟标准 x86_64 个人电脑。
-m 2048 :分配 2048MB 内存。
-cdrom ubuntu.iso :将 ubuntu.iso 作为光盘设备。
-boot order=d :从光盘启动。

示例 2:启动一个 ARM 架构的虚拟机

qemu-system-aarch64 -M virt -kernel vmlinuz -initrd initrd.img -drive file=arm_disk.img,format=raw -append "root=/dev/vda1"

解释:
-M virt :模拟 ARM 架构的虚拟化平台。
-kernel vmlinuz :指定 Linux 内核文件。
-initrd initrd.img :指定初始化 RAM 盘文件。
-drive file=arm_disk.img,format=raw :指定硬盘镜像文件。
-append "root=/dev/vda1" :传递启动参数给内核。

示例 3:无图形界面运行虚拟机

qemu-system-x86_64 -nographic -serial stdio -drive file=disk.img

解释:
-nographic :禁用图形界面。
-serial stdio :将串口设备重定向到终端。
-drive file=disk.img :指定硬盘镜像文件。

示例 4:使用 KVM 加速运行虚拟机

qemu-system-x86_64 -enable-kvm -m 2048 -drive file=disk.img,format=qcow2 -smp 4

解释:
-enable-kvm :启用 KVM 加速。
-m 2048 :分配 2048MB 内存。
-drive file=disk.img,format=qcow2 :指定硬盘镜像文件,支持快照功能。
-smp 4 :分配 4 个 CPU 核心。

8. 注意事项

镜像格式选择:
raw 格式:简单高效,但不支持快照。
qcow2 格式:支持快照和动态扩展,适合开发和测试。
性能优化:
使用 -enable-kvm(Linux)-cpu host (其他平台)可以显著提高性能。
网络配置:
用户模式网络 -net user 适合简单场景,但性能较差。
桥接模式 -net bridge 适合需要高性能网络的场景。


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

相关文章:

  • 日语发音的节拍
  • 后台终端方法
  • Linux系统运行模式和链接
  • 大模型的未来已来
  • 【机器学习实战】kaggle背包价格预测(堆叠的实战用法)
  • 如何保持 mysql 和 redis 中数据的一致性?PegaDB 给出答案
  • 上课啦 | 2月17日软考高项【5月备考班】
  • MacOS使用PhpWebStudy搭建PHP开发环境
  • Express 中间件分类
  • 【Elasticsearch】监控与管理:集群健康检查
  • 双指针思想
  • 2.【BUUCTF】bestphp‘s revenge
  • RK3588开发板部署DeepSeek-R1-Distill-Qwen-1.5B的步骤及问题
  • DeepSeek介绍本地部署保姆级教程
  • STM32F407通过FSMC扩展外部SRAM和NAND FLASH
  • 城电科技| 光伏太阳花:让绿色能源随处绽放
  • 【RK3568】linux嵌入式教程——点亮LED
  • 基于Docker-compose的禅道部署实践:自建MySQL与Redis集成及故障排查指南
  • DeepSeek大模型响应速度优化策略
  • AWS SES 邮件服务退信/投诉处理与最佳实践指南