Existe uma maneira de saber em tempo de execução se um driver é um módulo do kernel ou se ele está vinculado estaticamente?

3

Eu preciso criar um teste que verifique se o driver de um dispositivo específico é um módulo do kernel (em oposição a um link estaticamente). Existe uma maneira de saber essas informações em tempo de execução? Obrigado!

    
por wishywashy 08.11.2017 / 02:24

1 resposta

3

lsmod listará os módulos do kernel atualmente carregados. Portanto, se um driver não estiver listado lá, ele será embutido no kernel ou não será carregado. A maioria das distribuições deve ter um arquivo de configuração armazenado no diretório /boot , que contém as opções de configuração do kernel que foram usadas. Se você fosse baixar e descompactar o código-fonte para a mesma versão do kernel; copie o arquivo de configuração para .config no topo da árvore de origem; e, em seguida, executar make menuconfig , você poderá navegar nas configurações e ver como esse driver foi configurado.

Em alguns casos, a configuração do kernel é embutida no próprio kernel, mas eu teria que procurar como acessar isso:)

Editar:

Outra opção, possivelmente mais rápida (se for um dispositivo pci) é executar lspci -v . A saída disso informará o nome do driver que está atualmente em uso. Se isso não está listado no lsmod, então você sabe que deve ser embutido.

    
por 10.11.2017 / 04:37