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".
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.
[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!
[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
[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
[root@luis 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?
[root@luis 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
[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.
[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.