Linux:如何在启动时自动加载内核模块

时间:2020-01-09 10:41:37  来源:igfitidea点击:

如何在引导时自动加载Linux内核模块,以便在系统引导过程中自动识别我的硬件?

Linux内核遵循模块化内核设计。
可加载内核模块(LKM)是目标文件,其中包含扩展运行中的内核或所谓的基本内核的代码。

LKM通常用于添加对新硬件,文件系统,NIC等的支持。

配置文件

加载内核模块是一项基本任务。
您需要编辑名为/etc/modules的文件或在/etc/modules-load.d /目录中放置一个新的配置文件。
使用任何一种方法加载内核模块。
配置文件由一组行组成。
所有空行以及#之后的所有文本都将被忽略。
如果在安装后添加了新硬件并且硬件需要内核模块,则使用文件"/etc/modules"(或" /etc/modules-load.d/"中的其他文件)。
新硬件的适当内核模块。

例子

例如,如果系统包含IDE CD-ROM,则模块配置文件包含以下3行:

# vi /etc/modules

追加以下几行:

ide-cd
ide-core
cdrom

保存并关闭文件。
重新引导系统以进行测试:

# reboot

另一个选择是加载驱动程序而不重新引导系统。
使用modprobe命令:

# modprobe {driver-name}
# modprobe ide-cd
# modprobe ide-cd cdrom

请注意,如果您使用的是Debian Linux或Ubuntu Linux,请使用文件/etc/modules文件而不是/etc/modules.conf(该文件可在较旧版本的Red Hat/Fedora/CentOS Linux上运行。
如今,这样更好在所有Linux发行版上使用目录/etc/modules-load.d /

关于现代Linux内核的说明

如今,udev用于自动模块处理。
不需要将模块放在任何配置文件中,因为udev会处理它。
但是,有时您仍需要在引导过程中添加一个额外的模块,或将另一个模块列入黑名单,以使您的Linux便携式计算机或服务器正常工作。
例如,可以在引导过程中在/etc/modules-load.d/下的文件中加载内核模块。
例如:

# cat /etc/modules-load.d/kvm.conf
kvm
kvm_intel

查看当前正在加载哪些内核模块

输入lsmod命令获取有关当前加载的模块/驱动程序的信息:

$ lsmod

或者

$ lsmod | more

要获取有关模块的信息,请运行modinfo命令

查找有关模块的信息

$ modinfo {module_name}

例如,获取有关名为igb的模块的信息:

$ modinfo igb

卸载/卸下模块

rmmod命令的语法如下

$ sudo rmmod {module_name}

或者

$ sudo modprobe -r {module_name}