![启动时显式加载内核模块](https://linux22.com/image/104691/%E5%90%AF%E5%8A%A8%E6%97%B6%E6%98%BE%E5%BC%8F%E5%8A%A0%E8%BD%BD%E5%86%85%E6%A0%B8%E6%A8%A1%E5%9D%97.png)
我正在使用 grsecurity 内核,它不允许自动加载内核,因此多个 systemd 服务无法工作。手动加载模块modprobe
并重新启动模块后,一切正常,但这是一个相当肮脏的解决方案。我想在启动过程中“正确”地做到这一点。
操作系统是带有 grsec 内核的 Arch linux。
答案1
这在某种程度上取决于您的初始化系统(systemd,或..),但选项是:
-
模块加载=
/etc/modules-load.d/modules.conf
# /etc/modules:启动时加载的内核模块。 # 该文件包含应该 在引导时
加载的内核模块的名称,每行一个。
以“#”开头的行将被忽略。
对于台式机/笔记本电脑,人们通常希望能够插入设备并加载驱动程序模块。
如果这不是您的用例,您还可以考虑使用静态链接的相关模块代码来编译内核(因此根本不会发生模块加载)并完全禁用模块系统。 32 位体系结构上的内核二进制大小存在限制(限制可以静态编译的模块数量)。
看 : ”进行本地修改配置”
有关的 :使用 sysctl 防止进一步加载模块
有关的:Fedora,启动时加载模块
答案2
通过将 conf 文件放入 .kernel 文件中,内核启动后会自动加载模块/etc/modules-load.d/mymodules.conf
。
# Modules to load.
mymodule.ko
就是这样,你可以走了。
您还可以将不需要加载的模块列入黑名单。列入黑名单的模块通常位于/etc/modprobe.d
.在这里创建一个conf文件,并列出永远不会被加载的模块。
# Modules to prevent from loading.
blacklist mybadmodule.ko