3. 添加对更多 Loop 设备的支持

较新的 Linux 内核 (2.4) 允许您通过编辑以下文件轻松添加更多 loop 设备:/etc/modules.conf或通过使用启动参数。

较旧的内核 (2.2 ?) 仅支持编译到内核中的 8 个 loop 设备。简而言之,使用此默认值,您只能在网络上共享 8 张 CD。为了支持超过默认值,您需要修改内核源代码并重新编译一个新的内核。

使用以下方法来确定您正在运行的内核版本。

bash# uname -a

bash# cat /proc/version

3.1. 添加 Loop 模块选项

当前的内核允许您在不重新编译内核的情况下设置支持的 loop 设备数量。其中一种方法是在以下文件中添加 options 行:/etc/modules.conf。仅当您的 loop 支持已配置为可加载内核模块时,此方法才有效(大多数主要的 Linux 发行版现在都预配置了这种方式)。

编辑/etc/modules.conf并添加以下行。

options loop max_loop=64

在进行上述更改后,只需重新启动即可。或者您可以尝试使用 rmmodinsmod 来动态进行更改 - 但如果您当前已挂载任何 loop 设备,这将不起作用(您会收到一条错误消息,提示 loop: 设备或资源忙)。

注意

如果您没有/etc/modules.conf文件,您的模块配置文件可能名为/etc/conf.modules(此名称现已弃用)。

继续 第 3.4 节

感谢 Paul A. Sand 指出 /etc/modules.conf 选项。

3.2. 附加到启动提示符

如果您的 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 提供启动提示符信息。

3.3. 调整内核

如果您有较旧的内核 (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 节

3.4. 在 /dev 中创建 Loop 设备

您应该检查您有多少/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