Ubuntu - 使用读/写权限挂载映像文件

Ubuntu - 使用读/写权限挂载映像文件

主机:Ubuntu 15.04

使用Disk Image Mounter,我可以挂载 test.img 并且弹出三个目录。

  1. 系統-a
  2. 系统-b
  3. 可写

当我搜索过后,我无法编辑这些目录,因为它们是只读的。

到目前为止我发现的可能的解决方案是将这些目录复制到另一个新地方并生成一个新的图像文件。

但是由于镜像文件包含这三个目录,我该怎么办呢?

==============发布更新==============

mount: wrong fs type, bad option, bad superblock on /dev/loop1,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

=====================================

Device                Start     End Sectors  Size Type
test_custom2.img1    8192   16383    8192    4M BIOS boot
test_custom2.img2   16384  147455  131072   64M EFI System
test_custom2.img3  147456 2244607 2097152    1G Linux filesystem
test_custom2.img4 2244608 4341759 2097152    1G Linux filesystem
test_custom2.img5 4341760 7614463 3272704  1.6G Linux filesystem

答案1

问题是您的映像中有多个分区。普通的旧式挂载会在偏移量 0 处查找文件系统信息,在您的情况下,这显然指向一些 bios 启动信息,但不是所需的 ext4 fs。您应该通过创建具有所需分区偏移量的环回设备来成功。

关联可能会对你有帮助。

答案2

以下是根据答案得出的完整过程这里

您的 .img 文件不是分区的映像,而是整个磁盘的映像。这意味着它从引导加载程序和分区表开始。您必须检测分区的偏移量并专门挂载它。遗憾的是,我从未找到可以自动执行此操作的 Linux 工具。所以你必须做数学运算,但这很容易。以下是流程:

fdisk -l raspberry_pi.img

输出结果如下。注意扇区大小(以字节为单位)(本例中为 512;见下面第 2 行)和分区的起始扇区(Linux 分区为 94208;见下面最后一行)。

Disk raspberry_pi.img: 7.3 GiB, 7826571264 bytes, 15286272 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xbeb1a7ff

Device          Boot Start      End  Sectors  Size Id Type
raspberry_pi.img1       8192    93813    85622 41.8M  c W95 FAT32 (LBA)
raspberry_pi.img2      94208 15069183 14974976  7.1G 83 Linux

现在,手动将起始扇区 * 扇区大小相乘,以获得命令所需的偏移字节mount。在本例中,94208 * 512 = 48234496

sudo mkdir /media/sdcard
sudo mount -o loop,rw,sync,offset=48234496 printer_v5.img /media/sdcard

现在,映像的 Linux 分区已安装在 /media/sdcard 上,并且 root 用户可以编辑其文件。

最后,当你完成后:

sudo umount /media/sdcard

答案3

您需要确保您当前的用户目录对您的操作具有读写权限

sudo mkdir -p /tmp/test && sudo mount -o loop,rw,sync image.img /tmp/test

答案4

在这种情况下,binwalk 可能是完成任务的首选工具。有很多选择,但最简单的形式是:

#install binwalk
git clone https://github.com/ReFirmLabs/binwalk.git
cd binwalk
sudo python setup.py install
#cd to image folder
cd <path to image file>
#show info
binwalk yourimage.img
#auto extract all
binwalk -e yourimage.img

相关内容