Linux驱动.ko文件开机自动加载
- 向
/etc/modules
中增加驱动模块名称(不加.ko后缀),以test_module.ko
为例。
sudo vim /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
test_module
- 在
/lib/modules/内核版本/kernel/
路径下增加my_drivers
文件夹用于存放自己的驱动程序,其中内核版本
需要可以通过uname -r
来查看
cd /lib/modules/内核版本/kernel/
sudo mkdir my_drivers
- 将需要开启自动加载的驱动复制进
my_drivers
文件夹中。
sudo cp test_module /lib/modules/内核版本/kernel/my_drivers
- 执行
depmod
命令,depmod
命令会生成modules.dep
,这个文件是开机自动加载的驱动程序,在这个文件中找到自己的驱动程序路径代表成功。
cd /lib/modules/内核版本/kernel/my_drivers
sudo depmod
vim /lib/modules/内核版本/modules.dep
kernel/net/wireless/lib80211.ko:
kernel/net/wireless/lib80211_crypt_wep.ko: kernel/net/wireless/lib80211.ko
kernel/net/wireless/lib80211_crypt_ccmp.ko: kernel/net/wireless/lib80211.ko
kernel/net/wireless/lib80211_crypt_tkip.ko: kernel/net/wireless/lib80211.ko
kernel/net/bluetooth/bluetooth.ko: kernel/crypto/ecdh_generic.ko kernel/crypto/ecc.ko
kernel/lib/math/cordic.ko:
kernel/my_drivers/test_module.ko:
更改自动加载驱动程序的权限
普通用户对于/dev
下的文件都没有可执行权限,我们编写的驱动程序(字符设备)在/dev
下会生成相应的文件,但是要打开这个文件需要使用chmod
先增加可执行权限在行,那么如何开机自动更改这些驱动程序的权限呢?
解决方法为: 向/etc/profile
文件中增加相应的bash命令,/etc/profile
文件当用户第一次登陆时,该文件将会被自动执行。我们在其底部增加chmod
命令。
sudo vim /etc/profile
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ "${PS1-}" ]; then
if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "`id -u`" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
sudo chmod 777 /dev/test_device
注意: 这个test_device
是你驱动程序中使用create_device
函数注册的设备名。
参考博客: 驱动ko文件开机自动加载配置