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