How-To :: Empacotamento do kernel no Debian e derivados em 6 passos.


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
de modo xiki! multi-core e personalização…
pacotes criados…

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
instalação do VirtualBox…
término da instalação do pacote de extensão do VirtualBox…

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É!

Anúncios
How-To :: Empacotamento do kernel no Debian e derivados em 6 passos.

4 comentários sobre “How-To :: Empacotamento do kernel no Debian e derivados em 6 passos.

  1. Gpxlnx disse:

    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?

    Curtir

    1. 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

      Curtir

      1. Gpxlnx disse:

        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

        Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s