在“Linux debian 2.6.32-5-amd64 #1 SMP”安装中,希望在启动 sshd 后延迟加载内核模块 (mpt2sas) 并且用户可以远程登录,mpt2sas 模块被禁止加载单用户启动,通过:
$ echo 'blacklist mpt2sas' >> /etc/modprobe.d/mpt2sas.conf; depmod -aeF /boot/System.map-2.6.32-5-amd64; update-initramfs -u -k $(uname -r)
稍后 amodeprobe -v mpt2sas
将在 /etc/rc.local 中运行。
安装较新的 mpt2sas 驱动程序后,使用dpkg -i mpt2sas-15.00.00.00-3_Debian6.0.5.amd64.deb
结果是旧驱动程序从 重命名为/lib/modules/2.6.32-5-amd64/kernel/drivers/scsi/mpt2sas/mpt2sas.ko
,/lib/modules/2.6.32-5-amd64/kernel/drivers/scsi/mpt2sas/mpt2sas.ko.orig
新驱动程序安装在/lib/modules/2.6.32-5-amd64/weak-updates/mpt2sas/mpt2sas.ko
。
副作用是该行黑名单 mpt2sas在/etc/modprobe.d/mpt2sas.conf
不再有任何影响,当在单用户引导过程中加载模块时,mpt2sas 将作为第一个内核模块加载。
回归:
- 我知道 /etc/modprobe.d/mpt2sas.conf 仍在加载,因为在该文件中输入错误行时,启动过程中控制台会显示警告(4 次)。
- 跑步
depmod -aeF /boot/System.map-2.6.32-5-amd64; update-initramfs -u -k -t $(uname -r); reboot
并没有改善。 - 添加内核启动参数
modprobe.blacklist=mpt2sas
并没有改善。
如何在单用户引导阶段阻止加载新的 mpt2sas 内核模块? (我仍然想modprobe
在 /etc/rc.local 中使用加载 mpt2sas)。
答案1
检查您的模块是否未在文件中列出/etc/modules
。该文件列出了启动时必须加载的模块http://www.debian.org/doc/manuals/debian-faq/ch-kernel.en.html#s-modules
当模块名称(本例中为 mpt2sas)在文件中列出时/etc/modules
:
- 删除 mpt2sas 行或通过在前面添加哈希来对其进行注释。行“
mpt2sas
”变为“#mpt2sas
”。 - 更新 initramfs 映像文件:
depmod -aeF /boot/System.map-$(uname -r) && update-initramfs -u -k $(uname -r) -t
- 并重新启动