一、内核与内核模块的文件目录
内核文件: /boot/vmlinuz 或 /boot/vmlinuz-version
内核解压缩需要的RAM或Disk: /boot/initramfs 或 /boot/initramfs-version
内核模块: /lib/modules/version/kernel 或 /lib/modules/$(uname -r)/kernel
内核源代码: /usr/src/linux 或 /usr/src/kernel (需要安装)
内核版本: /proc/version
系统内核功能: /proc/sys/kernel
二、内核模块放置目录
放置在 /lib/modules/xxx-version/kernel
arch: 与硬件平台有关的选项,例如CPU的等级等
crypto: 内核所支持的加密技术,例如md5或des等
drivers: 一些硬件的驱动程序,例如显卡、网卡、PCI相关硬件等
fs: 内核所支持的文件系统,例如vfat、reiserfs、nfs等
lib: 一些函数库
net: 与网络相关的各项协议数据,还有防火墙模块(net/ipv4/netfilter/*等)
sound: 与音效有关的各项模块
三、depmod命令与modules.dep文件
modules.dep文件记录了所有内核模块的各项依赖性,存放在 /lib/modules/xxx-version/modules.dep 文件中
其命令
# 命令格式
depmod [-Ane]
# 相关参数
不加任何选项时: depmod命令会分析目前内核模块,并且重新写入modules.dep 文件中
-A: 加入-A参数,depmode会查找比modules.dep内还要新的模块,只将新的模块写入到modules.dep文件中
-n: 不将内核模块写入modules.dep文件中,而是将结果输出到屏幕上查看
-e: 显示出目前以加载的不可执行的模块名称
四、lsmod命令
查看目前内核加载了多少模块,包含名称、大小、是否被其他模块所用
五、modinfo命令
modinfo用于查看单一内核模块的相关信息
六、内核模块的加载和删除
insmod命令
格式: insmod 模块完整路径名
示例: insmod /phantom/phantom_module.ko
rmmod命令
格式: rmmod [-fw] 模块名
-f: 强制将该模块删除,不论是否正在被使用
示例: rmmod phantom_module.ko
modprobe命令
格式: modprobe [-cfr] 模块名
-c: 列出目前系统所有的模块
-f: 强制加载该模块
-r: 删除该模块
示例: modprobe phantom_module
注意事项:
modprobe是依据modules.depmodules.dep文件的内容自动加载/删除模块,可以解决依赖性问题
后面的模块名不需要绝对路径
七、dmesg命令
用于查看内核打印的数据
八、strace命令
strace用于跟踪程序执行时进程系统调用(system call)和所接收的信号。strace可跟踪进程产生的系统调用,包括参数、返回值和执行所消耗的时间。
常用命令
# strace command
执行名称为command的命令或程序并跟踪系统调用
# strace -p procid
跟踪ID为procid的进程系统调用情况
# strace -c -p procid
统计ID为procid的进程系统调用次数与用时