Vinculando biblioteca compartilhada no kernel do linux

1

Eu gostaria de modificar o módulo de segurança (Especificamente segurança / IMA) do kernel do Linux (este módulo deve ser compilado no kernel)

Eu tenho que usar funções de uma biblioteca compartilhada (um arquivo .so) neste módulo.

mas não sei como compilá-lo.

Existe uma maneira de colocar o arquivo de biblioteca compartilhada no kernel do Linux?

E se não há como fazer isso, você pode me dizer o motivo?

    
por baobao_Y 05.08.2016 / 03:57

1 resposta

4

Você praticamente não pode fazer isso (ligando uma biblioteca compartilhada ao kernel ou a algum módulo do kernel). O kernel é conceitualmente um programa independente (portanto, não sabe sobre funções C padrão de baixo nível como malloc ou fprintf que sua biblioteca compartilhada provavelmente usará). Os módulos do kernel ( *.ko files) são especialmente criados e são carregados por algum código especial do kernel.

Além disso, o código de usuário (incluindo as bibliotecas) é baseado em chamadas de sistema (listadas em syscalls (2) ), que não estão disponíveis no código do kernel (já que o kernel está fornecendo o sistema chama para processos em execução em modo de usuário através de uma máquina específica).

Você pode considerar ter um programa auxiliar de usuário se comunicando com o kernel (ou seja, seu módulo de kernel), por exemplo, usando netlink (7) . Talvez procure também em systemd .

Você provavelmente deve ler mais sobre Sistemas Operacionais e ler Advanced Linux Programming para entender os aspectos da terra do usuário.

BTW, como regra geral, você deve limitar a quantidade de código do kernel adicionada ao sistema (e preferir trabalhar na região do usuário).

    
por 05.08.2016 / 07:14