loopback在Linux上包含分区表的文件中安装单个分区

是否有任何新的/更好的方式从一个文件中包含Linux上的分区表的循环挂载单个分区? 我看到以下内容,但有些过时。

http://linux.derkeiler.com/Mailing-Lists/Kernel/2005-01/7183.html

http://lists.gnu.org/archive/html/grub-devel/2005-01/msg00077.html

ftp://ftp.hq.nasa.gov/pub/ig/ccd/enhanced_loopback/

假设$ IMAGE设置为图像文件的path。 你可以写一个小脚本通过使用

fdisk -u sectors -l $IMAGE 

获取图像内的分区列表。 然后使用一个序列

 mount -o ro,loop,offset=$OFFSET -t auto $IMAGE /media/$DEST 

计算偏移量意味着来自fdisk的信息(扇区的起始扇区*大小(以字节为单位))和$ DEST每个分区的唯一名称。

这不是直接的解决scheme,但我希望能有一个相当好的指示如何实现它。 如果你曾经做过这个工作,那么对于一些取证工具来说,你有一些不错的开始!

你可以这样做,没有太多的麻烦:

 # kpartx -v -a logging-test.img add map loop0p1 (251:0): 0 497664 linear /dev/loop0 2048 add map loop0p2 (251:1): 0 66605058 linear /dev/loop0 501758 add map loop0p5 (251:2): 0 66605056 251:1 2 # ls /dev/mapper/ control loop0p1 loop0p2 loop0p5 # mount /dev/mapper/loop0p1 /mnt/test # mount | grep test /dev/mapper/loop0p1 on /mnt/test type ext2 (rw) # 

完成之后,要移除循环设备:

 # kpartx -v -d logging-test.img del devmap : loop0p2 del devmap : loop0p1 loop deleted : /dev/loop0 # 

如果你有util-linux v2.21或更高版本,你现在可以用losetup来做到这一点。 使用-P (– --partscan )选项读取分区表并为每个分区创build设备节点:

 # losetup --show -f -P test.img /dev/loop0 # ls /dev/loop0* /dev/loop0 /dev/loop0p1 /dev/loop0p2 # mount /dev/loop0p1 /mnt/tmp 

好吧,这个问题是非常古老的,但只是为了完整性的sako: 这在这里似乎更容易对我来说。

引用:

 rmmod loop modprobe loop max_part=63 losetup -f /path/to/your/disk/image.raw mount /dev/loop0p1 /mnt/path 

losetup -P自动化

losetup -P是从Ubuntu 16.04开始的最好的方法,正如https://stackoverflow.com/a/15200862/895245中提到的,这里是进一步自动化的function。; 用法:

 $ los my.img /dev/loop0 /mnt/loop0p1 /mnt/loop0p2 $ ls /mnt/loop0p1 /whatever /files /youhave /there $ # Cleanup. $ losd 0 $ ls /mnt/loop0p1 $ ls /dev | grep loop0 loop0 

资源:

 los() ( img="$1" dev="$(sudo losetup --show -f -P "$img")" echo "$dev" for part in "$dev"?*; do dst="/mnt/$(basename "$part")" echo "$dst" sudo mkdir -p "$dst" sudo mount "$part" "$dst" done ) losd() ( dev="/dev/loop$1" for part in "$dev"?*; do dst="/mnt/$(basename "$part")" sudo umount "$dst" done sudo losetup -d "$dev" ) 

以前的答案更自动化,这是很好的。

为了进一步简化任务(如果你经常这样做,这是必须的),你可以使用我的脚本来为你做所有的事情。 只需从https://github.com/AlexanderAmelkin/mountimg得到它,并像这样使用:;

 mountimg disk_image.img $PARTNO /mnt/mountpoint 

如果你喜欢,你可以指定文件系统types和任何其他的挂载选项:

 mountimg disk_image.img $PARTNO /mnt/mountpoint -t vfat -o codepage=866,iocharset=utf-8 

当你完成分区时,只需umount它:

 umount /mnt/mountpoint 
Interesting Posts