Aqui veremos como baixar e compilar o kernel mais atual no Devuan, uma das inúmeras distros Debian-based, de diferente dos demais artigos aqui do blog estará o fato que o processo se dará como usuário normal e em poucos passos, também aproveitando o número de cores do processador para acelerar o processo, etc.
Pacotes Necessários.
Comece por atualizar o seu sistema…
$ sudo apt-get update
$ sudo apt-get dist-upgrade
Continue com a instalação dos pacotes básicos a esse propósito…
$ sudo apt-get install bison build-essential cpp dkms g++ gcc fakeroot flex make libelf-dev libfl-dev libncurses5-dev libssl-dev module-assistant
E os pacotes necessários ao empacotamento…
$ sudo apt-get install dpkg-dev devscripts dh-make equivs
Na falta de um ou outro pacote (se ocorrer)… instale o meta-package packaging-dev
$ sudo apt-get install packaging-dev
Kernel.
Agora que você está apto, baixe os sources do kernel Linux:
$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.1.5.tar.xz
Descompacte…
$ tar xvf linux-5.1.5.tar.xz
Entre no diretório de trabalho…
$ cd linux-5.1.5
Copie a configuração do kernel corrente com:
$ make oldconfig

Compile e empacote o kernel com:
$ make -j 6 deb-pkg # onde o 6 indica o número de cores de seu processador!
Instale os pacotes criados no diretório acima…
$ sudo dpkg -i ../linux-image-5.1.5_5.1.5-1_amd64.deb ../linux-headers-5.1.5_5.1.5-1_amd64.deb

Como 7º passo, verifique se o link build aponta para o diretório /usr/src/linux-headers-5.1.5, isso é de extrema importância quando precisamos compilar algo que dependa dos sources do kernel, como drivers de vídeo, módulos, etc… como veremos mais à frente…
$ ls -al /lib/modules/5.1.5/build

Mais classe ao código…
A fim de deixar o processo mais elegante, em vez de usar a opção -j + número de cores do processador (como visto acima), você pode executar assim:
$ make -j $(getconf _NPROCESSORS_ONLN) deb-pkg
Ainda… se quiser personalizar o seu pacote, por exemplo com o seu nickname, tome como exemplo isso:
$ make -j $(getconf _NPROCESSORS_ONLN) LOCALVERSION=-edps KDEB_PKGVERSION=$(make kernelversion)-1 deb-pkg


Kernel headers…
Agora é chegada a hora de ver se tudo está ok quanto a compilação de módulos que dependam dos headers do kernel, aqui tomarei como exemplo o VirtualBox…
$ sudo sh VirtualBox-6.0.6-130049-Linux_amd64.run
$ sudo VBoxManage extpack install --replace Oracle_VM_VirtualBox_Extension_Pack-6.0.6-130049.vbox-extpack


E tá la o VirtualBox funcionando…

Observações.
Após o empacotamento serão criados 4 pacotes no diretório acima, um deles não é necessário, o linux-image-*-dbg.
Outro pacote, o pacote linux-libc-dev_5.1.5-1_amd64, você pode instalar substituindo o existente, APENAS se não manter instalado um kernel DEBIAN (Devuan no caso), aqui mantenho instalado os pacotes padrão (linux-image-amd64 e linux-headers-amd64), logo esse pacote linux-libc-dev acompanha a versão do kernel padrão, maiores detalhes abaixo:
edps@devuan:~$ dpkg -l | grep linux-image
ii linux-image-4.19.0-0.bpo.4-amd64 4.19.28-2~bpo9+1 amd64 Linux 4.19 for 64-bit PCs (signed)
ii linux-image-5.1.0-edps 1.0 amd64 Linux kernel binary image for version 5.1.0-edps
ii linux-image-5.1.5 5.1.5-1 amd64 Linux kernel, version 5.1.5
ii linux-image-amd64 4.19+104~bpo9+1 amd64 Linux for 64-bit PCs (meta-package)
edps@devuan:~$ dpkg -l | grep linux-headers
ii linux-headers-4.19.0-0.bpo.4-amd64 4.19.28-2~bpo9+1 amd64 Header files for Linux 4.19.0-0.bpo.4-amd64
ii linux-headers-4.19.0-0.bpo.4-common 4.19.28-2~bpo9+1 all Common header files for Linux 4.19.0-0.bpo.4
ii linux-headers-4.19.0-0.bpo.5-amd64 4.19.37-3~bpo9+1 amd64 Header files for Linux 4.19.0-0.bpo.5-amd64
ii linux-headers-4.19.0-0.bpo.5-common 4.19.37-3~bpo9+1 all Common header files for Linux 4.19.0-0.bpo.5
ii linux-headers-5.1.0-edps 1.0 amd64 Header files related to Linux kernel, specifically,
ii linux-headers-5.1.5 5.1.5-1 amd64 Linux kernel headers for 5.1.5 on amd64
ii linux-headers-amd64 4.19+105~bpo9+1 amd64 Header files for Linux amd64 configuration (meta-package)
edps@devuan:~$ dpkg -l | grep linux-libc
ii linux-libc-dev:amd64 4.19.37-3~bpo9+1 amd64 Linux support headers for userspace development
edps@devuan:~$
Ainda… os tais 6 passos referem-se apenas ao download, compilação|empacotamento e instalação do kernel! 😉
IntÉ!
Ao digitar o comando “make oldconfig” são apresentas perguntas sobre a inclusão ou não das novas features disponíveis no Kernel. Por padrão vc analisa uma a uma ou apenas segue utilizando as opções padrão? Sei que é mto pessoal mas gostaria de saber se caso eu use as opções sugeridas poderei ter problemas?
CurtirCurtir
Desculpe a demora na resposta (se fosse caso de vida ou morte já era! kkk).
São opções definidas por padrão (algumas por padrão são habilitadas = Y, outras já vem desabilitadas = N), eu costumo deixar o ENTER apertado para não ficar vendo muita coisa.
As opções do make são muitas:
make olddefconfig
make oldconfig
make localmodconfig
make allyesconfig
entre outras
+ em:
http://www.h-online.com/open/features/Good-and-quick-kernel-configuration-creation-1403046.html
CurtirCurtir
Obrigado pelo retorno. Tenho apenas uma outra dúvida. Como eu disse sei que o processo de compilação é mto “pessoal” e cada caso é um caso mas segui todos os passos descritos acima importando as configurações antigas para compilar o kernel e estou me deparando com um erro. Como é minha primeira compilação existe alguma dica para resolução do problema descrito abaixo?
CC arch/x86/xen/pci-swiotlb-xen.o
CC arch/x86/xen/vga.o
CC arch/x86/xen/efi.o
LD [M] arch/x86/kvm/kvm-amd.o
AR arch/x86/xen/built-in.a
AR arch/x86/built-in.a
debian/rules:6: recipe for target ‘build’ failed
make[2]: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2
scripts/package/Makefile:70: recipe for target ‘deb-pkg’ failed
make[1]: *** [deb-pkg] Error 2
Makefile:1396: recipe for target ‘deb-pkg’ failed
make: *** [deb-pkg] Error 2
CurtirCurtir
Vendo assim não dá para ter certeza, mas eu teria que fazer uma busca com o apt-file (não estou usando Debian-based no momento) pelo arquivo deb-pkg para ver qual o pacote que o provê.
Se interessar… no VOL tenho um outro artigo um pouco menos recente que este e que trata da compilação do kernel no Debian, mas usando outro método:
https://www.vivaolinux.com.br/artigo/Empacotamento-de-Kernel-em-Sistemas-Debian-Based/
CurtirCurtir