Como eu compilo um kernel? Como eu faço os devidos ajustes para o meu Hardware?
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.
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.
Entendi, mas eu queria tipo um tutorial, já ia me ajudar muito, vou buscar mais sobre.
Mas e so para o Debian esses tutoriais?
O primeiro vídeo sim. Para Debian e toda distro baseada no Debian, incluindo o Ubuntu e seus derivados
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.
As legendas do primeiro video, e em ingles tambem.
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)
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.
E se eu quiser fazer isso no Fedora ou openSUSE por exemplo, como eu faço?
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.
E se eu quiser compilar o kernel em distros .rpm, e so adaptar o tutorial do primeiro video?
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.
Meu processador tem 2 cores e 2 threads, como eu botaria? j2 ou j4?
j2
(10 caracteres)
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
Sim j4 ^^ŝaaaaaaaaaaaaaaaaaaaaaaaaa
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?