如何映射磁盘映像的分区
linux0.11 调试环境中有一个硬盘影像hdc-0.11-new.img
我想看看它的内容. 我的系统是ubuntu14. 当然应该在主系统上看.
1. 将该文件映射到一个loop 设备上
$ sudo losetup /dev/loop0 hdc-0.11-new.img
但当我们mount 到一个安装点时却不能成功
$ sudo mount /dev/loop0 /mnt
mount: you must specify the filesystem type
纵使指定了文件系统(minix)也不能成功,因为它并不是一个单纯的文件系统,而是一个硬盘影像
硬盘影像可以包含分区,而每个分区都可以是单独的一个文件系统
查看一下这个文件的分区.
$ sudo fdisk /dev/loop0
Command (m for help): p
Disk /dev/loop0: 127 MB, 127631360 bytes
16 heads, 38 sectors/track, 410 cylinders, total 249280 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
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/loop0p1 2 124031 62015 81 Minix / old Linux
/dev/loop0p2 124032 248063 62016 81 Minix / old Linux
我们知道,minix 文件系统是在第一个分区/dev/loop0p1 上,
那我们如何才能把这个分区安装成功?
这需要用到一个命令kpartx, 从分区表中创建映射.
2. 通过分区表创建设备映射,设备名在/dev/mapper/ 下
$ sudo kpartx -av /dev/loop0
add map loop0p1 (252:0): 0 124030 linear /dev/loop0 2
add map loop0p2 (252:1): 0 124032 linear /dev/loop0 124032
我们已经可以在/dev/mapper下看到loop0p1,loop0p2的映射,
在ubuntu 下已经自动弹出了2个磁盘影像,可以点击查看.
如果没有自动mount, 也可以手工操作之,示例如下:
3. 挂载之:
$ sudo mount /dev/mapper/loop0p1 /mnt
4. 查看:
hjj@hjj-Inspiron:/dev/mapper$ cd /mnt
hjj@hjj-Inspiron:/mnt$ ls -F
bin/ dev/ etc/ image/ mnt/ shoelace* tmp/ usr/ var/