compilação do kernel: gere os arquivos modules.dep e map

2

Eu estou compilando o kernel linux no Debian Stretch:

cd linux-4.9.59/
make menuconfig
make

até aí tudo bem.

normalmente, emitiria make modules_install , para copiar os módulos para /lib/modules/ .

Mas este kernel é destinado a outra máquina, então não quero copiar os módulos localmente. Além disso, não estou compilando como root, portanto, escrever para /lib/modules/ não funcionaria de qualquer maneira.

export INSTALL_MOD_PATH="../MY_NEW_KERNEL"
mkdir -vp "${INSTALL_MOD_PATH}

make modules_install

O acima copia os módulos recém-compilados para o diretório ../MY_NEW_KERNEL/lib/modules/ . Mas ele não gera os arquivos modules.dep e map em ../MY_NEW_KERNEL/lib/modules/

Normalmente, se ele estivesse executando o kernel, eu poderia executar depmod para gerá-lo em /lib/modules/ . Mas eu não estou executando este kernel na máquina atual.

E mesmo quando eu copiar o bzImage e os módulos para a máquina de destino, eu teria que reiniciar primeiro no novo kernel e depois executar depmod .

Mas o problema é que o kernel não inicializa porque não consegue encontrar os módulos, porque eu não executei depmod .

Como posso executar depmod para módulos do kernel, quando o kernel não está atualmente em execução?

    
por Martin Vegter 29.10.2017 / 00:48

1 resposta

2

Para responder à sua pergunta, isso deve funcionar. O System.map foi criado no diretório de origem recém-criado e é necessário:

$ depmod -b "$INSTALL_MOD_PATH" -F System.map 4.9.59

Onde 4.9.59 é a nova versão do kernel não-executável.

Agora, até mesmo a fonte do kernel plain vanilla linux permite construir pacotes debian.

$ make help|grep deb
  deb-pkg             - Build both source and binary deb kernel packages
  bindeb-pkg          - Build only the binary kernel deb package

e, g: Em vez de make e make modules_install (como usuário normal, o root não é necessário):

stretch-amd64:~/linux-source-4.13.10$ make bindeb-pkg -j4

[... mais tarde ...]

stretch-amd64:~/linux-source-4.13.10$ $ ls -1 ../*4.13.10*deb
../linux-headers-4.13.10_4.13.10-1_amd64.deb
../linux-image-4.13.10_4.13.10-1_amd64.deb
../linux-libc-dev_4.13.10-1_amd64.deb

É claro que isso pode exigir alguns pacotes debian adicionais, como dpkg-dev , fakeroot e alguns relacionados, mas se o destino for também um debian, talvez seja mais fácil instalá-lo lá.

    
por 29.10.2017 / 01:59