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

发布日期:分类:Linux & homelab 使用mount的offset参数挂载包含多个分区的磁盘镜像中的指定分区有4条评论
时效性提醒:本文首次编写发布于7年前。

首先,本文是适用于磁盘镜像的,不同于分区镜像,磁盘镜像一般包含多个分区和分区表等信息,简而言之,磁盘镜像分区镜像可以理解为/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没有正确计算。

作者:WuSiYu

学生,Web开发者,智能硬件&IOT爱好者

4条评论

发表评论

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