ad 1. e 2. A imagem do kernel é chamada vmlinux, mas isso não é o que você realmente precisa quando você quer construir módulos externos. É a configuração e os arquivos de cabeçalho deste kernel que é necessário.
ad 3. Para construir módulos, internos ou externos, você precisa de suporte para módulos carregáveis neste kernel, você quer construir o módulo, é claro, então o kernel precisa ser configurado com __modules ativados _.
Um kernel é configurado por um dos programas de configuração que ajudam na criação de um arquivo .config
, na árvore de origem do kernel ou no caminho $KBUILD_OUTPUT
, para compilações fora da árvore.
ad 4. Onde você encontra esses pacotes ou como eles são nomeados depende da sua distribuição, mas eu acho que é frequentemente chamado de kernel-devel
. Eu não sei porque eu usei minha própria árvore do kernel por anos.
ad 5. Sim, você realmente não precisa do binário do kernel, para compilar um módulo externo, mas você suprimiu a nota abaixo
NOTE: "modules_prepare" will not build Module.symvers even if CONFIG_MODVERSIONS is set; therefore, a full kernel build needs to be executed to make module versioning work.
A maioria dos kernels usa CONFIG_MODVERSIONS, eu acho. Você pode ver isso no seu arquivo .config
com
$ grep MODVERSIONS .config
CONFIG_MODVERSIONS=y
Isto significa que o seu módulo construído funcionará apenas para a versão do kernel e configuração para a qual você o construiu.
Portanto, você pode criar um módulo para essa versão do kernel e do kernel, mas não pode executá-lo sem o kernel e a versão do kernel.
É por isso que você pode criar um módulo externo para um kernel de distribuição sem a árvore fonte completa do kernel, se você instalar a configuração do kernel e os arquivos de cabeçalho, esse kernel de distribuição foi construído.
Na verdade, na maioria das vezes você só quer construir um módulo externo para o kernel com o qual você executa seu sistema. Se você construiu o kernel você mesmo, a partir da árvore de fontes do kernel, você já terá uma configuração de kernel e arquivos de cabeçalho, que combinam com o kernel.
Se você executar um kernel de distribuição, precisará instalar esses arquivos a partir da distribuição.