我必须实现一个在系统中安装新内核扩展的功能。在安装扩展程序之前,我想检查它是否已经从其他位置安装了。由于我不知道其他位置,因此无法使用sysconfig库功能。
我已经检查过
truss genkex
看看其他工具是如何做到的。唯一有趣的系统调用是read_sysconfig。不幸的是我没有找到文档。
有什么想法吗?
您搜索的功能是SYS_QUERYLOAD sysconfig操作,here您可以找到有关此信息的更多信息
SYS_QUERYLOAD sysconfig操作执行查询操作以确定是否已加载给定的目标文件。该目标文件是由传入的cfg_load结构中的path字段指定parmp参数。此操作使用相同的cfg_load为SYS_KLOAD(SYS_KLOAD sysconfig指定的结构操作)操作。
如果未加载指定的目标文件,则cfg_load结构在返回时设置为0。否则,在kmid字段中返回模块的内核模块ID。如果该模块的多个实例已加载到内核中,返回最近加载的模块ID。
cfg_load结构中的libpath字段不用于此目的选项。
此外,您也可以使用此脚本检查odm
数据库中的对象。
for i in 1 2 3
do
odmget -q phase=$i Config_Rules
done
并检查文件/sbin/rc.boot
(可能包含某些模块的负载]