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

在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系统中,防火墙是保护系统安全的关键组件,它通过控制网络流量来阻止未授权访问,除非在测试环境、内网隔离或特定调试需求下,否则强烈不建议永久关闭防火墙,以下提供详细操作指南,涵盖主流发行版(CentOS/RHEL、Fedora、Ubuntu/Debian),并强调安全风险,风险警示:关闭防火墙将使系统暴……

    2025年7月7日
    8000
  • 如何退出Linux命令行?新手必学实用方法

    在Linux系统中,“退出命令行”可能涉及多种场景,比如退出当前终端会话、关闭远程连接、返回图形界面或完全关闭系统等,不同场景对应的操作方式不同,需要根据具体情况选择合适的方法,以下从常见场景出发,详细说明Linux命令行的退出方法,并附操作总结表格及常见问题解答,退出当前终端会话(本地Shell)普通退出:e……

    2025年8月22日
    4200
  • 如何删除Linux子目录下的文件?

    在Linux系统中,删除子目录文件是日常运维和开发中常见的操作,但不同场景需要选择不同的命令和方法,以确保操作安全且高效,以下是详细的操作指南,涵盖常用命令、参数说明及注意事项,基础删除命令:rm 与 rmdirrm 命令:通用删除工具rm 是最常用的删除命令,支持删除文件、目录(需配合参数),核心参数如下……

    2025年10月6日
    3300
  • pxelinux.0如何实现网络启动?

    pxelinux.0 是 Syslinux 项目中的核心网络引导文件,用于 PXE(预启动执行环境)启动流程,它存储在 TFTP 服务器上,当客户端通过网卡启动时,会从服务器加载该文件,进而读取配置文件(如 pxelinux.cfg/default)决定启动选项(如加载 Linux 内核、Live CD 镜像等……

    2025年6月17日
    8400
  • Linux系统如何正确挂载exfat格式分区?

    Linux系统默认可能不支持exfat文件系统,因为exfat有专利限制,早期Linux内核未集成其开源驱动,尽管后期专利到期后内核已支持,但多数发行版仍需手动安装工具包才能实现挂载,exfat是微软开发的文件系统,广泛用于U盘、SD卡等移动存储设备,因其支持大容量文件和分区,且兼容Windows和macOS……

    2025年8月25日
    5800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信