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: 2.070 ]

Por: Beatriz Monteiro em 02/01/2019


Introdução



Sistemas operacionais são os programas que servem como interface entre o usuário e o computador a fim de que a utilização de uma máquina funcione plenamente. Sim, está escrito programas, e não foi erro de digitação. Um painel na tela é um programa, um gerenciador de pacotes também, um gerenciador de janelas idem, dentre outros.

Cada programa do sistema operacional é como se fosse um órgão do corpo humano, responsável por uma tarefa específica. Unidos os órgãos, tem-se o organismo, que é o sistema operativo. Mas, assim como o corpo humano tem órgãos considerados principais, como o cérebro ou o coração, um SO também apresenta um programa que é vital à sua constituição, e esse software é o kernel.

O kernel é o núcleo do sistema operacional, responsável pelas atividades mais fundamentais do sistema, como gerenciamento de processos, de rede, de memória, dentre outros recursos.

Dentre os kernels livres, o Linux é mais popular. Por estar licenciado na GPL (General Public License), o usuário que utilizar esse núcleo terá direito a quatro liberdades: liberdade de execução para qualquer propósito, estudar o funcionamento do programa e modificá-lo conforme seus interesses, distribuir cópias livremente e também liberdade de distribuir as alterações. Para que essas liberdades existam, o Linux deverá ser de código aberto.

Devido a isso, é possível a compilar o kernel. Durante esse processo, os usuários terão a possibilidade de configurar o núcleo de sistema de acordo com suas necessidades, desabilitando opções que não utilizam ou que não são tão necessárias, logo, após finalizada a compilação, haverá ganho de desempenho na máquina. Além disso, é possível aprender um pouco mais sobre Linux e sistemas operacionais compilando o kernel.

A compilação é um processo que exige muito processamento e muita memória do computador. Caso ele possua um hardware fraco, pode ser que a finalização desse processo demore muitas horas. Nas próximas páginas, serão apresentados os procedimentos para você ter um kernel novinho em folha! Ou melhor, novinho em bytes!

    Próxima página

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

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

Apresentando a programação orientada a objetos

Guia para iniciantes no Linux

Guia de Instalação do Ubuntu

Leitura recomendada

Instalando automounter e configurando o autofs no Debian Sarge

Slackware 13 - Compilando o kernel 2.6.32rc6

Compilando o kernel no Conectiva Linux 10

Layer7 e compilação do kernel mole-mole com Conectiva 10

Instalando o kernel 2.6.13 pré-compilado no Slackware 10.2

  
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