Compilando o Kernel Linux

Este artigo visa a ensinar o processo de compilação de um kernel Linux. Espero que a publicação seja útil!

[ Hits: 20.856 ]

Por: - em 02/01/2019


A preparação



Você precisará dos seguintes pacotes para poder compilar o kernel:
  • ncurses-dev
  • libssl-dev
  • flex
  • libelf-dev
  • bison
  • bc
  • xz-utils
  • fakeroot
  • git
  • build-essential
  • gcc
  • make

Vá até o site do kernel em: https://www.kernel.org/

É nesse site onde baixaremos os arquivos. Ao acessá-lo, notará-se que há um cabeçalho, com uma fonte de destaque, escrito "The Linux Kernel Archives", ao lado da imagem do Tux, o pinguim do Linux, introduzindo um menu que pode ser útil, contendo as opções: About, Contact us, FAQ, Releases, Signatures e Site News. Em especial, gostaria de traduzir a seção Releases, que quer dizer Lançamentos, e compartilhar a tradução, pois para compilar um kernel, primeiro é necessário decidir com qual versão fazer esse processo!

Há várias categorias principais que o kernel deve receber:

Prepatch

Os kernels Prepatch ou "RC" são pré-lançamentos da mainline e são destinados, principalmente, a outros desenvolvedores do kernel e entusiastas do Linux. Eles devem ser compilados a partir do código-fonte e geralmente contêm novos recursos que devem ser testados antes que possam ser inseridos em uma versão estável. Os kernels Prepatch são mantidos e lançados por Linus Torvalds.

Mainline

A árvore da mainline é mantida por Linus Torvalds. É nela onde todos os novos recursos são introduzidos e onde todo o novo empolgante desenvolvimento acontece. Kernels mainline novos são lançados de 2 a 3 meses.

Stable

Depois que cada kernel mainline é lançado, ele passa a ser considerado "estável". Qualquer correção de bugs para um kernel stable é backportada da árvore mainline e aplicada por um mantenedor do kernel stable designado. Há geralmente apenas algumas versões do kernel corrigido até que o próximo kernel mainline se torne disponível -- a menos que tal kernel mainline seja designado um "kernel longterm". Atualizações de kernels stable são lançadas conforme a necessidade, geralmente uma vez por semana.

Longterm

Há, geralmente, várias versões do kernel "longterm" fornecidas para fins de backport de correções de bugs para árvores de kernel antigas. Apenas correções de bugs importantes são aplicadas a esses kernels, e eles não costumam ter versões muito frequentes, especialmente árvores mais antigas.

Lançamento de kernels longterm

Versão	Mantenedor		Lançado		Fim de linha esperado
4.19	Greg Kroah-Hartman	2018-10-22	Dec, 2020
4.14	Greg Kroah-Hartman	2017-11-12	Jan, 2020
4.9	Greg Kroah-Hartman	2016-12-11	Jan, 2023
4.4	Greg Kroah-Hartman	2016-01-10	Feb, 2022
3.16	Ben Hutchings		2014-08-03	Apr, 2020

Kernels das distribuições

Muitas distribuições Linux fornecem sua própria manutenção "longterm" nos kernels que podem ou não ser baseadas naquelas feitas pelos desenvolvedores do kernel Linux. Esses lançamentos não são hospedados em kernel.org, e os desenvolvedores do kernel Linux podem fornecer nenhum suporte a eles.

É fácil saber se você está executando um kernel de distribuição. A menos que você baixou, compilou e instalou por sua própria conta uma versão de kernel do kernel.org, você está executando um kernel de distribuição. Para descobrir a versão de seu kernel, rode uname -r:

# uname -r
3.7.5-201.fc18.x86_64

Se você ver qualquer coisa após isso, você está executando um kernel de distribuição. Por favor, use os canais de suporte oferecidos pelos mantenedores de sua distribuição para obter suporte ao kernel.

Agora, sem mais delongas, bem no meio do conteúdo do site, há as opções de download das versões, bastando clicar em [tarball] para baixar um arquivo comprimido. Há também um evidente botão amarelo com a possibilidade de baixar o último lançamento estável, além de três mirrors: https://www.kernel.org/pub/, https://git.kernel.org/ e rsync://rsync.kernel.org/pub/. Será necessário esse arquivo, logo, baixe-o e guarde-o em alguma pasta de sua preferência. Em seguida, descompacte-o com o comando tar -opção linux-versão.extensão.

Extensão receberá .tar.xz, .tar.bz2 ou .tar.gz.

Opção será:
  • -xvJf para .tar.xz
  • -xvjf para .tar.bz2
  • -xvzf para .tar.gz

Surgirá uma pasta, entre dentro dela.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. A preparação
   3. A mágica
Outros artigos deste autor

Guia de Instalação do Ubuntu

Guia para iniciantes no Linux

Linguagens de programação: o que são e quais existem?

Apresentando a programação orientada a objetos

Guia de Instalação do Arch Linux

Leitura recomendada

Empacotamento de Kernel em Sistemas Debian-Based

Afinal, o que é o Ubuntu?

Compilando o KERNEL sem medo do "kernel panic"

UZIX - O Linux do MSX (Z80)

Compilação do Kernel Linux para máquinas locais Debian

  
Comentários
[1] Comentário enviado por AndersonInacio em 03/01/2019 - 11:32h

Favoritado, vou testar isso no meu debian sid/buster, obrigado por compartilhar conhecimento conosco.

[2] Comentário enviado por valter.vieira em 03/01/2019 - 18:05h

Parabéns pela iniciativa.

[3] Comentário enviado por luiztux em 03/01/2019 - 22:34h

Muito bom.
Pra complementar o que foi dito sobre o make demorar para compilar, podemos diminuir um pouco executando o seguinte:

# make --jobs[x+1] --load-average[x]

No caso, trocando x pelo número de core da CPU+1, e o x do --load-average pelo mesmo número, só que sem o +1:

- para o meu caso 4 core
# make --jobs 5 --load-average 4

Os números de core da CPU pode-se obter com qualquer um dos comandos abaixo:

# dmidecode -t processor | grep "Core Count"
$ grep -c '^processor' /proc/cpuinfo
$ lscpu

;)
-----------------------------------''----------------------------------

Larry, The Cow, uses Gentoo GNU/Linux

^__^
(oo)
(__)

"If it moves, compile it."


[4] Comentário enviado por nicolo em 06/01/2019 - 11:30h

Tudo maravilhoso mas a parte mais charmosa e mais misteriosa de compilar o kernel é alterar a configuração, eliminando os built-in drivers que não são necessários e reduzindo a latência para 4 ms.
Outra grande vantagem é escolher a família específica do seu processador. Os Kernel agregados às Distros vem prontos para uma vasta gama de processadores e acabam com desempenho menos eficiente.
Bom artigo.

[5] Comentário enviado por edps em 06/01/2019 - 12:55h


[4] Comentário enviado por nicolo em 06/01/2019 - 11:30h

Tudo maravilhoso mas a parte mais charmosa e mais misteriosa de compilar o kernel é alterar a configuração, eliminando os built-in drivers que não são necessários e reduzindo a latência para 4 ms.
Outra grande vantagem é escolher a família específica do seu processador. Os Kernel agregados às Distros vem prontos para uma vasta gama de processadores e acabam com desempenho menos eficiente.
Bom artigo.


Sobre configurar, se quer apenas o específico para o seu processador (o que demandará menos tempo e um kernel mais enxuto), use:

# make localmodconfig

Mas isso requer que você plugue tudo o que utilizar de hardware, impressoras, pendrives, se usar firewall esteja com os módulos carregados, etc. Isto quer dizer que este kernel funcionará APENAS com a sua máquina atual, nada do que for acrescentado futuramente será reconhecido, entre compilação e instalação aqui só demora 5min num i5 8400, compilado assim:

# make localmodconfig
# make -s -j7 -l6 bzImage modules
# make -s -j7 modules_install
# make install
# grub-mkconfig -o /boot/grub/grub.cfg

Aqui em meus sistemas são apenas 91 módulos ,fora os do VistualBox que recompilo a cada update com:

# /sbin/vboxconfig

Quanto a compilação, concordo com a observação do colega @luiztux e acrescento que se a autora ou quem desejar, pode empacotar esse kernel apenas adaptando o que aqui é visto com:

https://edpsblog.wordpress.com/2015/04/02/how-to-empacotamento-de-kernel-no-debian-definitivo/

[6] Comentário enviado por ricardogroetaers em 15/01/2019 - 09:20h

Bom artigo, em linguagem simples e objetiva.
Destaque para a "mágica" (make menuconfig) em forma de menu. De fato, o que o usuário deseja é, se for o caso, escolher o que gostaria de deixar no kernel e o que não é necessário para seu uso pessoal (similar ao setup de um micro). O usuário comum não vai desenvolver um kernel vai apenas usar.

[7] Comentário enviado por edivandjs em 16/01/2019 - 17:49h

Muito interessante! Já favoritei! Aprendendo muito com seus artigos.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts