Compilação do Kernel

Obtenção, configuração, compilação e instalação de um novo kernel Linux. Os comandos no terminal podem ser executados, a grosso modo, na maioria das distribuições Linux.

[ Hits: 11.003 ]

Por: Buckminster em 29/09/2021


Instalação



As instalações seguiram o básico:
  • Instalar o sistema;
  • Particionar manualmente;
  • Configurar o arquivo sources.list;
  • Atualizar o sistema.

Aqui não será abordada a instalação do sistema, somente a compilação do kernel.

Preparando a compilação (no Debian e derivados):

# apt-get update
# aptitude safe-upgrade
# aptitude install vim vim-doc

O último comando não é necessário (o Vim é um editor de texto, pode usar o editor da tua preferência).

Caso tua distribuição tenha o Yum, o RPM ou outro gerenciador de pacotes, a estrutura básica da coisa é a mesma: atualize.

Instalando os pacotes necessários (a maioria dos pacotes abaixo, necessários para a compilação, tem para a maioria das distribuições, alguns mudam de nome, mas durante a instalação você verá a mensagem):

# apt-get install build-essential module-init-tools kernel-package initramfs-tools libaal-dev wget liblzo2-dev gzip libncurses5 libncurses5-dev dpatch udev binutils module-assistant
# apt-get install binutils module-assistant libelf-dev bin86 flex bison
# apt-get install linux-headers-`uname -r`
# cd /usr/src
(entrando no diretório próprio para isso)
# wget https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.13.10.tar.xz
(baixando)

Essa versão deu 113,82M.

Caso queira conferir se baixou, execute:

# ls
(para ver o conteúdo do diretório)

# tar -xv --xz -f linux-5.13.10.tar.xz
(descompactando)

# cd linux-5.13.10  
(não utilizamos link simbólico)

# make mrproper
(limpa prováveis compilações anteriores e deleta o arquivo .config)

# make-kpkg clean  
(limpa prováveis compilações anteriores, provavelmente aparecerá "sem regra para processar o alvo...", esse aviso é normal, pois deve ser uma compilação "limpa")

Agora vamos descobrir qual o processador da máquina:

# cat /proc/cpuinfo

Abaixo está uma parte da saída do comando acima.
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 42
model name	: Intel(R) Core(TM) i5-2430M CPU @ 2.40GHz
stepping	: 7
microcode	: 0x1b
cpu MHz		: 1150.781
cache size	: 3072 KB
physical id	: 0
siblings	: 4
core id		: 0
cpu cores	: 2
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm epb kaiser tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm ida arat pln pts
bugs		: cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips	: 4789.33
clflush size	: 64
cache_alignment	: 64
address sizes	: 36 bits physical, 48 bits virtual
power management:

Porém, a informação desse comando não é suficiente, execute:

# cc -march=native -E -v - </dev/null 2>&1 | grep cc1

Veja a saída desse comando, que beleza:

/usr/lib/gcc/x86_64-linux-gnu/6/cc1 -E -quiet -v -imultiarch x86_64-linux-gnu - -march=sandybridge -mmmx -mno-3dnow -msse -msse2 -msse3 -mssse3 -mno-sse4a -mcx16 -msahf -mno-movbe -maes -mno-sha -mpclmul -mpopcnt -mno-abm -mno-lwp -mno-fma -mno-fma4 -mno-xop -mno-bmi -mno-bmi2 -mno-tbm -mavx -mno-avx2 -msse4.2 -msse4.1 -mno-lzcnt -mno-rtm -mno-hle -mno-rdrnd -mno-f16c -mno-fsgsbase -mno-rdseed -mno-prfchw -mno-adx -mfxsr -mxsave -mxsaveopt -mno-avx512f -mno-avx512er -mno-avx512cd -mno-avx512pf -mno-prefetchwt1 -mno-clflushopt -mno-xsavec -mno-xsaves -mno-avx512dq -mno-avx512bw -mno-avx512vl -mno-avx512ifma -mno-avx512vbmi -mno-clwb -mno-mwaitx -mno-clzero -mno-pku --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=3072 -mtune=sandybridge

Na última opção (-mtune=xxxxx), está a informação que precisamos junto com a de cima, para saber o que colocar na opção do menuconfig.

Antes saía o tipo mtune (Core2, Dual Core etc), agora saiu o nome da "família". No caso é um Core i5, por isso execute os dois comandos: cat /proc/cpuinfo e a linha acima do cc). Qualquer dúvida, jogue na internet o nome da "família" que aparecer em -mtune.

No caso do Core 2 Duo, do Dual Core e dos Pentium 4, foi marcada a opção Core 2/newer Xeon, por eles terem dois núcleos (cores).

A saída do comando anterior será mais amplamente utilizada adiante. Capture a tela, ou execute o comando novamente depois de configurar o kernel pelo make menuconfig. Mas não se preocupe, depois isso será lembrado.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Instalação
   3. Configurando e otimizando
   4. Compilando e otimizando
Outros artigos deste autor

Redes de Computadores · IPtables · Endereços IPs - Explicações básicas

Compilação de Kernel

Entendendo o que é URI, URL, URN e conhecendo as diferenças entre POST e GET

Problema no GRUB no Debian Squeeze 6.0.7 [Resolvido]

Atualizar o macOS no Mac - Opencore Legacy Patcher

Leitura recomendada

Compilar o kernel no Debian

Compilar kernel em distros baseadas em Debian

Compilação comentada do kernel

Kernel 2.6.9 em 20 passos

Como compilar o kernel do Linux (testado e revisado)

  
Comentários
[1] Comentário enviado por removido em 01/10/2021 - 12:50h

Vou adaptar ao manual, que eu estou escrevendo, para o Slackware, gostei bastante Parabéns.

[2] Comentário enviado por cizordj em 01/10/2021 - 12:58h

"Leia todo o artigo antes de sair executando comandos"

e eu aqui já digitando uname -r

[3] Comentário enviado por nixus100 em 01/10/2021 - 15:04h


a

[4] Comentário enviado por nixus100 em 01/10/2021 - 15:04h


[3] Comentário enviado por nixus100 em 01/10/2021 - 15:04h


a



[5] Comentário enviado por sacioz em 01/10/2021 - 19:55h

Gostei muito...favoritado e lido relido...))

[6] Comentário enviado por maurixnovatrento em 02/10/2021 - 09:02h


Muito bom, vou fazer os testes para o Slackware também.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]

[7] Comentário enviado por Freud_Tux em 07/10/2021 - 23:05h

Dica favoritada com sucesso.

Valeus Buck ;)

-------------------------------------------------------------------------------------------------------------------------------------------------
"[...]Sou muito noob ainda usando o terminal, então preciso de ajuda "mastigada", pra operá-lo.
"Sou velho e meus dentes desgastados. Estude linux www.guiafoca.org";

" Ignorance is bliss, for learning is the highest joy. - High Elf Archer

[8] Comentário enviado por Buckminster em 09/10/2021 - 01:21h


[1] Comentário enviado por lucasjosef23 em 01/10/2021 - 12:50h

Vou adaptar ao manual, que eu estou escrevendo, para o Slackware, gostei bastante Parabéns.


Obrigado.

[9] Comentário enviado por Buckminster em 09/10/2021 - 01:22h


[5] Comentário enviado por sacioz em 01/10/2021 - 19:55h

Gostei muito...favoritado e lido relido...))



Obrigado.

[10] Comentário enviado por Buckminster em 09/10/2021 - 01:22h


[7] Comentário enviado por Freud_Tux em 07/10/2021 - 23:05h

Dica favoritada com sucesso.

Valeus Buck ;)

-------------------------------------------------------------------------------------------------------------------------------------------------
"[...]Sou muito noob ainda usando o terminal, então preciso de ajuda "mastigada", pra operá-lo.
"Sou velho e meus dentes desgastados. Estude linux www.guiafoca.org";

" Ignorance is bliss, for learning is the highest joy. - High Elf Archer


Estamos aí.

[11] Comentário enviado por edps em 21/11/2021 - 18:32h


Uma abordagem bem interessante, vou testá-la no Gentoo, onde hj uso um kernel enlatado, acho que gentoo-kernel ou kernel-gentoo, algo do tipo. Favoritado!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts