Como compilar um Kernel?

Como eu compilo um kernel? Como eu faço os devidos ajustes para o meu Hardware?

1 Curtida

Primeiro você precisa baixar o código fonte no kernel.org. Depois você precisa instalar as dependências de compilação na sua distro. Depois você vai gerar o arquivo .config e fazer as otimizações. E depois você vai rodar o comando make para compilar.
Eu sei que essa explicação ficou bem superficial, então aqui tem um vídeo ensinando a compilar o kernel para Debian e Ubuntu. O bom desse vídeo é que ele ensina a gerar o pacote .deb, de modo que fica mais fácil para instalar/desinstalar o kernel que você compilou. No vídeo ele só ensina a fazer uma compilação genérica, sem nenhuma otimização. Mas é bom pra você ter uma base do que você deve fazer. O vídeo está em inglês, não sei se isso seria um problema, mas qualquer coisa é só colocar as legendas e a tradução automática do YouTube:

Tem também esse aqui que ensina a fazer algumas otimizações na configuração do seu kernel:

Se você tiver numa distro .deb, você pode começar vendo aquele primeiro vídeo, que ensina como baixar o código fonte, e a instalação das dependências. Depois você faz suas otimizações, e no fim você faz como mostra no primeiro vídeo, ensinando a gerar o pacote para Debian.
Algumas coisas que eu faço é, ao rodar o comando make menuconfig é entrar em cada seção do menu e desabilitar tudo o que eu sei que não vou precisar. Também na seção que trata do tipo/família do processador, eu seleciono Core2/Xeon, pois meu processador é um Core 2.

5 Curtidas

Um bom começo é compilar para sua CPU específica, que pode ser feito trocando CONFIG_GENERIC_CPU=y por CONFIG_MGERAÇÃODACPU=y no .config.

Tem uma lista aqui.

Se quiser um kernel com patches, é bom já ir estudando o comando patch, e rodá-lo antes do make final.

3 Curtidas

Entendi, mas eu queria tipo um tutorial, já ia me ajudar muito, vou buscar mais sobre.

1 Curtida

Mas e so para o Debian esses tutoriais?

1 Curtida

O primeiro vídeo sim. Para Debian e toda distro baseada no Debian, incluindo o Ubuntu e seus derivados

1 Curtida

O segundo vídeo ele faz a compilação no Slackware, mas você pode pegar uma boa parte do vídeo que ele ensina a mexer na configuração do kernel.

3 Curtidas

As legendas do primeiro video, e em ingles tambem. :thinking:

1 Curtida

Se for no Arch Linux, ou algum derivado, a própria Arch Wiki tem uma boa documentação sobre como compilar o kernel para Arch:

https://wiki.archlinux.org/index.php/Kernel_(Português)/Arch_Build_System_(Português)

https://wiki.archlinux.org/index.php/Kernel_(Português)/Traditional_compilation_(Português)

1 Curtida

Se você tiver no PC, tem uma opção para traduzir as legendas automaticamente. Além disso, basicamente você precisa apenas se atentar para os comandos mostrados no vídeo.

1 Curtida

E se eu quiser fazer isso no Fedora ou openSUSE por exemplo, como eu faço?

1 Curtida

Você tem que estudar o esquema de empacotamento deles, que é o RPM.

Não entendo muito bem deles, mas provavelmente tem recursos na internet que ensinam a montar um pacote simples, daí é substituir os comandos pelos relevantes para compilar o kernel.

2 Curtidas

E se eu quiser compilar o kernel em distros .rpm, e so adaptar o tutorial do primeiro video?

1 Curtida

Bom, para gerar o pacote .rpm, em vez de digitar make deb-pkg, você vai digitar make rpm-pkg (se não me engano).

Para outras distros que não sejam .deb ou .rpm, acho que não tem esse comando, tem que ver na documentação da distro. Na dúvida rode o comando make --help.

Você também tem a opção de não gerar o pacote específico para sua distro, só rodar o comando make && make install, mas aí depois se você quiser desinstalar vai dar mais trabalho. Com o pacote as coisas ficam mais limpas e você tem mais controle.

Mas o principal que você precisa saber é quais dependências instalar na sua distro, pois pode ser que elas não sejam as mesmas ou não tenham os mesmos nome das distros Debian based.

E outra dica que eu dou é que ao rodar o comando make, use o parâmetro -jX, onde X é o número de núcleos do seu processador. No meu caso, se eu tenho um processador quad core e quero compilar um kernel para Debian, eu uso o comando make -j4 deb-pkg. Se você não fizer isso, a compilação vai demorar mais.

1 Curtida

Meu processador tem 2 cores e 2 threads, como eu botaria? j2 ou j4?

1 Curtida

j2
(10 caracteres)

3 Curtidas

Eu coloco o número de CPUs que o lscpu informa, o meu é 2 cores e 2 threads por núcleo, então eu coloco j4

2 Curtidas

Sim j4 ^^ŝaaaaaaaaaaaaaaaaaaaaaaaaa

1 Curtida

quando você usa o make deb-pkg ele gera 4 arquivos .deb

linux-headers-5.11.8-custom-walefy_5.11.8-custom-walefy-1_amd64.deb
linux-image-5.11.8-custom-walefy-dbg_5.11.8-custom-walefy-1_amd64.deb
linux-image-5.11.8-custom-walefy_5.11.8-custom-walefy-1_amd64.deb
linux-libc-dev_5.11.8-custom-walefy-1_amd64.deb

é preciso instalar todos?

Esse video ensina:

1 Curtida