Grz*_*cki 14 mount loop-device
我试图安装根目录和引导分区的Raspbian图像:
mount -v -o offset="70254592" -t ext4 /mnt/X/raspbian-jessie.img /tmp/raspbian
mount -v -o offset="4194304" -t vfat /mnt/X/raspbian-jessie.img /tmp/boot
Run Code Online (Sandbox Code Playgroud)
挂载引导,当 root 被挂载时会导致:
mount: /mnt/X/raspbian-jessie.img: overlapping loop device exists
Run Code Online (Sandbox Code Playgroud)
如何同时在一个磁盘映像上挂载多个分区?(对于磁盘,这显然是可能的,为什么不能用于文件?)
Lostup 2.21 -P 选项
losetup -P -f --show my.img
Run Code Online (Sandbox Code Playgroud)
/dev/loopXpY
每个分区创建一个。
优点:许多发行版中预装了可执行文件(util-linux 包)。
缺点:最近的选项,在 Ubuntu 14.04 中不存在,在此之前只使用 kpartx:https ://unix.stackexchange.com/a/405639/32558
losetup -P
自动化
用法:
$ 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
Run Code Online (Sandbox Code Playgroud)
来源:
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"
)
Run Code Online (Sandbox Code Playgroud)
小智 5
使用kpartx
工具。它将映射图像分区/dev/mapper
,您可以使用它直接挂载。
$ sudo kpartx -a disk.img
$ sudo mount -o loop /dev/mapper/loop0p2 /mnt
Run Code Online (Sandbox Code Playgroud)
附注。完成后不要忘记删除映射:sudo kpartx -d disk.img