如何在 Fedora 19 上添加更多 /dev/loop* 设备

如何在 Fedora 19 上添加更多 /dev/loop* 设备

如何在 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 容器的联合文件系统中。

最后,现代系统的秘诀毫无用处

相关内容