我知道如何安装在 /dev 中具有相应设备文件的驱动器,但我不知道如何对不代表物理设备并且在 /dev 中没有类似设备的磁盘映像执行此操作(例如ISO 文件或软盘映像)。我知道我可以在 Mac OS X 中通过双击 Finder 中的磁盘映像图标来执行此操作,这将自动安装驱动器,但我希望能够从终端执行此操作。我不确定是否有通用的 Unix 方法可以做到这一点,或者这是否是特定于平台的。
答案1
如果它是带有 MBR 分区表的硬盘驱动器映像,我会对该映像进行 fdisk 以查找需要安装的分区的偏移量。
fdisk -lu /path/disk.img
然后我会通过偏移量安装它。
mount -o loop,offset=xxxx /path/disk.img /mnt/disk.img.partition
偏移量值以字节为单位,而显示块计数,因此您应该将输出fdisk
的“Begin”或“Start”列中的值乘以(或任何块大小)以获得要安装的偏移量。fdisk
512
答案2
在大多数现代 GNU 系统上,该mount
命令可以处理:
mount -o loop file.iso /mnt/dir
要卸载,您只需使用umount
命令即可
umount /mnt/dir
如果您的操作系统没有此选项,您可以创建一个循环装置:
losetup -f # this will print the first available loop device ex:/dev/loop0
losetup /dev/loop0 /path/file.iso #associate loop0 with the specified file
mount /dev/loop0 /mnt/dir #It may be necessary specify the type (-t iso9660)
要卸载您可以使用-d
:
umount /mnt/dir
losetup -d /dev/loop0
如果文件有分区,例如高清图像,您可以使用该-P
参数(取决于您的操作系统),它将映射文件内容中的分区:
losetup -P /dev/loop0 /path/file.iso # will create /dev/loop0
ls /dev/loop0p* #the partitions in the format /dev/loop0pX
答案3
losetup -P
多分区图像的自动化
如何从命令行挂载磁盘映像? | Unix 和 Linux 堆栈交换提到过losetup -P
,这里有一些方便的 Bash 函数,可以进一步实现自动化。用法:
$ 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"
)
答案4
尝试:
mount -o loop /path/to/file.iso /mnt
您可以在之后添加loop
:
-t msdos
用于软盘-t iso9660
用于 CD-ROM 映像
Linux 通常会尝试猜测文件类型。