较新的 Linux 内核 (2.4) 允许您通过编辑以下文件轻松添加更多 loop 设备:/etc/modules.conf或通过使用启动参数。
较旧的内核 (2.2 ?) 仅支持编译到内核中的 8 个 loop 设备。简而言之,使用此默认值,您只能在网络上共享 8 张 CD。为了支持超过默认值,您需要修改内核源代码并重新编译一个新的内核。
使用以下方法来确定您正在运行的内核版本。
bash# uname -a |
或
bash# cat /proc/version |
当前的内核允许您在不重新编译内核的情况下设置支持的 loop 设备数量。其中一种方法是在以下文件中添加 options 行:/etc/modules.conf。仅当您的 loop 支持已配置为可加载内核模块时,此方法才有效(大多数主要的 Linux 发行版现在都预配置了这种方式)。
编辑/etc/modules.conf并添加以下行。
options loop max_loop=64 |
在进行上述更改后,只需重新启动即可。或者您可以尝试使用 rmmod 和 insmod 来动态进行更改 - 但如果您当前已挂载任何 loop 设备,这将不起作用(您会收到一条错误消息,提示 loop: 设备或资源忙)。
如果您没有/etc/modules.conf文件,您的模块配置文件可能名为/etc/conf.modules(此名称现已弃用)。
继续 第 3.4 节。
感谢 Paul A. Sand 指出 /etc/modules.conf 选项。
如果您的 loop 支持已直接编译到内核中(换句话说,它不是作为模块加载的),您可以在 linux 启动提示符处附加您想要支持的 loop 设备数量。
boot: linux max_loop=64 |
或者,如果您正在使用 LILO,您可以在以下文件中编辑您的 linux 启动节:/etc/lilo.conf并添加/修改append=行。这是一个显示append=的示例节(注意:仅添加或修改 append 行,不要将您的整个节更改为此示例,否则您的系统可能无法启动)。有关 LILO 的更多信息,请查阅 LILO mini-HOWTO,网址为 http://www.linuxdoc.org/HOWTO/mini/LILO.html。
image=/boot/vmlinuz label=linux root=/dev/hdb5 initrd=/boot/initrd.img append=" max_loop=64" vga=788 read-only |
在更改/etc/lilo.conf后,您需要运行 lilo 命令,以使您的更改生效。
bash# lilo Added linux * Added linux-nonfb Added failsafe Added windows Added floppy |
接下来重新启动您的系统。系统重启后,您可以通过键入以下命令来检查您的启动命令行:
bash# cat /proc/cmdline |
我不确定 loop 模块(编译为模块)是否读取/proc/cmdline当模块加载时,因此可能不需要 options 行/etc/modules.conf。它有可能可以(如果不能,则应该可以)。总结一下:我没有对此进行测试。
继续 第 3.4 节。
感谢 Tony Melia 提供启动提示符信息。
如果您有较旧的内核 (v. 2.2) 或者您完全熟悉重新编译内核,则可以通过编辑以下文件来增加支持的 loop 设备数量:/usr/src/linux/drivers/block/loop.c文件。
如果您发现您的机器上未安装内核源代码,则需要查阅您的 Linux 发行版的文档,了解如何安装它们(内核源代码随所有发行版一起提供 - 它是 GNU GPL 许可的一部分)。
将以下行中的数字更改为您需要的 loop 设备数量。
#define MAX_LOOP 16 |
根据具体情况编译新的内核或模块。如果您需要入门方面的帮助,请阅读/usr/src/linux/README或查阅 The Linux Kernel HOWTO。
继续 第 3.4 节。
您应该检查您有多少/devloop 设备条目。
bash# ls -l /dev/loop* |
mknod 命令在/dev目录中创建设备。Loop 设备的主设备号为 "7",次设备号从 "0" 开始。如果在MAX_LOOP中定义为 "8",您应该有/usr/src/linux/drivers/block/loop.c,您应该有/dev/loop0到/dev/loop7。要创建/dev/loop8设备,请使用以下命令(将示例中两个 "8" 替换为您需要的相应数字)。
bash# mknod -m660 /dev/loop8 b 7 8 |
检查新文件的所有者/组和权限(使用 ls -l)。您可以使用以下命令更改所有者和组:
bash# chown root.disk /dev/loop8 |
您可以使用以下命令更改权限:
bash# chmod 666 /dev/loop8 |