在Linux系统中制作.img
文件(磁盘映像文件)是备份数据、创建可启动介质或构建虚拟磁盘的常见需求,以下是详细的操作方法,涵盖多种场景:
基础概念
- IMG文件:本质是磁盘的二进制镜像,可包含分区表、文件系统及数据。
- 常见用途:系统备份、创建虚拟磁盘、制作可启动设备(如树莓派镜像)。
- 核心工具:
dd
,fdisk
,mkfs
,losetup
,genisoimage
(用于ISO,但可转IMG)。
制作空白IMG文件(未格式化)
方法1:使用 dd
创建空文件
dd if=/dev/zero of=output.img bs=1M count=1024
- 参数说明:
if=/dev/zero
:输入源(零填充)。of=output.img
:输出文件名。bs=1M
:块大小(1MB)。count=1024
:块数量(总大小 = 1M × 1024 = 1GB)。
方法2:使用 fallocate
(更高效)
fallocate -l 1G output.img # 直接分配1GB空间
制作带文件系统的IMG文件
步骤1:创建空白IMG文件
fallocate -l 1G disk.img
步骤2:分区并格式化
-
分区:
fdisk disk.img
- 按
n
创建新分区(默认参数)。 - 按
w
保存并退出。
- 按
-
关联为虚拟设备:
sudo losetup -fP disk.img # 自动分配回环设备(如/dev/loop0) sudo partprobe /dev/loop0 # 更新分区表
-
格式化分区(以EXT4为例):
sudo mkfs.ext4 /dev/loop0p1 # 格式化第一个分区
步骤3:挂载并复制文件
-
挂载分区:
sudo mount /dev/loop0p1 /mnt
-
复制文件到挂载点:
sudo cp -r /path/to/files/* /mnt/
-
卸载并释放资源:
sudo umount /mnt sudo losetup -d /dev/loop0 # 删除回环设备
从目录创建IMG文件(无需分区)
适用于单分区映像(如引导镜像):
# 格式化为FAT32(常见于UEFI启动) sudo mkfs.vfat boot.img # 挂载并复制文件 sudo mount boot.img /mnt sudo cp -r /boot/efi/* /mnt/ # 复制UEFI启动文件 sudo umount /mnt
备份现有磁盘为IMG文件
sudo dd if=/dev/sdX of=backup.img bs=4M status=progress
- 警告:
if=/dev/sdX
必须是物理磁盘(如/dev/sda
),误操作会覆盖数据!- 添加
conv=sync,noerror
可忽略读取错误(适用于损坏磁盘)。
转换其他格式为IMG
ISO 转 IMG
cp input.iso output.img # 直接重命名(因ISO本质是IMG)
或精确转换:
dd if=input.iso of=output.img bs=4M
压缩与解压
- 压缩:
gzip -9 disk.img # 生成 disk.img.gz
- 解压:
gzip -d disk.img.gz
验证与检查
- 检查文件系统:
sudo fsck /dev/loop0p1
- :
sudo mount -o loop disk.img /mnt # 直接挂载IMG文件 ls /mnt
注意事项
- 权限问题:操作需
sudo
,避免因权限失败。 - 空间充足:确保磁盘空间大于目标IMG文件。
- 安全备份:使用
dd
时务必确认输入/输出路径,防止数据丢失。 - 文件系统选择:
- Windows兼容:用
mkfs.vfat
(FAT32)或mkfs.ntfs
。 - Linux系统:用
mkfs.ext4
。
- Windows兼容:用
典型应用场景
- 树莓派镜像:将官方OS写入IMG后刷入SD卡。
- 虚拟机磁盘:直接挂载IMG作为虚拟硬盘(QEMU/VirtualBox)。
- 系统恢复:备份整个磁盘到IMG,故障时还原。
通过上述方法,可灵活创建符合需求的IMG文件,操作前务必理解命令含义,关键步骤建议先在测试环境验证。
引用说明基于 GNU Coreutils、util-linux 及 Linux 内核文档中的工具手册(如
dd(1)
,fdisk(8)
,mkfs(8)
),具体参数请通过man [命令]
查阅官方说明。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8483.html