Pular para o conteúdo

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!
- BiaMonteiro
Hits: 22.722 Categoria: Linux Subcategoria: Kernel
  • Indicar
  • Impressora
  • Denunciar

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!

   1. Introdução
   2. A preparação
   3. A mágica

Guia de Instalação do Arch Linux

Guia de Instalação do Slackware

Guia para iniciantes no Linux

Guia de Instalação do Ubuntu

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

Aventuras e desventuras com o kernel 2.6

O Kernel Linux

O kernel do Linux: A definição, importância e funcionalidades

Empacotamento de Kernel em Sistemas Debian-Based

Desmistificando a instalação do Dazuko

#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

Entre na sua conta para comentar.