我正在安装一个 ISO 文件,并查看本教程。他们使用以下命令:
$ mount -o loop disk1.iso /mnt/disk
Run Code Online (Sandbox Code Playgroud)
我试图了解-o loop. 我有两个问题:
当我查看 mount 的长手册页时,找到该-o选项需要时间。如果我这样做,man mount | grep "-o"我会收到一个错误,当我查看文件时,我没有找到任何“循环”是 option 的命令文本的信息-o。这是在哪里记录的?
另外,安装的“循环设备”概念是什么?
我有一个名为 .iso 的文件ubuntu.iso。
我可以mount用命令:mount ubuntu.iso /mnt。安装后,我可以从命令的输出中看到它df -h: /dev/loop0 825M 825M 0 100% /mnt。
但是,如果我执行命令mount -o loop ubuntu.iso /mnt,我会得到相同的结果。
据我所知,循环设备允许我们将iso文件作为设备访问,我想这就是我们添加选项的原因-o loop。但是即使我只执行 .iso 文件,我也可以访问我的 iso 文件mount ubuntu.iso /mnt。
所以我看不出之间的差异mount和mount -o loop。
我知道我可以创建和使用这样的环回设备:
# Create the file
truncate disk.img --size 2G
# Create a filesystem
mkfs.ext4 disk.img
# Mount to use
mount disk.img /mnt
# Clean up
umount /mnt
Run Code Online (Sandbox Code Playgroud)
但是,在这种情况下,磁盘映像固定为 2GB。空时为2GB,满时为2GB。它不会生长。
有没有一种可以增加大小的环回设备?或者,是否有一种环回设备只需要它存储的空间?
有没有办法将磁盘 img 文件分解为多个部分并将其安装为单个循环设备?
根据以下问题:
什么是安装时的“循环设备”?
循环设备是充当基于块的设备的文件。虽然我可以从概念上理解这一点,但这与挂载任何其他文件有什么不同?例如,如果我获取 ext2 文件系统的 dd 映像然后挂载它,则不必使用循环选项 -mount -t ext2 file.dd /mnt/mount-point成功。
我什么时候应该使用 loop 选项,使用 loop 选项进行安装和不使用它进行安装有什么区别?
我以前曾经使用 来创建图像文件dd,使用它们在它们上设置一个文件系统,mkfs然后mount它们将它们作为已安装的分区进行访问。后来在网上看到很多例子都是losetup事先在 下做一个loop设备入口/dev,然后挂载。我不知道为什么实际上需要一个图像文件来充当循环设备并拥有自己的/dev条目,而可以轻松获得相同的行为。
总结:在实际场景中,为什么我们根本不需要一个/dev/loopX条目,而我们可以直接挂载 fs 映像而没有它?循环装置有什么用?
我需要从一无所有 ( /dev/zero)创建一个只有一个分区的文件系统。我尝试了以下命令序列:
dd if=/dev/zero of=mountedImage.img bs=512 count=131072
fdisk mountedImage.img
n
p
2048
131072
Run Code Online (Sandbox Code Playgroud)
基本上,我需要创建填充零的 64MB 图像文件。然后我用来fdisk为新文件系统(最终应该是 FAT32)添加一个新分区,从扇区开始2048并使用所有剩余的扇区。
losetup /dev/loop1 mountedImage.img
mkfs -t vfat /dev/loop1
Run Code Online (Sandbox Code Playgroud)
但在这里我遇到了问题。如果我设置loop设备并使用 格式化它mkfs -t vfat,分区表将被覆盖并将文件系统 (FAT32) 放置到磁盘。我不需要用 FAT32 格式化整个磁盘,我只需要我的主分区就是这样。
有谁知道如何只格式化原始磁盘映像的一个分区,而不是整个映像?
我读过 qemu-nbd 和网络块设备内核模块,我可以挂载 qcow2 映像。我还没有看到任何关于通过循环设备安装 qcow2 的教程。是否可以?如果不是,为什么?
我不太明白 qcow2 和 iso 之间的区别。
GNU/Linux 具有覆盖目录的联合挂载。因此,您可以在只读目录之上安装可写目录。当可写目录被卸载时,只读目录保持不变。
我正在为块设备寻找相同的功能 - 最好将可写部分存储在文件中。所以我想运行类似的东西:
device-setup /dev/newdevice /dev/read-only-device overlayfile
Run Code Online (Sandbox Code Playgroud)
如果我写入 /dev/newdevice 更改应该存储在覆盖文件中。如果我读取写入的扇区,我应该从覆盖文件中获取数据。如果我读取未写入的扇区,我应该从 /dev/read-only-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)
如何同时在一个磁盘映像上挂载多个分区?(对于磁盘,这显然是可能的,为什么不能用于文件?)
loop-device ×10
mount ×5
block-device ×3
linux ×3
filesystems ×1
grep ×1
nbd ×1
partition ×1
qemu ×1
snapshot ×1