KLD的基本操作

2009-05-13 14:15:12来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折


                环境:FreeBSD 5.1
    kld(动态内核链接器),它是LKM(可加载内核模块)在FreeBSD 3.0版以后的内核可加载接口方面的替代品
,因此它具备了“前辈”们的优点:允许系统管理员在系统正常工作的情况下动态加载或拆卸某些模块,通过这
种能力可以使软件开发者不需要在不停重启机器的情况下测试新的内核模块。
    各种类型的模块都可以通过这种方法载入系统。它们包括:文件系统,屏幕保护程序、系统链接库等等。这
些KLD模块通常存放在/boot/kernel目录下、后缀名为ko(注:这个路径局限于5.x版本,在4.x版本是存放在/mod
ules下)的模块文件中。
    用户级别维护(这里指的是非系统调用与内核调用)这些模块通常是通过kldload(8)、kldunload(8)、kldst
at(8)命令进行维护。
    kldload(8)可以加载a.out与ELF格式的可加载KLD模块文件。kldunload(8)可以卸载已经加载了的KLD模块文
件(如果这些模块没有依赖其他模块而存在的话)。kldstat(8)命令可以检查目前已经加载了的模块的运作情况。
    “块”与“字节”型设备的驱动程序都可以通过KLD模块载入系统中。当模块被成功载入时系统会自动建立设
备节点,一旦卸载时系统回通过devfs(5)删除设备节点。你可以通过编辑devd(8)来指定模块与设备之间的对应关
系。
    相关文件/目录路径:
        /boot/kernel(4.x是/modules)  KLD模块文件现成的二进制文件所在的默认目录
        /usr/include/sys/module.h      编译KLD模块所需要的结构定义头文件
        /usr/share/examples/kld        构造KLD模块的通用源码实例
    kldload命令用于在系统正常启动中由用户动态载入KLD模块文件。使用格式:
        kldload [-v] file ...
        -v            输出更详细的信息
    kldload单元在适当的时候可以将后缀名为.ko的KLD模块文件载入系统内核。有一点是需要注意的:如果你打
算载入的KLD模块有依存关系的话,应该把它们所有一起载入,否则只会出现错误。“-v”参数可以提供更多的输
出提示。
    kldload命令运行成功返回0,返回>0则运行错误。
    有一些模块需要在系统启动时自动载入(如ipfw、ipfilter等等),通常我们会通过/etc/rc.conf(/etc/de
faults/rc.conf)载入。另外,模块可以通过loader.conf载入。
    kldstat命令用于查看系统目前载入的KLD模块的运作情况。使用格式:
        kldstat [-v] [-i id] [-n name]
        -v            输出详细的模块列表
        -i id         筛选器---只显示某id所对应的数据
        -n name       筛选器---只显示某个名称的模块文件所对应的数据
    kldstat运行成功返回0,失败返回非0值。
    kldunload命令用于卸载目前运作中的KLD模块文件。使用格式:
        kldunload [-v] -i id

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:FB7-PF-SQUID做反向代理,squid无法启动[已解决]

下一篇:NetBSD-4.0 sys/arch/i386/stand/mbr/mbr.S 源代码分析