Como
compilar ou recompilar o kernel do Linux
Para compilar o kernel do linux você
vai precisar de:
•Código fonte do kernel (Na sua distro provavelmente tem o
fonte do kernel como um pacote, mas se vc quiser a versão
mais atual, vá ao ftp do kernel.org – ftp://ftp.br.kernel.org
Até o presente momento a versão mais atual estável
é a 2.4.20)
•make (esse tem na sua distro)
•gcc (esse também)
•gzip ou bzip2
•tar
O primeiro passo é
instalar o fonte do kernel.
Se vc for usar um pacote da sua distro,
procure por ele e instale-o, cada distro tem sua maneira específica
de instalar pacotes. Agora se vc for usar o fonte baixado no kernel.org, faça
o seguinte:
Dica: prefira sempre arquivos no
formato .tar.bz2, pois são mais compactos.
Copie o arquivo que você
baixou para o diretório /usr/src:
root@localhost
/>#cp /root/linux-2.4.20.tar.bz2 /usr/src/
(assumindo que você
baixou o arquivo no formato .tar.bz2, para o diretório
/root)
Desempacote e descompacte-o:
root@localhost
/>#cd/usr/src
root@localhost
/usr/src>#tar jxvf linux-2.4.20.tar.bz2Erro! A referência de hyperlink não é
válida.
root@localhost
/usr/src>#tar zxvf linux-2.4.20.tar.gz
Feito isso será
criado um diretório chamado linux-2.4.20,
vc deverá criar um link simbólico para ele com o nome linux. Se já
houver um diretório chamado linux, delete-o e depois crie-o novamente:
root@localhost
/usr/src>#rm linux
root@localhost
/usr/src>#ln -s linux-2.4.20 linux
Vá até o diretório linux:
root@localhost
/usr/src>#cd linux
Agora é hora de configurar o kernel. Eu
recomendo que você faça isso dentro do X, não importa em qual interface gráfica,
pois é muito mais simples e intuitivo. Se vc estiver em modo texto
e puder, entre no X:
root@localhost /usr/src/linux>#startx
e faça:
root@localhost /usr/src/linux>#make xconfig
Se quiser ou tiver que continuar em
modo texto, faça:
root@localhost
/usr/src/linux>make menuconfig
Se este não funcionar, tente:
root@localhost
/usr/src/linux>make config (este não é muito bom, pois você
vai ter que responder às coisas uma por uma. Os dois acima são
bem mais intuitivos)
Bom, eu não vou explicar aqui como se faz para
configurar o kernel. Talvez possa escrever um tutorial só
sobre isso, mas aqui não vem ao caso.
Terminando de configurar seu kernel,
salve e agora você vai compilar e criar as dependências
necessárias:
root@localhost
/usr/src/linux>make dep
Espere até o final do processo, quando o prompt
aparecer novamente, vc vai criar a imagem compactada do kernel, imagem esta que
será usada para dar boot no sistema:
root@localhost
/usr/src/linux>make clean (este comando é opcional, mas altamente recomendado,
pois limpa todo o lixo deixado por compilações anteriores, e não
demora nem 10 segundos)
root@localhost
/usr/src/linux>make bzImage
Este processo é
um tanto quanto demorado, espere. Se você configurou algo como módulo
– e com certeza vc faz isso – é hora de criar os módulos:
root@localhost
/usr/src/linux>make modules
Agora você deve ir ao diretório
/lib/modules:
root@localhost
/usr/src/linux>cd /lib/modules
e dar uma olhada nele.
root@localhost
/usr/src/linux>ls
É aqui que está a diferença entre compilar um novo kernel e recompilar o seu kernel atual. Se você estiver compilando um novo kernel, não precisa fazer nada aqui, mas se você estiver recompilando, é recomendado que você renomeie a pasta que contém seus módulos atuais para, se houver algum problema nesta nova compilação, você ter um backup do atual, que está funcionando. Digamos que você esteja usando atualmente o kernel 2.4.18. Deve haver um diretório chamado 2.4.18, ou, dependendo da sua distro, 2.4.18-alguma_coisa. Renomeie para old.2.4.18-alguma_coisa:
root@localhost
/lib/modules>#mv 2.4.18-alguma_coisa old.2.4.18-alguma_coisa.
Agora volte para /usr/src/linux
root@localhost
/lib/modules>#cd /usr/src/linux
Faça:
root@localhost
/usr/src/linux>#make modules_install
para instalar os módulos.
Dê uma olhada novamente na pasta
/lib/modules. Deve haver uma nova pasta com o nome do kernel que você
acabou de compilar.
Bem, se você
chegou aqui sem problemas, pode respirar fundo e dar um sorriso. A parte mais
complicada (complicada??!) já passou.
Agora você deve configurar seu gerenciador de
boot para carregar a imagem do seu novo kernel. Os dois gerenciadores de boot
que existem para linux são o GRUB (Grand Unified Bootloader) e o LILO (LInux LOader).
Para qualquer um dos dois você
deve copiar a imagem compactada do kernel para o diretório
/boot. A imagem está localizada em /usr/src/linux/arch/i386/boot e se chama
bzImage.
root@localhost
/usr/src/linux>cp arch/i386/boot/bzImage /boot
Para o LILO:
vá até o diretório /etc:
root@localhost
/usr/src/linux>cd /etc
edite o arquivo lilo.conf:
root@localhost
/etc>#vi lilo.conf
ou
root@localhost
/etc>#vim lilo.conf
Se você não souber utilizar o vi ou o vim,
utilize o editor de texto de sua preferência. Isso não
faz diferença.
Se você é leigo e não
está familiarizado com os nomes das partições
e dos hds no linux, vá até o final deste texto e leia uma breve explicação.
Aqui vou assumir que você tem o linux instalado na segunda partição
do primeiro hd na ide0.
Crie uma entrada assim
image=/boot/bzImage
root=/dev/hda2
label=Linux-novo
read-only
Depois reinstale o LILO:
root@localhost
/etc>lilo
Se tudo estiver ok, dê
um boot e escolha a entrada Linux-novo.
Se você usa o GRUB, faça
o seguinte:
vá ao diretório /boot/grub e edite o arquivo
menu.lst. Existem versões diferentes do GRUB, portanto siga o padrão
das entradas que já estão lá. Vai ser algo mais ou menos assim:
title Linux –
kernel novo kernel=(hd0,1)/boot/bzImage root=/dev/hda2
Pronto. Dê um boot e torça
para dar tudo certo....Agora você já pode tirar onda com a galera do linuxdicas dizendo que
compilou seu próprio kernel e está tudo ok. E, se quiser fazer uma doação
para mim, na conta...brincadeira, esquece...hehe
Nomes
de partições e hds no linux.
O linux é diferente do windows na hora de
definir os nomes dos seus hds. Digamos que você tenha dois hds, o primeiro com uma
partição primária com o windows instalado mais uma estendida com duas
unidades lógicas e outras duas primárias, cada uma com uma distro linux, e
o segundo hd só com uma partição e um drive de cd-rom. O primeiro hd
está na ide0 como master e o segundo com slave e o cd-rom na
ide1 como master. O windows reconheceria assim:
c: - primeira partição
do primeiro hd
d: - primeira unidade lógica
da partição estendida
e: - segunda “ “ “ “ “
As linux não
seriam reconhecidas
o segundo hd seria f: e o cd-rom g:
No linux ficaria assim:
As partições são numeradas da seguinte maneira.
/dev/hda1 –
primeira partição do primeiro hd
/dev/hda2 –
partição estendida
/dev/hda5 – primeira unidade lógica da partição
estendida
/dev/hda6 – segunda unidade lógica da partição
estendida
/dev/hda3 –
primeira partição linux – no GRUB seria (hd0, 2)
/dev/hda4 –
segunda partição linux – no GRUB seria (hd0,3)
/dev/hdb – segundo hd
/dev/hdc – cdrom (na verdade existe um link simbólico
chamado /dev/cdrom que aponta para o local onde o cdrom está
instalado)
Espero ter sido claro nas minhas
explicações. Qualquer dúvida me contate por email. Terei prazer
em responder a quaisquer perguntas e/ou ouvir reclamações
e sugestões.
Meu email: brunouff@yahoo.com.br