首页 > 代码库 > 启动模块

启动模块

核心与核心模块

  • 核心: /boot/vmlinuz 或 /boot/vmlinuz-version;

  • 核心解压缩所需 RAM Disk: /boot/initrd (/boot/initrd-version);

  • 核心模块: /lib/modules/version/kernel 或 /lib/modules/$(uname -r)/kernel;

  • 核心原始码: /usr/src/linux 或 /usr/src/kernels/ (要安装才会有,默认不安装) 

如果该核心被顺利的加载系统当中了,那么就会有几个资讯纪录下来:

  • 核心版本: /proc/version

  • 系统核心功能: /proc/sys/kernel 


核心模块与相依性

既然要处理核心模块,自然就得要了解了解我们核心提供的模块之间的相关性啦! 基本上,核心模块的放置处是在 /lib/modules/$(uname -r)/kernel 当中,里面主要还分成几个目录:

arch	:与硬件平台有关的项目,例如 CPU 的等级等等;
crypto	:核心所支持的加密的技术,例如 md5 或者是 des 等等;
drivers	:一些硬件的驱动程序,例如显卡、网络卡、PCI 相关硬件等等;
fs	:核心所支持的 filesystems ,例如 vfat, reiserfs, nfs 等等;
lib	:一些函式库;
net	:与网络有关的各项协议数据,还有防火墙模块 (net/ipv4/netfilter/*) 等等;
sound	:与音效有关的各项模块;

如果要我们一个一个的去检查这些模块的主要资讯,然后定义出他们的相依性, 我们可能会疯掉吧!所以说,我们的 Linux 当然会提供一些模块相依性的解决方案罗~ 对啦!那就是检查 /lib/modules/$(uname -r)/modules.dep 这个文件啦!他记录了在核心支持的模块的各项相依性。

-A  :不加任何参数时, depmod 会主动的去分析目前核心的模块,并且重新写入
      /lib/modules/$(uname -r)/modules.dep 当中。若加入 -A 参数时,则 depmod
      会去搜寻比 modules.dep 内还要新的模块,如果真找到新模块,才会升级。
-n  :不写入 modules.dep ,而是将结果输出到萤幕上(standard out);
-e  :显示出目前已加载的不可运行的模块名称范例一:若我做好一个网络卡驱动程序,档名为 a.ko,该如何升级核心相依性?
[root@www ~]# cp a.ko /lib/modules/$(uname -r)/kernel/drivers/net
[root@www ~]# depmod


核心模块的观察

那你到底晓不晓得目前核心加载了多少的模块呢?粉简单啦!利用 lsmod 即可!

[root@www ~]# lsmod
Module                  Size  Used by
autofs4                24517  2
hidp                   23105  2....(中间省略)....8139too                28737  0
8139cp                 26305  0
mii                     9409  2 8139too,8139cp <==mii 还被 8139cp, 8139too 使用....(中间省略)....uhci_hcd               25421  0  <==底下三个是 U盘 相关的模块!ohci_hcd               23261  0
ehci_hcd               33357  0




本文出自 “岁月丶倾城” 博客,请务必保留此出处http://alca0126.blog.51cto.com/7826974/1547467

启动模块