检查是否已加载内核扩展

问题描述 投票:1回答:1

我必须实现一个在系统中安装新内核扩展的功能。在安装扩展程序之前,我想检查它是否已经从其他位置安装了。由于我不知道其他位置,因此无法使用sysconfig库功能。

我已经检查过

truss genkex

看看其他工具是如何做到的。唯一有趣的系统调用是read_sysconfig。不幸的是我没有找到文档。

有什么想法吗?

aix kernel-extension
1个回答
0
投票

您搜索的功能是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(可能包含某些模块的负载]

© www.soinside.com 2019 - 2024. All rights reserved.