在Linux内核中链接共享库

在Linux内核中链接共享库

我想修改linux内核的安全模块(特别是security/IMA)。(这个模块必须编译到内核中)

我必须在此模块中使用共享库(.so 文件)中的函数。

但我不知道如何编译它。

有没有办法把共享库文件放到Linux内核中?

如果没有办法,你能告诉我原因吗?

答案1

您实际上无法做到这一点(将共享库链接到内核或某些内核模块中)。内核在概念上是一个独立的程序(因此不知道低级标准 C 函数,例如mallocfprintf的共享库很可能使用的函数)。内核模块(*.ko文件)是专门构建的,并由一些特殊的内核代码加载。

此外,用户空间代码(包括库)基于系统调用(列于系统调用(2)),这在内核代码中不可用(因为内核是提供系统调用流程运行用户模式通过特定的机械)。

您可能会考虑让用户态帮助程序与内核(即您的内核模块)通信,例如使用网络链接(7)。也许还要看看系统

您可能应该阅读更多有关操作系统并阅读高级Linux编程了解用户域方面。

顺便说一句,根据经验,您应该限制添加到系统中的内核代码量(并且更喜欢在用户空间中工作)。

相关内容