Compilando o KERNEL sem medo do "kernel panic"

Artigo dedicado a usuários iniciantes que sentem um certo receio de se aventurar a compilar o kernel com medo de dar algum erro, como o famoso "Kernel Panic".

[ Hits: 38.912 ]

Por: Eduardo em 10/02/2007


Alterando e compilando o kernel



Estando dentro da pasta do source kernel você poderá configurar o Linux com os comandos:

# make menuconfig

(minha preferida): Interface amigável baseada em ncurses pra modo texto.

# make xconfig

Para quem curte modo gráfico esta opção é mais adequada.

# make config

Interface modo texto pouco amigável.

Abaixo o esquema "make menuconfig":


Feito isso você poderá setar as opções dos drivers de dispositivo como módulo, que podem vir a ser carregados posteriormente, ou seja, o sistema irá compilar, mas cabe a você decidir se irá carregar ou não, ou se serão carregados diretamente no kernel na inicialização.

Um exemplo do uso disso para um usuário leigo:

Existe um módulo chamado apm (Advanced Power Management) que eu uso para que o meu computador ATX desligue sozinho ao acionar o shutdown, o módulo APM que é encarregado de fazer isso, mas eu não preciso que tal módulo fique carregado no kernel direto enquanto eu uso o computador, isso ocuparia memória, então eu deixo ele como módulo e quando eu for dar o shutdown, carrego ele com o comando "modprobe". Para um computador com muitos recursos isso passa despercebido, mas eu necessito de memória e gosto de deixar o PC "enxuto".

Para que vocês conheçam algumas opções de configuração do kernel, abaixo disponibilizei o link de um trecho do "Kernel do Linux HOWTO" em português:
Após terem feito as configurações adequadas ao kernel, vamos compilar com os seguintes comandos:

# make dep (cria as dependências)
# make clean (limpa arquivos objetos e outras coisas que o antigo kernel deixou)

Agora que está o segredo, em vez de utilizar o comando "make bzImage", vamos utilizar outro o "make bzlilo".

O comando "make bzimage" substitui a imagem atual do kernel pela imagem nova gerada, e se houver algum erro de configuração você não pode voltar atrás, quando você utiliza o comando "make bzlilo", ele coloca os arquivos System.map e vmlinuz no diretório raiz ( / ).

Feito isso vamos alterar o lilo pra carregar a nova imagem na próxima parte do artigo.

Página anterior     Próxima página

Páginas do artigo
   1. Baixando e descompactando o kernel
   2. Alterando e compilando o kernel
   3. Alterando o Lilo
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

UZIX - O Linux do MSX (Z80)

Compilando o Kernel do OpenBSD 4.3 (GENERIC)

Afinal, o que é o Ubuntu?

Gerência e criação de módulos do kernel

Recompilando o kernel na distribuição Debian

  
Comentários
[1] Comentário enviado por removido em 10/02/2007 - 18:51h

OMG,te amo Oo essa parada do bzlilo eu não sabia! ajuda a lot! valeuzao!!!! o bom disso,é que,se alguma coisa der erro,é só meter um livecd e alterar no lilo Oo mto obrigado,oh salvador da pátria!

[2] Comentário enviado por phelipe em 10/02/2007 - 19:15h

nota 10... ótimo artigo :D

[3] Comentário enviado por GilsonDeElt em 10/02/2007 - 19:40h

D+, cara, mas ainda tenho uma dúvida:
Peguei o kernel 2.6.17.13 que veio no CD do meu Slack, compilei e instalei. Só que deu Kernel Panic, provavelmente porque minha partição raiz está formatada como ReiserFS, e o boot ocorria como ext2. O que faço para colocar o kernel 2.6 em funcionamento?
Desde já agradeço a ajuda!

[4] Comentário enviado por tenchi em 11/02/2007 - 10:18h

GilsonElt, vc tem que criar um "initrd", que eh um sistema de arquivos virtual que carrega os módulos necessários para a execução de tarefas já no início do boot, no seu caso, para carregar o módulo do reiserFS.
Tenet o seguinte:
# cd /boot/
# mkinitrd -c -k `uname -r` -m reiserfs
e em seguida, adicione no seu /etc/lilo.conf a seguinte linha, na sessão do kernel que vc usa:
initrd = /boot/initrd.gz


[5] Comentário enviado por removido em 11/02/2007 - 12:06h

Muito bom seu artigo. Da para dar uma base aos iniciantes sobre compilação de Kernel.

[6] Comentário enviado por albertguedes em 11/02/2007 - 14:16h

Também achei bom, mas devia ter feito logo com o kernel 2.6, que já tem drivers para equipamentos atuais, 2.4 pode ainda gerar uns problemas por causa disso. Mas de resto, valeu.

[7] Comentário enviado por luiscarlos em 11/02/2007 - 22:14h

[[email protected] linux]# make
CHK include/linux/version.h
CHK include/asm-i386/asm_offsets.h
make[1]: *** Sem regra para processar o alvo `init/main.o', necessário por `init/built-in.o'. Pare


alguém pode me ajudar?
[[email protected] linux]# uname -a
Linux luis 2.6.11-1.1369_FC4 #1 Thu Jun 2 22:55:56 EDT 2005 i686 athlon i386 GNU/Linux

[8] Comentário enviado por duda_syn em 12/02/2007 - 12:59h

Qt ao linux 2.6 eu andei compilando esses dias e com o make bzlilo ele nao coloca o vmlinuz em / e sim em /boot ele substitui...
mas se fizer as alterações em /boot e no linux.conf , o arquivo se faz válido...
luis0101 acontece isso qd vc da o make bzlilo??
explica melhor.. vlww

[9] Comentário enviado por Elton Luiz em 13/02/2007 - 00:12h

muito bom !

[10] Comentário enviado por removido em 13/02/2007 - 01:17h

Que artigo fera .. vc tbm deve ser bom d cama hein ..
manda av assim vai, garanhão .. deliciaaaa .. uiiiiiiiiii ssssssssss

[11] Comentário enviado por duda_syn em 13/02/2007 - 01:27h

q mlk excroto esse meu primo afff

[12] Comentário enviado por tiago_herrmann em 13/02/2007 - 11:42h

Olá,

não é necessário renomear o diretório de módulos, basta editar o Makefile antes de começar a compilação e modificar a variável EXTRAVERSION, adiciondo uma string de sua preferência, como "ver1", ou até mesmo a data do build do kernel.
Acredito que um ponto importante é que, se não for usado um initrd, é necessário inserir intrinseco ao kernel o módulo relativo ao filesystem e a controladora do hd. (seja scsi, ide, etc). De outra forma você receberá um kernel panic por não conseguir montar a particao root.

até

[13] Comentário enviado por hugoalvarez em 14/02/2007 - 13:40h

Olá,

é sempre bom fazerem as pessoas perderem o medo do kernel_panic, mas faltou o principal de compilar o kernel

1. make mrproper

Nessa compilação do artigo com certeza ficaram um milhão de coisas que a máquina nem faz idéia do que seja, mas carrega mesmo assim pq seu dono mandou.

2. aplicação do patch 2.4.34.1

Apesar de ser o último kernel da série 2.4 ainda lançaram um patch para ele, até que enfim trocaram pq foram descobertos um milhaão de bugs, segue a lista de atualização desse patch:

Summary of changes from v2.4.34 to v2.4.34.1
============================================

Christian Praehauser (1):
[NET] ethernet: Fix first packet goes out with MAC 00:00:00:00:00:00

dann frazier (1):
smbfs: fix problems introduced by last security backport

Oliver Neukum (1):
proper locking on disconnect for mdc800

Willy Tarreau (1):
Change VERSION to 2.4.34.1

Como podem ver deixar smb sem patch é grave para quem vai utilizar o samba.

Flws

[14] Comentário enviado por albertguedes em 04/06/2009 - 18:01h

Infelizmente, alguns dos motivos do "kernel panic" são as opções de configuração má escolhidas e não da compilação.


Contribuir com comentário