如何提取一个 .img 文件?

我正在尝试提取一个.img文件(其中包含Chromium OS的硬盘映像)。除了挂载它之外,我没有找到其他任何方法来完成这个任务,但是挂载后会显示多个驱动器,因此无法重新打包。
5个回答

你不会提取一个.img文件;你会挂载它。例如:
mkdir /mnt/ChromeOS
mount -o loop image.img /mnt/ChromeOS/

这将列出内容:
cd /mnt/ChromeOS/
ls -l

请注意,.img 还可以被压缩成 ZIP 格式。如果是这种情况(虽然不太可能),您还需要使用 gunzip 解压它。

2您可以提取图像...它只是一个容器......当涉及SBC时,这是一个常见的过程。 - Angry 84
1如果img包含多个分区,这种方法就不起作用了,至少对我来说是失败的。相反,使用kpartx可以解决这个问题。 - Mauro Molinari

你可以使用kpartx - 从分区表创建设备映射。
安装包kpartx并运行。
sudo kpartx ...

man kpartx中:

SYNOPSIS

kpartx [-a | -d | -l] [-v] wholedisk

DESCRIPTION

This tool, derived from util-linux' partx, reads partition tables on specified device and creates device maps over partitions segments detected. It is called from hotplug upon device maps creation and deletion.

EXAMPLE

To mount all the partitions in a raw disk image:

kpartx -av disk.img

你可以从镜像文件克隆到驱动器

你可以从 .img [镜像] 文件克隆到足够大的驱动器,比如一个USB闪存盘。这是文件的基本意图。

你可以使用 mkusb 来实现这个目的。它也可以与压缩的镜像文件一起使用(通过gzipxz进行压缩),即 .img.gz.img.xz 文件。

克隆完成后,你可以通过以下方法查看分区:

sudo lsblk -f
sudo lsblk -m
sudo parted -ls

克隆后,您可以像往常一样挂载和卸载驱动器上的分区。

1kpartx运行正常,谢谢!但是要挂载所需的分区,你还需要执行以下命令:sudo mount /dev/mapper/loop?p? 挂载点,其中的两个 ? 需要用 kpartx 输出的对应值进行替换。 - Mauro Molinari
没错,@MauroMolinari。谢谢你的评论,对于想要挂载分区的新用户来说非常有帮助;他们应该注意在块设备路径中的mapper - sudodus

在Ubuntu上提取.img文件的最简单方法是使用PEAZIP FREE ARCHIVER,通过其类似Windows的图形界面。
首先,您需要安装一堆i386依赖项,因此您还需要启用i386软件包。
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install libgtk2.0-0:i386 libpango1.0-0:i386 libpangox-1.0-0:i386 libpangoxft-1.0-0:i386 libxft2:i386

然后下载PeaZip软件包并安装它,或者直接运行:
wget https://osdn.net/dl/peazip/peazip_6.5.1.LINUX.GTK2-2_all.deb
sudo dpkg -i peazip_6.5.1.LINUX.GTK2-2_all.deb

最后启动 peazip 并通过 GUI 提取 .img 文件。(我可以确认它对我来说可以用于 chromium os .img 文件。)

注意:您始终可以依靠 gdebi 处理依赖项。


我使用MATE桌面环境,所以我使用MATE Disk Image Mounter来挂载ISO或IMG磁盘镜像。MATE Disk Image Mounter是一个文件树对话框,您可以运行它来选择要挂载的镜像文件。

MATE Disk Image Mounter


也许你可以使用Etcher.io将镜像写入USB驱动器或SD卡,并使用文件进行处理,最后再使用磁盘实用工具重新打包。