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

在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命令行登录MySQL教程

    前提条件MySQL已安装若未安装,执行以下命令:# Ubuntu/Debiansudo apt update && sudo apt install mysql-server# CentOS/RHELsudo yum install mysql-serversudo systemctl star……

    2025年6月27日
    9200
  • 如何高效用GCC编译Linux C程序?

    准备工作安装GCC终端执行以下命令安装GCC(以Debian/Ubuntu为例):sudo apt update && sudo apt install build-essential验证安装:gcc –version # 输出类似 gcc (Ubuntu 11.4.0) 11.4.0编写测试……

    2025年7月21日
    9900
  • linux man命令如何翻页

    Linux的man命令时,可按空格键向下翻页,按b

    2025年8月19日
    7900
  • Linux系统下如何查看ncpu(CPU核心数)的具体数值?

    在Linux系统中,了解CPU核心数(ncpu)是进行系统性能调优、资源分配、多任务处理以及应用程序优化的基础,CPU核心数分为物理核心数和逻辑核心数,物理核心数是处理器实际具备的计算单元数量,而逻辑核心数则是在支持超线程技术(如Intel的Hyper-Threading或AMD的SMT)的情况下,一个物理核心……

    2025年10月3日
    7100
  • Linux命令行入门难?速学技巧在此

    打开终端图形界面:Ubuntu/CentOS:Ctrl+Alt+TFedora:Super键(Windows键)搜索”Terminal”纯文本模式:虚拟机或服务器:开机后直接进入命令行界面切换模式:Ctrl+Alt+F2~F6(图形界面用Ctrl+Alt+F1返回)基础命令操作目录与文件管理pwd # 查看当前……

    2025年7月24日
    9600

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信