如何快速创建空映像文件?

在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:分区并格式化

  1. 分区

    fdisk disk.img
    • n 创建新分区(默认参数)。
    • w 保存并退出。
  2. 关联为虚拟设备

    sudo losetup -fP disk.img  # 自动分配回环设备(如/dev/loop0)
    sudo partprobe /dev/loop0  # 更新分区表
  3. 格式化分区(以EXT4为例):

    sudo mkfs.ext4 /dev/loop0p1  # 格式化第一个分区

步骤3:挂载并复制文件

  1. 挂载分区:

    sudo mount /dev/loop0p1 /mnt
  2. 复制文件到挂载点:

    sudo cp -r /path/to/files/* /mnt/
  3. 卸载并释放资源:

    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

注意事项

  1. 权限问题:操作需 sudo,避免因权限失败。
  2. 空间充足:确保磁盘空间大于目标IMG文件。
  3. 安全备份:使用 dd 时务必确认输入/输出路径,防止数据丢失。
  4. 文件系统选择
    • Windows兼容:用 mkfs.vfat(FAT32)或 mkfs.ntfs
    • Linux系统:用 mkfs.ext4

典型应用场景

  • 树莓派镜像:将官方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

(0)
酷番叔酷番叔
上一篇 2025年7月24日 11:19
下一篇 2025年7月24日 11:35

相关推荐

  • linux系统如何看用户名

    Linux系统中,可通过whoami命令查看当前用户名,也可通过echo $USER

    2025年8月19日
    1500
  • Linux文件夹权限如何查看?

    核心查看命令ls -l 命令(最常用)操作步骤:ls -ld 文件夹名称 # 查看指定文件夹ls -l # 查看当前目录下所有项目的权限(含文件和文件夹)输出示例:drwxr-xr– 2 user group 4096 Jun 10 15:30 Documents权限字段解析:首字符 d:表示类型(d=文件夹……

    2025年7月8日
    3400
  • linux如何扩展根分区

    Linux 中扩展根分区,可使用分区管理工具(如 fdisk)调整分区大小

    2025年8月16日
    1200
  • Linux如何快速查找进程?

    ps 命令(最常用)作用:查看当前进程快照常用组合:ps -e | grep 关键词 # 模糊匹配进程名(如查找Nginx)ps -ef | grep 关键词 # 显示完整进程信息(含父进程PID)ps -eo pid,comm # 仅输出PID和进程名(简洁模式)示例:$ ps -e | grep nginx……

    2025年7月2日
    3000
  • Linux如何删除SSH密钥和符号链接?

    删除SSH密钥授权(常用场景)当需要撤销某SSH密钥对服务器的访问权限时,需从authorized_keys文件中移除对应公钥,操作步骤:登录目标服务器通过SSH连接服务器(若仍有访问权限):ssh username@server_ip编辑authorized_keys文件使用文本编辑器(如nano或vim)打……

    2025年8月7日
    1700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信