Guia de tecnologias

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

5 min read Linux Atualizado 09 Oct 2025
Compilar e instalar o kernel Linux
Compilar e instalar o kernel Linux

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//, por exemplo /usr/src/rpm/RPMS/i386/ ou /usr/src/rpm/RPMS/x86_64/ dependendo da sua arquitetura. Para listar:

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.

  1. 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.

  1. 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"
  1. Aplique a configuração do LILO executando:
lilo
  1. 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.

Menu do LILO no arranque mostrando opções de kernel

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


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.

Autor
Edição

Materiais semelhantes

Instalar e usar Podman no Debian 11
Containers

Instalar e usar Podman no Debian 11

Apt‑pinning no Debian: guia prático
Administração de sistemas

Apt‑pinning no Debian: guia prático

Injete FSR 4 com OptiScaler em qualquer jogo
Tecnologia

Injete FSR 4 com OptiScaler em qualquer jogo

DansGuardian e Squid com NTLM no Debian Etch
Infraestrutura

DansGuardian e Squid com NTLM no Debian Etch

Corrigir erro de instalação no Android
Android

Corrigir erro de instalação no Android

KNetAttach: Pastas de Rede remota no KDE
KDE

KNetAttach: Pastas de Rede remota no KDE