全部博文(668)
分类:
2008-10-03 09:16:35
要支持模块的动态加载,卸载, 在编译内核时要注意: “Lodable Module Support" 中的相应选项要选上. 比如要支持加载模块, 应该选上Enable loadable module support; 要支持卸载模块, 要选上Module unloading ; 要支持强制卸载模块, 要选上Forced module unloading! |
A module name like softdog or ppp.
A more generic identifier like char-major-10-30
modprobe.conf文件是特定于发行版的, 比如我的Ubuntu中, modprobe查看/etc/modprobe.d/aliases来将通用标志符转化为模块名. |
依赖其他模块的模块称为: "stacking modules" |
$ insmod /lib/modules/version/kernel/fs/fat/fat.ko$ modprobe msdos
$ insmod /lib/modules/version/kernel/fs/msdos/msdos.ko
发行版将modprobe, insmod, depmod打包到一起, 称之为Linux内核模块管理工具, 针对2.4或以前的内核, 该工具名为modutils, 2.6的为module-init-tools. |
这里都是介绍的加载,卸载模块的命令, 至于模块加载,卸载的原理. 参考" 模块运行环境" |
int init_module(void) { ... } void cleanup_module(void) { ... } |
static int hello_start(void) { ... } static void hello_end(void) { ... } module_init(hello_start); module_exit(hello_end); |
"GPL" [GNU Public License v2 or later]如果是MODULE_LICENSE("Proprietary"), 那么你所编写的模块不是免费的, 内核社区将其视为"污染"了内核, 不会理会相关的bug report, 而且, 不遵循GPL的模块无法调用只针对GPL的符号(参考"输出符号"的内容).
"GPL v2" [GNU Public License v2]
"GPL and additional rights" [GNU Public License v2 rights and more]
"Dual BSD/GPL" [GNU Public License v2 or BSD license choice]
"Dual MPL/GPL" [GNU Public License v2 or Mozilla license choice]
"Proprietary" [Non free products]
#include/* 所有的模块文件都要包含 */
#include#include/* 若使用了优先级标志,需包含 */ /* 若使用了宏, 需包含 */