使用mount的offset参数挂载包含多个分区的磁盘镜像中的指定分区

作者:

时效性提醒:本文首次编写发布于10 年前。

首先,本文是适用于磁盘镜像的,不同于分区镜像,磁盘镜像一般包含多个分区和分区表等信息,简而言之,磁盘镜像分区镜像可以理解为/dev/sda/dev/sda1的区别。对于分区镜像,直接用mount挂载即可。

虽然有自动化挂载磁盘镜像的工具,不过还是比较麻烦。其实,既然磁盘镜像中包含分区,那么我们就可以使用offset(偏移量)的方式,直接让mount去访问并挂载磁盘镜像中特定分区。

screenshot_20161203_115951

首先,使用fdisk查看磁盘镜像的分区信息

$ fdisk -lu s5p6818-debian-sd4g-20161117.img

Disk s5p6818-debian-sd4g-20161117.img:3.6 GiB,3899999232 字节,7617186 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00000000

设备 启动 起点 末尾 扇区 大小 Id 类型
s5p6818-debian-sd4g-20161117.img1 2048 133119 131072 64M 83 Linux
s5p6818-debian-sd4g-20161117.img2 133120 7617185 7484066 3.6G 83 Linux

分区的起点扇区*扇区大小即为我们所需要的offset(偏移量),此例子中,offset为2048*512,我们可以在使用mount时直接让shell来帮我们计算

下面使用mount和offset参数,使用我们上面得出的offset值,来直接挂载指定分区。注意:挂载需要root权限

# mount -o loop,offset=$((2048*512)) s5p6818-debian-sd4g-20161117.img /mnt/temp

可见,我们的分区已经被正常的挂载上了,下面我们就可以直接读取和修改分区中的文件了

$ mount|grep s5p6818-debian-sd4g-20161117.img
/mnt/data/wusiyu/大文件/下载/s5p6818-debian-sd4g-20161117.img on /mnt/temp type ext4 (rw,relatime,data=ordered)

如果mount报错,输出诸如无法识别文件系统一类的错误,通常表示我们的offset没有正确计算。

评论

4 条对“使用mount的offset参数挂载包含多个分区的磁盘镜像中的指定分区”的回复

  1. 910JQK 的头像

    標題錯別字……

    1. WuSiYu 的头像
      WuSiYu

      谢谢提醒,已修改

  2. hfkwbdjwkq 的头像
    hfkwbdjwkq

    挂载一个镜像显示可用空间为0无法写入,不知道能否通过这种方法解决

    1. WuSiYu 的头像
      WuSiYu

      可以试试,先用fstab看看分区表对不对吧,如果分区表有问题就用binwalk去手动搜索以下

发表回复

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