Existem várias abordagens ...
-
Se você está tentando criar um módulo externo (incluindo o que está desenvolvendo), só precisa dos cabeçalhos do kernel:
apt install linux-header-$(uname -r)
Isso fornecerá os arquivos necessários para que os links simbólicos
/lib/modules/$(uname -r)/{build,source}
apontem para algo significativo. Então você pode construir um módulo em outro diretório executandomake -C /lib/modules/$(uname -r)/build SUBDIRS="/path/to/your/module" modules
Isso garantirá que o módulo seja criado para o kernel que você está executando.
-
Se você quiser basear seu desenvolvimento no kernel do Ubuntu, use o pacote
linux-source
apropriado; para o lançamento do Ubuntu, que é atualmentelinux-source-4.10.0
:apt install linux-source-4.10.0 cd /usr/src tar xf linux-source-4.10.0.tar.bz2
Isso incluirá os patches do kernel do Ubuntu, permitindo que você construa um kernel com os mesmos recursos do seu kernel atual. Observe, no entanto, a advertência da descrição da embalagem:
This package is mainly meant for other packages to use, in order to build custom flavours.
If you wish to use this package to create a custom Linux kernel, then it is suggested that you investigate the package kernel-package, which has been designed to ease the task of creating kernel image packages.
If you are simply trying to build third-party modules for your kernel, you do not want this package. Install the appropriate linux-headers package instead.
-
Se você quiser basear seu desenvolvimento no kernel upstream (que é o que eu recomendo), você deve clonar Linus 'tree e trabalhe lá. Para testar seu módulo, você precisa criar um kernel de upstream completo ou criar seu módulo usando a abordagem dada no ponto 1 acima.
Em qualquer caso, não é uma boa idéia usar o pacote de origem linux (conforme obtido usando apt-get source
), uma vez que é realmente projetado para construir todos os kernels usados no Ubuntu. Se você cegamente debuild
usando esse pacote fonte, você vai esperar por muitas horas antes que a compilação termine ... (Existem circunstâncias em que isso é apropriado, ea documentação do kernel do Ubuntu irá explicar o que fazer, mas isso é muito provavelmente não um deles.)