使用insmod加载模块时要注意当模块依赖于另一个模块时,要确保那个模块已被加载,否则会有错误提示,可以去modules.dep文件里面查找。 (推荐使用modprobe命令,此命令会自动加载被依赖的模块,也不需要输入路径信息) (3)lsmod Linux lsmod命令用于显示已载入系统的模块。 执行lsmod(list modules)指令,会列出所有已载入系统的...
链表的第一个元素由static LIST_HEAD(modules)建立,见kernel/module.c第65行。如果阅读include/linux/list.h里面的LIST_HEAD宏定义,你很快会明白,modules变量是struct list_head类型结构,结构内部的next指针和prev指针,初始化时都指向modules本身。对modules链表的操作,受module_mutex和modlist_lock保护。 下面就模块结...
https://en.wikipedia.org/wiki/Linux_kernel Linux内核是一个自由和开放源码,单片,类Unix 操作系统 内核。负责管理计算机硬件资源。 操作系统中的实现 Linux中的可加载内核模块由modprobe命令加载(和卸载)。 内核模块文件位于/lib/modules中,从2.6版开始使用扩展名.ko(“内核对象”)(以前的版本使用.o扩展名)。
struct list_lru s_inode_lru ___cacheline_aligned_in_smp; ... /* s_inode_list_lock protects s_inodes */ spinlock_t s_inode_list_lock ___cacheline_aligned_in_smp; struct list_head s_inodes; //该超级块包含的所有inode spinlock_t s_inode_wblist_lock; struct list_head s_inodes_wb;...
294 struct list_head modules_which_use_me,指向一个链表,链表中的模块均依靠当前模块。 在介绍了module{}数据结构后,也许你还是觉得似懂非懂,那是因为其中有很多概念和相关的数据结构你还不了解。例如kernel_symbol{} (见include/linux/module.h)
一些driver以及网络模块和文件系统模块可能会调用vmalloc,加载内核模块(kernel module)时也会用到,可参见 kernel/module.c。 1.3 kernel modules (内核模块) 系统已经加载的内核模块可以用 lsmod 命令查看,注意第二列就是内核模块所占内存的大小,通过它可以统计内核模块所占用的内存大小,但这并不准,因为”lsmod”列出...
通过公开网站获取社区提交的内核 bug:https://bugzilla.kernel.org/ Linux 内核邮件列表(Linux Kernel Mailing List, LKML):lkml.org。成为 LKML 的一员,你将与内核开发者们共同讨论内核开发的各个方面。在这里,你可以提交补丁(patch),请求代码审查(code review),讨论架构设计,了解内核开发的最新动态。
Kernel Features是内核特性配置菜单,常用选项介绍如表3所列。 表3 内核特性常用选项说明 3、启动选项 启动选项一般关心内核启动参数设置即可,可设置默认启动参数和内核参数类型。 默认启动参数通过“Default kernel command string”设置,例如: (root=/dev/mmcblk0p2 rootwait console ...
drivers/ --- 设备驱动(在Linux kernel 3.10中,设备驱动占了49.4的代码量)。 lib/ --- 实现需要在内核中使用的库函数,例如CRC、FIFO、list、MD5等。 crypto/ --- 加密、解密相关的库函数。 security/ --- 提供安全特性(SELinux)。 virt/ --- 提供虚拟机技术(KVM等)的支持。 usr/ --...
2 编写另外一个内核模块,去操作内核所有module组成的链表(表头变量即为modules,我们在第一步已看到他的地址) 其中module_name,是传递过来的需要卸载的内核模块的名称 struct list_head *modules=(struct list_head *)0xc069b9a0; struct module *mod=0; ...