首先,本文是适用于磁盘镜像的,不同于分区镜像,磁盘镜像一般包含多个分区和分区表等信息,简而言之,磁盘镜像与分区镜像可以理解为/dev/sda和/dev/sda1的区别。对于分区镜像,直接用mount挂载即可。
虽然有自动化挂载磁盘镜像的工具,不过还是比较麻烦。其实,既然磁盘镜像中包含分区,那么我们就可以使用offset(偏移量)的方式,直接让mount去访问并挂载磁盘镜像中特定分区。
首先,使用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没有正确计算。
標題錯別字……
谢谢提醒,已修改
挂载一个镜像显示可用空间为0无法写入,不知道能否通过这种方法解决
可以试试,先用fstab看看分区表对不对吧,如果分区表有问题就用binwalk去手动搜索以下