免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1791 | 回复: 0
打印 上一主题 下一主题

KLD的基本操作 [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2015-08-09 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-28 20:08 |只看该作者 |倒序浏览

                环境: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
        kldunload [-v] [-n] name
        -v            输出更详细的信息
        -i            指定某个id的模块文件
        -n            通过KLD模块的文件名来指定该文件
        若参数为单独的文件名,则卸载该KLD文件
    kldunload运行成功返回0,否则返回非0值。
    kldconfig命令用于显示与修改系统对KLD模块文件的寻找路径。使用格式:
        kldconfig [-dfimnUv] [-S name] [path ...]
        kldconfig -r
        -d            删除指定寻找路径
        -i            指定目前的寻找路径
        -m            增加指定寻找路径
        -r            显示当前的所有寻找路径
        -S name       修改sysctls MIB中kern.module_path的值
    kldconfig运行成功返回0,否则返回非0值。
    kldxref命令可以生成某个KLD模块文件目录的hint信息文件。这个hint文件的信息可以包括版本号、与文件
和模块之间的对应关系等。使用这个命令进行hint文件生成是以“目录”文件为单位的(打个比方:如果这个目
录中不存在KLD模块文件,那么就无法生成对应的hint信息文件了)。
        kldxref [-Rdv] [-f file] [path ...]
        -R            包括所有子目录
        -d            不生成hint文件,并将信息输出到“用户控制台”---屏幕上
        -f path       指定生成的hint信息文件的路径/文件名
        -v            详细输出
    若不使用-f参数(这里指的是不指定生成的hint信息文件的路径),则程序将会在KLD模块文件目录下生成一
个名为linker.hints的hint信息文件。
alex# man -k kld
kld(4)                   - dynamic kernel linker facility
kldconfig(8)             - display or modify the kernel module search path
kldfind(2)               - returns the fileid of a kld file
kldfirstmod(2)           - return first module id from the kld file specified
kldload(2)               - load KLD files into the kernel
kldload(8)               - load a file into the kernel
kldnext(2)               - return the fileid of the next kld file
kldstat(2)               - get status of kld file
kldstat(8)               - display status of dynamic kernel linker
kldsym(2)                - look up address by symbol name in a KLD
kldunload(2)             - unload kld files
kldunload(8)             - unload a file from the kernel
kldxref(8)               - generate hints for the kernel loader
翻译/整理: demonalex(demonalex#dark2s.org)
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/65096/showart_1019171.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP