
Recebi uma instalação mínima do Linux fornecida pelo fornecedor. A partir de uma resposta a uma pergunta anterior descobri que é possível construir um kernel com ou sem suporte de módulo. Eu tenho um dispositivo CANBUS que preciso conectar e que vem com drivers na forma de arquivos .ko. Eu gostaria de poder instalá-los com os scripts de instalação fornecidos, mas primeiro preciso saber se meu kernel foi construído com suporte a módulos - é possível detectar isso na linha de comando?
Quando executo, lsmod
ele não retorna nada, então sei que não há arquivos .ko no momento - mas isso significa que o kernel não me permitirá instalar um arquivo .ko?
Responder1
Se você tiver um /proc
sistema de arquivos, o arquivo /proc/modules
existirá se e somente se o kernel for compilado com suporte a módulos. Se o arquivo existir, mas estiver vazio, seu kernel suporta módulos, mas nenhum está carregado no momento. Se o arquivo não existir, seu kernel não poderá carregar nenhum módulo.
É tecnicamente possível ter suporte a módulos carregáveis sem o /proc
. Você pode verificar a presença das chamadas de sistema init_module
e delete_module
no binário do kernel. Isto pode não ser fácil se você tiver apenas um binário compactado (por exemplo, vmlinuz
ou uImage
). VerComo faço para descompactar vmlinuz para vmlinux?para vmlinuz
. Depois de conseguir descompactar a maior parte do kernel, procure a string sys_init_module
.
Observe que se os módulos forem suportados, você precisará de arquivos adicionais para compilar seus próprios módulos de qualquer maneira:cabeçalhos do kernel. Estes são arquivos de cabeçalho C ( *.h
), alguns dos quais são gerados quando o kernel é compilado (então você não pode simplesmente retirá-los do código-fonte do kernel). VerO que contém uma árvore de origem do kernel? Isso está relacionado aos cabeçalhos do kernel Linux?
Responder2
A maioria das distribuições armazena um arquivo de texto com a configuração do kernel em algum lugar. Em um sistema Debian você o encontrará em /boot/config-<kernel_version>
.
Então você pode simplesmente executar grep
nesse arquivo:
grep CONFIG_MODULES /boot/config-<kernel_version>