在Linux系统中制作img镜像文件是一项常见且实用的操作,广泛应用于系统部署、存储设备备份、嵌入式开发等领域,img文件是一种磁盘镜像格式,能够完整复制存储设备的所有数据,包括分区表、引导信息以及文件系统等,本文将详细介绍在Linux环境下制作img镜像文件的多种方法、操作步骤及注意事项,帮助读者掌握这一技能。

使用dd命令制作基础镜像
dd命令是Linux中最基础的磁盘操作工具,能够直接读取和写入原始数据,是制作img镜像的首选方法,其基本语法为dd if=输入文件 of=输出文件 bs=块大小 count=块数量,其中if参数指定源设备或文件,of参数指定目标img文件,bs参数设置每次读取的块大小(建议使用1M以提高效率),count参数限制读取的块数量(可选)。
以制作SD卡镜像为例,首先使用lsblk或fdisk -l命令识别SD卡设备名(假设为/dev/sdb),然后执行以下命令:
sudo dd if=/dev/sdb of=sdk.img bs=1M status=progress
命令中的status=progress参数可实时显示复制进度,制作完成后,生成的sdk.img文件将完整包含SD卡的所有数据,若需制作特定大小的镜像,可使用count参数控制数据量,例如制作1GB的镜像:
sudo dd if=/dev/zero of=custom.img bs=1M count=1024
使用ddrescue制作损坏设备的镜像
当源设备存在坏道时,普通dd命令可能会中断,此时可使用ddrescue工具,它是GNU提供的数据恢复工具,能够智能跳过错误扇区并继续复制,最终生成可用的镜像文件,首先需安装ddrescue(Ubuntu/Debian系统可通过sudo apt install gddrescue命令安装),然后执行:

sudo ddrescue -f /dev/sdk sdk.img sdk.log
-f参数强制覆盖输出文件,sdk.log日志文件会记录错误位置,便于后续恢复,若需重试读取错误区域,可运行:
sudo ddrescue -d -r3 -f /dev/sdk sdk.img sdk.log
-d使用直接访问模式,-r3设置重试次数为3次。
使用parted和mkfs构建分区镜像
若需制作包含分区的自定义镜像,可先通过parted工具创建分区表,再使用mkfs格式化文件系统,最后挂载并写入数据,以下步骤以创建1GB镜像并分为两个分区为例:
- 创建原始镜像文件:
fallocate -l 1G disk.img
- 使用parted分区:
sudo parted -s disk.img mklabel msdos sudo parted -s disk.img mkpart primary ext4 1MiB 512MiB sudo parted -s disk.img mkpart primary ext4 512MiB 100%
- 创建设备映射文件:
sudo losetup -fP disk.img sudo losetup -j disk.img
假设映射后的设备为/dev/loop0p1和/dev/loop0p2。

- 格式化分区并挂载:
sudo mkfs.ext4 /dev/loop0p1 sudo mkfs.ext4 /dev/loop0p2 sudo mkdir -p /mnt/{part1,part2} sudo mount /dev/loop0p1 /mnt/part1 sudo mount /dev/loop0p2 /mnt/part2 - 向分区写入数据后,卸载并清理设备映射:
sudo umount /mnt/{part1,part2} sudo losetup -d /dev/loop0
验证镜像文件的完整性
制作完成后,需验证img文件是否与源设备一致,对于dd命令生成的镜像,可使用cmp命令比较源设备与镜像文件的前几MB数据:
sudo cmp /dev/sdk sdk.img --bytes=1M
若输出为空,则表示数据一致,对于分区镜像,可通过fdisk -l disk.img检查分区表是否正确,或使用file命令查看文件系统类型:
file disk.img
注意事项
- 设备识别:操作前务必确认源设备名称(如/dev/sdb),避免误写系统分区导致数据丢失。
- 权限问题:dd命令需要root权限,确保使用
sudo执行。 - 存储空间:目标img文件大小需与源设备容量匹配,确保磁盘有足够剩余空间。
- 性能优化:使用
bs=1M可显著提高dd命令的复制速度,避免使用默认的512字节块大小。 - 数据安全:重要数据建议在制作镜像前进行备份,并验证镜像文件的可用性。
通过以上方法,用户可根据实际需求选择合适的工具制作img镜像文件,无论是简单的整盘复制,还是复杂的分区镜像构建,Linux提供的命令行工具都能高效完成任务,掌握这些技能不仅能提升系统管理效率,也为数据备份与迁移提供了可靠保障。



















