自动装载模块
除了使用以上命令工具外,内核模块可以在需要的时候自动装载到内核中。使用我们的签名介绍的工具装载模块和卸载模块需要用户的干预,而且处于安全原因只有根用户能使用insmod和rmmod来加载和卸载模块。虽然这样保证了安全,但却带来了不便。例如,当一个用户程序在运行过程中需要使用一个功能,但该功能的模块还没有加载到内核中,这就需要内核有能力自动调度模块到内核地址空间。
通常,在程序运行过程中如果需要的资源或某个设备驱动程序没有注册,内核会报错。你可以事先用内核函数request_模块申请需要的组件模块。为了使用这个函数,在配置内核时需要激活项Kernel Module Loaderrequest_模块会调用modprobe命令自动装载需要的模块(并调度模块依赖的其他模块)。要自动调度哪些模块需要的配置文件/etc/模块s.conf中设置。
下面给出了/etc/模块s.conf配置文件的实例。在该文件中它知名了当前网络设备是由模块mylan_cs代码的,为了装载该模块,需要给它传送特定的参数。如果modprobe不能找到模块,printk会给出错误信息。
/etc/模块s.conf
#Aliases - specify you hardware
alias eth0 mylan_cs
options mylan_cs eht=1 network_name="MyNet" station_name="neo"
alias char-major-4 serial
alias char-major-5 serial
alias char-major-6 lp
alias char-major-9 st
alias tty-ldisc-1 slip
alias tty-ldisc ppp
虽然这种方式可以自动装载模块,但它也只能调度系统管理员在配置文件中指定的模块。