如何在 Fedora 19 上添加更多 /dev/loop* 设备?我愿意:
# uname -r
3.11.2-201.fc19.x86_64
# lsmod |grep loop
# ls /dev/loop*
/dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3 /dev/loop4 /dev/loop5 /dev/loop6 /dev/loop7 /dev/loop-control
# modprobe loop max_loop=128
# ls /dev/loop*
/dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3 /dev/loop4 /dev/loop5 /dev/loop6 /dev/loop7 /dev/loop-control
所以什么都没有改变。
答案1
当您以 root 身份运行它时,losetup -f
如果没有可用的免费循环设备,将根据需要自动创建循环设备。
mknod
因此,创建新循环设备的最简单方法是使用 ,而不是自己使用sudo losetup -f
。这种方法将为您提供一个免费的现有循环设备(如果存在),或者在需要时自动创建一个新设备。
答案2
您必须/dev
使用 mknod 创建设备节点。中的设备节点dev
具有类型(块、字符等)、主编号和次编号。您可以通过执行以下操作找出类型和主要编号ls -l /dev/loop0
:
user@foo:/sys# ls -l /dev/loop0
brw-rw---- 1 root disk 7, 0 Oct 8 08:12 /dev/loop0
这意味着循环设备节点的块类型和主编号应为 7。每个设备节点的次编号从 0 开始递增 1,因此 Loop0 就是 0,loop7 就是 7。
要创建 Loop8,请以 root 身份运行命令mknod -m 0660 /dev/loop8 b 7 8
。这将创建/dev/loop8
具有沿交换机指定的权限的设备节点-m
(这不是必需的,因为您可能正在运行桌面系统,但最好不要让每个人都读取和写入您的设备节点)。
答案3
呵呵,不完整:) 只需使用此脚本添加新的 /dev/loops 即可。请记住,对于更改数字,脚本会进行第 63 次循环,从第 8 次开始,因为默认情况下会进行 0-7。注意,权限是从 /dev/loop0 复制的:)
for i in {8..63}; do if [ -e /dev/loop$i ]; then continue; fi; \
mknod /dev/loop$i b 7 $i; chown --reference=/dev/loop0 /dev/loop$i; \
chmod --reference=/dev/loop0 /dev/loop$i; done
注意,以上食谱是2014年的。现在是 2023 年 :) 当前开发的内核通过 devfs 虚拟文件系统创建所有 /dev/ 设备。为了向后兼容,它会自动显示 0 到 7 个循环设备,但会在需要时创建其他循环设备。目前,1 字节次要编号编码的循环设备数量没有限制。现代内核支持 2 字节次要编号,则限制为 65535 个设备。
目前,这用于 Docker 或 K8S 容器的联合文件系统中。
最后,现代系统的秘诀毫无用处