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

在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组播通信如何实现?

    组播基础概念组播(Multicast)是一种单点发送、多点接收的网络通信方式,地址范围是 0.0.0 – 239.255.255.255,Linux通过内核协议栈和网络工具实现组播支持,环境检查与准备确认内核支持组播cat /proc/net/igmp # 查看IGMP协议状态(IPv4)cat /proc/n……

    2025年8月3日
    31900
  • Linux打开文件有哪些方法?

    命令行打开文件(终端操作)查看文本文件内容cat 命令(显示全部内容)cat filename.txt # 直接输出文件内容适用场景:快速查看小文件,less 命令(分页浏览,推荐)less filename.txt # 按空格翻页,按 `q` 退出优势:支持上下滚动、搜索(输入 ),more 命令(基础分页……

    2025年6月14日
    25200
  • linux如何添加组

    Linux 中,可使用 groupadd 命令添加组,如 `# groupadd

    2025年8月10日
    22300
  • Linux访问URL有哪些高效方法?

    命令行工具(高效灵活)适用于服务器管理、自动化脚本或快速测试场景,curl 工具功能:传输数据(支持HTTP/HTTPS/FTP等),显示网页源码或API响应,基础命令: curl https://example.com常用参数:-o 文件名到文件(如 curl -o page.html https://exa……

    2025年7月4日
    31000
  • Linux如何开启SNMP服务?

    在Linux系统中开启SNMP(简单网络管理协议)服务,通常用于网络设备监控、性能数据采集等场景,以下是详细步骤,涵盖主流发行版(如CentOS/RHEL和Ubuntu/Debian)的安装、配置及测试流程,安装SNMP服务不同Linux发行版的SNMP服务包名不同,需根据系统选择对应的安装命令,CentOS……

    2025年9月30日
    23000

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信