$ los my.img
/dev/loop0
/mnt/loop0p1
/mnt/loop0p2
$ ls /mnt/loop0p1
/whatever
/files
/youhave
/there
$ sudo losetup -l
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO
/dev/loop1 0 0 0 0 /full/path/to/my.img
$ # 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
if [ "$part" = "${dev}p*" ]; then
part="${dev}"
fi
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
if [ "$part" = "${dev}p*" ]; then
part="${dev}"
fi
dst="/mnt/$(basename "$part")"
sudo umount "$dst"
done
sudo losetup -d "$dev"
)
7条答案
按热度按时间pqwbnv8z1#
你可以这样做,没有太多的麻烦:
并在您完成后移除循环装置:
js81xvg62#
如果你有util-linux v2.21或更高版本,你现在可以使用losetup来完成。使用
-P
(--partscan
)选项来读取分区表并为每个分区创建设备节点:kokeuurv3#
假设$IMAGE被设置为图像文件的路径。
以获取映像中的分区列表。然后使用
其中offset是指来自fdisk的信息(起始扇区 * 扇区大小,以字节为单位)和$DEST,每个分区的唯一名称。
这不是直接的解决方案,但我希望一个很好的指示如何实现它。如果你做的工作一次,你有一些小的好的开始,一些法医工具包!
jhkqcmku4#
losetup -P
自动化losetup -P
是从Ubuntu 16.04开始的最佳方法,如https://stackoverflow.com/a/15200862/895245所述,如果进一步,这里有一些函数可以自动化。用法:资料来源:
d4so4syb5#
好吧,这个问题已经有很长时间了,但为了完整起见:This here对我来说似乎更容易。
报价:
4dc9hkyq6#
一些更自动化到以前的答案是伟大的。
为了进一步简化任务(如果你经常这样做,这是必要的),你可以使用我的脚本
mountimg
来为你做一切。只需从https://github.com/AlexanderAmelkin/mountimg获取它并像这样使用:如果您愿意,您也可以指定文件系统类型和任何其他附加的挂载选项:
当你完成了分区,简单地
umount
它:ia2d9nvy7#
这是Andrew Y的回答。
如果遇到此错误:
然后,您只需使用sudo再次运行该命令。
我知道这不是一个很好的答案,但它可能会帮助那些对linux相当陌生的人。
而且到现在为止,这个解决方案仍然工作得很好,我在Kali linux 2023.1上运行它