Linux驱动 | modprobe加载oot驱动与重启系统后自动加载oot驱动分析总结
内容提要
本文介绍了在Linux驱动开发和调试中使用modprobe命令加载out-of-tree(OOT)驱动的三种方法:拷贝法、软链接法和配置external路径法。同时解释了系统重启后自动加载OOT驱动的规律,包括未执行dracut --force指令可能导致OOT驱动被in-tree驱动替代,initramfs中包含相关驱动且系统硬盘驱动库中存在同名驱动时会加载initramfs中的驱动,initramfs中包含多个同名驱动时会选择优先级最高的驱动加载,以及如果initramfs中不包含相关驱动但系统硬盘驱动库中存在同名驱动时会加载系统硬盘驱动库中的驱动。
关键要点
-
本文介绍了在Linux驱动开发中使用modprobe命令加载out-of-tree(OOT)驱动的三种方法:拷贝法、软链接法和配置external路径法。
-
使用insmod命令加载OOT驱动时,系统可能会加载内核自带的驱动文件而非手动编译的驱动文件。
-
拷贝法:将OOT驱动文件拷贝到/lib/modules/$(uname -r)/extra/目录,并创建配置文件以确保优先加载该驱动。
-
软链接法:通过建立软链接将OOT驱动链接到/lib/modules/$(uname -r)/extra/目录,其他步骤与拷贝法相同。
-
配置external路径法:使用external关键字指定任意目录作为modprobe安装驱动的路径,无需拷贝或链接到extra目录。
-
系统重启后自动加载OOT驱动的问题:未执行dracut --force指令可能导致OOT驱动被in-tree驱动替代。
-
如果initramfs中包含相关驱动且系统硬盘驱动库中存在同名驱动,系统重启时会加载initramfs中的驱动。
-
如果initramfs中包含多个同名驱动,系统会根据优先级选择最高的驱动加载。
-
如果initramfs中不包含相关驱动但系统硬盘驱动库中存在同名驱动,系统会加载硬盘驱动库中的驱动。