Compilar e instalar o kernel Linux (passos 5–8)

5 Construir o kernel
Para construir o kernel, execute o comando abaixo no diretório de compilação apropriado:
make rpm
Seja paciente: a compilação do kernel pode levar desde vários minutos até algumas horas, dependendo da configuração do kernel e da velocidade do seu processador. Definição rápida: RPM é o formato de pacote usado por distribuições derivadas do Red Hat (incluindo Mandriva) para distribuir software compilado.
Notas importantes:
- Verifique espaço em disco em /boot e /usr/src antes de iniciar.
- Compile com NPROC apropriado (ex.: make -j4) se estiver usando um método alternativo; no fluxo acima o alvo make rpm geralmente controla o paralelismo.
6 Instalar o novo kernel
Após a compilação bem-sucedida, serão criados um arquivo src.rpm e um pacote .rpm binário. O arquivo src.rpm normalmente fica em /usr/src/rpm/SRPMS/. Descubra o nome executando:
ls -l /usr/src/rpm/SRPMS/
No exemplo original, o SRC RPM foi chamado kernel-2.6.18.3default-1.src.rpm.
Os pacotes binários .rpm estarão em /usr/src/rpm/RPMS/
ls -l /usr/src/rpm/RPMS/i386/
No exemplo, o RPM foi kernel-2.6.18.3default-1.i386.rpm.
Para instalar o pacote RPM do kernel use:
cd /usr/src/rpm/RPMS/i386/
rpm -ivh kernel-2.6.18.3default-1.i386.rpm
Observações:
- Você pode transferir esse pacote .rpm para outras máquinas Mandriva e instalá-lo lá sem recompilar.
- Use rpm -Uvh para atualizar se preferir substituir um kernel existente em vez de manter ambos.
Agora é preciso criar um ramdisk (initrd) para o novo kernel; sem ele o sistema provavelmente não fará boot:
mkinitrd /boot/initrd-2.6.18.3-default.img 2.6.18.3-default
Explicação em uma linha: mkinitrd constrói a imagem de inicialização que contém módulos e drivers necessários para montar o root filesystem durante o boot.
7 Configurar o carregador LILO
É necessário atualizar o carregador LILO para que ele ofereça o novo kernel no arranque.
- Liste o conteúdo de /boot para identificar vmlinuz- e initrd- gerados:
ls -l /boot
Você deverá ver algo como vmlinuz-2.6.18.3-default e initrd-2.6.18.3-default.img.
- Edite /etc/lilo.conf. Use um stanza existente como modelo, substitua os caminhos do kernel e initrd e adicione o novo stanza acima dos outros. Garanta um label único (ex.: linux-2.6.18.3-default) e, se quiser que esse kernel seja o padrão, coloque exatamente o mesmo valor na linha default.
vi /etc/lilo.conf
Exemplo de lilo.conf antes de adicionar o novo stanza:
# File generated by DrakX/drakboot
# WARNING: do not forget to run lilo after modifying this file
default="linux"
boot=/dev/sda
map=/boot/map
keytable=/boot/us.klt
menu-scheme=wb:bw:wb:bw
compact
prompt
nowarn
timeout=100
message=/boot/message
image=/boot/vmlinuz
label="linux"
root=/dev/sda6
initrd=/boot/initrd.img
append=" resume=/dev/sda5 splash=silent"
vga=788
image=/boot/vmlinuz
label="linux-nonfb"
root=/dev/sda6
initrd=/boot/initrd.img
append=" resume=/dev/sda5"
image=/boot/vmlinuz
label="failsafe"
root=/dev/sda6
initrd=/boot/initrd.img
append=" failsafe resume=/dev/sda5"
E assim fica depois de adicionar o novo stanza (observe a mudança em default, image e initrd):
# File generated by DrakX/drakboot
# WARNING: do not forget to run lilo after modifying this file
default="linux-2.6.18.3-default"
boot=/dev/sda
map=/boot/map
keytable=/boot/us.klt
menu-scheme=wb:bw:wb:bw
compact
prompt
nowarn
timeout=100
message=/boot/message
image=/boot/vmlinuz-2.6.18.3-default
label="linux-2.6.18.3-default"
root=/dev/sda6
initrd=/boot/initrd-2.6.18.3-default.img
append=" resume=/dev/sda5 splash=silent"
vga=788
image=/boot/vmlinuz
label="linux"
root=/dev/sda6
initrd=/boot/initrd.img
append=" resume=/dev/sda5 splash=silent"
vga=788
image=/boot/vmlinuz
label="linux-nonfb"
root=/dev/sda6
initrd=/boot/initrd.img
append=" resume=/dev/sda5"
image=/boot/vmlinuz
label="failsafe"
root=/dev/sda6
initrd=/boot/initrd.img
append=" failsafe resume=/dev/sda5"
- Aplique a configuração do LILO executando:
lilo
- Reinicie o sistema:
shutdown -r now
Após o boot, verifique a versão do kernel em uso:
uname -r
Deverá exibir algo como:
2.6.18.3-default
Se o sistema não iniciar com o novo kernel
- Reinicie e, no menu do LILO, selecione o kernel antigo para iniciar o sistema.
Dicas de recuperação:
- Se o novo kernel não iniciar, remova o stanza problemático de /etc/lilo.conf e execute lilo novamente.
- Verifique /var/log/messages ou dmesg para mensagens de erro relacionadas a módulos ausentes ou falhas no initrd.
- Confirme que initrd contém os módulos de disco e sistema de arquivos necessários (p.ex. drivers do controlador de disco).
8 Links
- Mandriva: http://www.mandriva.com
- The Linux Kernel Archives: http://www.kernel.org
Lista de verificação antes de subir o kernel (checklist)
- Backup completo do sistema ou snapshots de volumes importantes
- Copiar o kernel .rpm e os initrd gerados para um local seguro
- Verificar espaço em /boot e /usr/src
- Validar /etc/lilo.conf e anotar o label do kernel atual
- Ter um meio de restauração/boot alternativo (CD, pendrive ou kernel antigo no menu)
Quando este procedimento pode falhar (e como diagnosticar)
Problema: kernel não inicia (kernel panic, falta de initramfs)
- Diagnóstico: inicialize com kernel antigo e verifique dmesg e /var/log/messages; confirme que mkinitrd incluiu módulos de disco.
- Mitigação: regenere initrd incluindo módulos adicionais ou ajuste a configuração do kernel e recompile.
Problema: LILO não reconhece a nova entrada após editar lilo.conf
- Diagnóstico: esqueceu de executar lilo; /etc/lilo.conf contém erro de sintaxe.
- Mitigação: corrigir /etc/lilo.conf e executar lilo; verifique mensagens de erro do comando lilo.
Papel do administrador vs. desenvolvedor (checklists rápidos)
Administrador:
- Fazer backup completo
- Verificar compatibilidade de módulos proprietários (ex.: drivers RAID)
- Testar boot em ambiente controlado
Desenvolvedor/Compilador do kernel:
- Garantir configuração (.config) correta
- Incluir opções de depuração se necessário
- Validar que módulos críticos estão compilados como módulo ou built-in conforme necessário
Critérios de aceitação
- O sistema inicializa automaticamente com o novo kernel quando configurado como default em /etc/lilo.conf.
- uname -r exibe a versão esperada do kernel.
- Serviços críticos montam e funcionam (p.ex. sistemas de arquivos e controladores RAID) após o boot.
Resumo
Construir e instalar um kernel envolve: compilar via make rpm, instalar o .rpm resultante, gerar o initrd correto, atualizar /etc/lilo.conf e executar lilo antes de reiniciar. Mantenha sempre um kernel funcional como fallback no menu do LILO e não esqueça de criar backups antes de tentar em produção.
Materiais semelhantes

Como cancelar a assinatura do Midjourney AI

Filtros AR para Instagram: guia e alternativas

Modo escuro no Google Search: como ativar

Jogar Pokémon GO no PC com BlueStacks

Apagar discos com shred no Linux
