Linux内核模块

来源:互联网 发布:windows管道通信 编辑:程序博客网 时间:2024/05/01 14:45
内核模块
在整个启动的过程中,是否能成功的驱动我们主句的硬件设备,是内核完成的工作,而内核一般都是压缩文档,在使用之前内核之前必须要将内核减压到的内存中。
为了应对日新月异的硬件,目前内核都具有可读取模块化驱动程序的功能,也就是所谓的(modules模块化)所谓模块化。
内核与内核模块放在:
    .内核:/boot/vmlinuz或/boot/vmlinuz-version
    .内核解压缩所需的RAM Disk:/boot/initrd(/booy/initrd-version)
    .内核模块:/lib/modules/version/kernel或/lib/modules/$(uname-r)/kernel;
    .核心代码:/usr/src/linux或/usr/kernels/(要安装才会有,默认不会安装)
如果内核被顺利的加载系统当中,那么就会有几个日志信息记录下来:
        .内核版本:/proc/version
        .系统核心功能:/proc/sys/kernel
如果新的硬件,而系统不支持,怎么办?
        .重新编译内核,并加入最新的硬件驱动程序原始码
        .将该硬件的去东莞程序编译成为模块,启动时加载该模块
        
核心模块直接的相关性
        arch:与硬件平台有关的项目,例如CPU
        crypto:核心所支持的加密技术,例如md5或者des等等
        drivers:一些硬件的驱动程序,例如显卡,网卡,PCI相关的硬件等
        fs:内核所支持的filesystem
        lib:一些函数库
        net:与网络相关的各项协议数据
        sound:与音效有关的各项模块
如果手动的一个一个去检查模块信息,然后去定义存储他们的相关性,我们可能会累死,所以Linux当然会提供一些
模块相关性的解决方案,那就是检查/lib/modules/$(uname -r)/modules.dep 文件,生成这个文件可以使用
    depmod [-Ane]
        -A:不加任何参数时,depmod会主动的去分析目前的模块,并且重新写入/lib/modules/$(uname-r)/modiles.dep
            当中,若加入-A参数时,则depmod会去搜寻比modules.dep内还要更新的模块,如果真找到新模块,才会升级。
        -n:不写入modules.dep,而是将结果输出到屏幕上
        -e;显示出目前已加载的不可运行的模块名称
        
核心模块的查看:
            lsmod:显示内容包括有:
                .模块名称(Module)
                .模块大小(size)
                .此模块是否被其他模块所使用过(Used by other modules)
查看每个模块的信息:
        modinfo [-adln] [module_name][file_name]
            -a:仅列出作者名称
            -d:仅列出该modules的说明
            -l:仅列出授权(license)
            -n:仅列出该模块的详细路径。
内核模块的加载与移除
            insmod [/full/path/module_name] [parameters]
移除模块:
            rmmod [-fw] module_name
                -f:forece
                -w:wait,若该模块正在使用,则rmmod会等待该模块使用完毕,才移除他
modprobe [-lcfr] module_name :无需完整路径名即可
        -c :列出目前所有系统的模块
        -l :列出目前在/lib/modules/`uname -r`/kernel
        -f :强制加载该模块
        -r :类似rmod,remove
核心模块的额外参数配置:/etc/modprobe.conf,现在的新版Centos已经默认没有这个配置文件了,当然你可以自己创建,现在配置文件是一个文件夹/etc/modprobe.d/*    
    aliasing :使用模块别名加载移除
    blacklist:阻止kernel加载某些模块:假如要禁止使用pcskr,使用方法
        在目录下配置这个文件:/etc/modprobe.d/blacklist.conf
        语法:#Do not load the ‘pcspkr’modules on boot
                blacklist pcspkr
0 0