dd命令最直接通用,可基于/dev/zero生成任意大小raw镜像:如dd if=/dev/zero of=disk.img bs=1m count=2048创建2gb文件;稀疏文件用truncate -s 10g disk.img实现。

用 dd 命令最直接、最通用。它能从零生成任意大小的原始(raw)镜像文件,不依赖额外工具,兼容所有 Linux 发行版和架构(x86/ARM)。
用 dd 创建指定大小的空镜像文件
dd 是底层块复制工具,把 /dev/zero(无限空字节流)按需截取,写成一个固定大小的普通文件:
- 创建一个 2GB 的镜像:
dd if=/dev/zero of=disk.img bs=1M count=2048 - 创建一个 10GB 的稀疏镜像(实际只占几 KB,支持“按需分配”):
truncate -s 10G disk.img - 验证结果:
ls -lh disk.img 和 du -h disk.img(稀疏文件会显示占用小、逻辑大)
格式化镜像为可挂载文件系统
刚生成的镜像只是空白数据块,需写入文件系统才能使用:
- 用 mkfs 给它加上 ext4:
mkfs.ext4 -F disk.img - 创建挂载点并挂载(需 root):
mkdir /mnt/mydisk && mount -o loop disk.img /mnt/mydisk - 写入测试文件后卸载:
echo "hello" > /mnt/mydisk/test.txt && umount /mnt/mydisk
进阶:带分区表的镜像(更接近真实磁盘)
若需模拟含 MBR/GPT 分区的物理盘(如用于虚拟机安装),可分三步操作:
- 先创建足够大的镜像(例如 8GB):
dd if=/dev/zero of=disk-part.img bs=1G count=8 - 用 fdisk 或 parted 划分分区(如建一个主分区 /dev/loop0p1):
fdisk disk-part.img(交互式操作,输入 n→p→回车×3→w) - 关联镜像到 loop 设备并格式化分区:
losetup -Pf disk-part.img && mkfs.ext4 /dev/loop0p1 && losetup -d /dev/loop0
其他常用格式转换(如需 VMDK、QCOW2)
原始镜像(.img)是通用基础,云平台或 VMware 常需特定格式:
- 转为 QCOW2(支持快照、压缩):
qemu-img convert -f raw -O qcow2 disk.img disk.qcow2 - 转为 VMDK(VMware 兼容):
qemu-img convert -f raw -O vmdk disk.img disk.vmdk - 检查格式信息:
qemu-img info disk.qcow2











