制作 QEMU 镜像(虚拟磁盘)的方法主要分为两种:创建空白镜像(用于后续安装操作系统)和基于现有文件 / 目录生成镜像(如打包文件系统)。以下是详细步骤,涵盖常见场景和工具。
1. 创建空白镜像(最常用,安装系统)
QEMU 提供 qemu-img 工具创建空白镜像,支持多种格式(qcow2 推荐,支持动态扩容、快照等功能)。
1.1 基础命令(创建空白镜像)
# 创建 qcow2 镜像格式(动态扩容,初始体积小,最大容量 20GB)
qemu-img create -f qcow2 /path/to/your/image.qcow2 20G
# 其他格式(按需选择):
# raw 格式(原生格式,性能略好,不支持快照,体积固定)
qemu-img create -f raw /path/to/your/image.raw 20G
# vmdk 格式(兼容 VMware)
qemu-img create -f vmdk /path/to/your/image.vmdk 20G
参数说明:
-f qcow2:指定镜像格式(qcow2是 QEMU 原生推荐格式,动态增长,节省空间)。20G:指定镜像最大容量(实际占用空间随数据增加而增长,不会一开始就占满 20GB)。
1.2 使用空白镜像安装操作系统
创建空白镜像后,需通过 ISO 镜像启动虚拟机并安装系统:
# 以 x86_64 架构为例,从 ISO 安装系统到空白镜像
qemu-system-x86_64 \
-hda /path/to/your/image.qcow2 \ # 空白镜像(目标磁盘)
-cdrom /path/to/os-install.iso \ # 操作系统安装镜像(如 Ubuntu ISO)
-m 2048 \ # 分配 2GB 内存
-smp 2 \ # 2 核 CPU
-enable-kvm # 启用 KVM 加速(可选,提升安装速度)
启动后按提示完成系统安装,安装完成后,镜像即可直接用于启动虚拟机。
2. 基于现有文件 / 目录生成镜像(打包文件系统)
若需将本地文件或目录打包成 QEMU 镜像(如嵌入式系统的根文件系统),步骤如下:
2.1 创建固定大小的 raw 镜像(先分配空间)
# 创建 1GB 的 raw 格式镜像(用于存放文件系统)
qemu-img create -f raw /path/to/filesystem.img 1G
2.2 格式化镜像并挂载(需 root 权限)
将镜像格式化为 ext4、FAT 等文件系统,然后挂载到本地目录,以便复制文件:
# 1. 格式化镜像为 ext4 文件系统(根据需求选择 ext3、fat32 等)
sudo mkfs.ext4 /path/to/filesystem.img
# 2. 创建挂载点目录
mkdir -p ./mnt
# 3. 挂载镜像到本地目录(loop 设备模拟磁盘)
sudo mount -o loop /path/to/filesystem.img ./mnt
# 4. 复制文件到镜像中(例如复制根文件系统内容)
sudo cp -r /path/to/your/files/* ./mnt/
# 5. 卸载镜像(完成后必须执行)
sudo umount ./mnt
2.3 (可选)转换为 qcow2 格式(节省空间)
raw 格式体积固定,可转换为 qcow2 动态格式:
qemu-img convert -f raw -O qcow2 /path/to/filesystem.img /path/to/filesystem.qcow2
3. 制作可启动的定制化镜像(以 Linux 为例)
若需制作包含内核、 initramfs 和根文件系统的可启动镜像(如嵌入式设备),步骤如下:
3.1 准备组件
-
编译好的 Linux 内核(如
bzImage或vmlinuz)。 -
根文件系统镜像(如上述步骤生成的
filesystem.qcow2)。 -
(可选)initramfs(初始化内存文件系统)。
3.2 启动命令(直接指定内核和镜像)
无需安装系统,直接通过内核启动镜像:
qemu-system-x86_64 \
-kernel /path/to/bzImage \ # 内核文件路径
-hda /path/to/filesystem.qcow2 \ # 根文件系统镜像
-append "root=/dev/sda rw console=ttyS0" \ # 内核参数(指定根设备为 /dev/sda,允许读写)
-serial stdio \ # 将虚拟机串口输出到终端(方便调试)
-m 512 \
-enable-kvm
4. 镜像管理常用命令
-
查看镜像信息:
qemu-img info /path/to/image.qcow2 -
扩容镜像(qcow2/raw 支持):
# 将镜像最大容量扩容到 30GB(需先卸载镜像内的文件系统) qemu-img resize /path/to/image.qcow2 +10G # 增加 10GB -
创建快照(qcow2 支持):
qemu-img snapshot -c snap1 /path/to/image.qcow2 # 创建名为 snap1 的快照 qemu-img snapshot -l /path/to/image.qcow2 # 列出所有快照
5. 注意事项
-
格式选择:日常使用优先选
qcow2(动态扩容、快照支持);需兼容其他虚拟化软件(如 VMware)选vmdk。 -
权限问题:挂载镜像和复制文件时需用
sudo,避免文件权限错误导致虚拟机启动失败。 -
嵌入式场景:若制作嵌入式设备镜像(如 ARM 架构),需确保内核、设备树(.dtb)与镜像匹配(参考前文 ARM 启动命令)。
1926

被折叠的 条评论
为什么被折叠?



