Compilando Kernel

Iniciado por Diego_Rocha, 15 de Maio de 2007, 12:51

tópico anterior - próximo tópico

Diego_Rocha

Ai galera resolvi hoje escrever um breve artigo de compilação de kernel, lembrando que, como nem todos tem o mesmo pc vamos abordar a compilação de uma forma generica, ficando a seu cargo escolher as opções que melhor se adaptam ao seu pc, então vamos deixar de conversa mole e partir para compilação;

Antes de começar:
Para se compilar é necessarios ter o build-essentials e o kernel-package que pode ser instalado assim


diego@rocha:~$ sudo apt-get install build-essentials kernel-package


1° o primeiro passo é baixar o codigo fonte do kernel, isso pode ser feito em www.kernel.org,

2° depois de baixado o codigo fonte iremos descomprimir, se você baixou em formato tar.bz2 use o seguinte comando


diego@rocha:~$ sudo tar -jxvf linux-XXXXX.tar.bz2 -C /usr/src


se baixou o codigo fonte com o formato .tar.gz use esse comando


diego@rocha:~$ sudo tar -zxvf linux-XXXXX.tar.gz -C /usr/src


3° pronto já descompactamos e ja poderemos começar a compilação,

3.1 - vá ate a pasta /usr/src e crei um link do seu kernel que acabamos de descompactar para a pasta linux isso pode ser feito assim,


diego@rocha:~$ cd /usr/src
diego@rocha:/usr/src$ sudo rm linux         obs:  esse comando caso voce ja tenha uma pasta antiga com nome de linux
diego@rocha:/usr/src$ sudo ln -s linux-XXXXX linux

obs: lembrando sempre que o XXXXX do linux-XXXXX é a versão do kernel que você baixou

3.2 - agora vamos vamos copiar o .config generico do seu kernel atual para podermos ter uma base, e não esquecer de selecionar alguma opção fundamental, é sempre bom usar um config ja existente de um kernel que esteja funcionando bem, para não corrermos o risco de esquecer de alguma opção e ver a tão temida mensagem de kernel-panic, então vamos fazer isso, geralmente os "configs" que ficam na pasta /boot vem com o numero da versão do kernel no final exemplo config-2.6.18, então vamos copiar ele para o /usr/src/linux com o seguinte comando


diego@rocha:/usr/src$ cd linux
diego@rocha:/usr/src/linux$ cp /boot/config-XXXX .config

obs: Pegue sempre o config do kernel mais recente para uma melhor compatibilidade

Pronto kernel descopactado, config copiado vamos agora para a proxima etapa;

4° A próxima e mais dolorida etapa é a configuração, é o momento crucial da compilação, que exige que voce tenha bom conhecimento do hardware que possui, deslizes não são aceitos em uma compilação de kernel por isso usamos o config do seu kernel que esta funcionando, imagine que seu sistema de arquivos é ext3 e voce compila o kernel com a opção ext3 desativada ou como modulo, nem carregaria seu sistema, por isso é bom conhecer o que voce tem no seu pc e o que é fundamental para o funcionamento dele, lembre-se sempre que o www.google.com.br/linux esta ai para te ajudar então se voce acha que deve ativar uma opção pesquise antes sobre ela no google ele com certeza vai te explicar melhor o que fazer; a escolha entre modulo( carregado quando necessario) e build-in( carregado no boot) tambem é fundamental para um bom desempenho do sistema, por isso não va com pressa, tenha calma e va devagar na hora da escolha,

4.1° então vamos lá, se você foi esperto e leu o README que vem com o kernel você viu que temos varias opções a respeito de como fazer a configuração, podemos usar o make menuconfig, o oldconfig, o xconfig e o gconfig, se voce usa kde o xconfig é mais aconselhado pq usa a biblioteca Qt, se usa o gnome é mais aconselhado o gconfig que usa a Gtk+, se você prefere uma opção mais simples pode usar o menuconfig, que usa o dialogs para a escolha das opções, o oldconfig eu não aconselho, mais fica a seu criterio experimentar ele ou não, quando se decidir entra qual usar pode chamar ele no terminal


diego@rocha:/usr/src/linux$ make menuconfig                 ***se escolheu menuconfig
diego@rocha:/usr/src/linux$ make xconfig                        ***se escolheu xconfig
diego@rocha:/usr/src/linux$ make gconfig                        ***se escolheu gconfig
diego@rocha:/usr/src/linux$ make oldconfig                     ***se escolheu oldconfig


4.2° depois de escolhida a opção de configuração, você só terá que carregar o .config que copiamos para a pasta /usr/src/linux lembra, então vai na opção load ou abrir, e carregue o arquivo .config q esta no mesmo diretorio do linux em /usr/src/linux/.config, agora é com você escolher o que lhe convém,

5° depois de escolhido tudo que queria e tendo certeza que não se esqueceu de nada, vamos compilar, com o seguinte comando


diego@rocha:/usr/src/linux$ sudo make
diego@rocha:/usr/src/linux$ sudo make modules_install


Isso pode demorar horas e ate dias dependendo da sua maquina e da quantidade de opções escolhida, então nessa hora é bom ir tomar um cafezinho assistir um filme sei la XDD, se tudo ocorreu bem ja podemos partir para a etapa final,

6° agora vamos copiar o bzImage para a pasta boot com o seguinte comando


diego@rocha:/usr/src/linux$ sudo cp arch/i386/boot/bzImage /boot/vmlinuz-XXXXX

obs: relebrando o XXXXX é a sua versão do kernel

7° vamos copiar o System.map


diego@rocha:/usr/src/linux$ cp System.map /boot/System.map-XXXXX


7.1° E vamos linkar o System.map-XXXXX para o System.map


diego@rocha:/usr/src/linux$ ln -s /boot/System.map-XXXXX /boot/System.map


8° e pro ultimo copiar o .config para o /boot para usarmos como base em uma proxima compilação


diego@rocha:/usr/src/linux$ cp .config /boot/config-XXXXX


8.1° se voce compilou seu kernel com o necessario para uma inicialização em build-in pule essa parte se não sabe nem do que to falando faça isso

se usa ext3

diego@rocha:/usr/src/linux$ cd /boot
diego@rocha:/boot$ mkinitrd -c -k XXXXX -m jbd:ext3 -f ext3 -r /dev/hdXX


se usa reiserfs

diego@rocha:/usr/src/linux$ cd /boot
diego@rocha:/boot$ mkinitrd -c -k XXXXX -m reiserfs

obs: Sempre lembrando que o XXXXX é o numero da versão do seu kernel

se usa outro tipo de Sistema de Arquivos faça isso www.google.com.br/linux e pesquise sobre como fazer o initrd do seu FS  ;)

9° agora adicione no grub o novo kernel,


diego@rocha:/boot$ gedit /boot/grub/menu.lst

e acrescente

Citar
#kernel-XXXX
title Kernel-XXXXX
root (hd0, 0)                         **** aqui voce coloca sua partição
kernel /boot/vmlinuz-XXXXX                    ***** se lembra de mudar o XXXXX para seu kernel
root = /dev/hda1 ro vga=773                  **** aqui tbm suas opções
initrd = /boot/initrd.gz                               

10° bom pessoal é isso, se funcionou blza parabens, se não funcionou blza, tenta denovo só que dessa vez com mais atenção e sempre usando nosso grande amigo google, peço desculpas pelos erros de ortografia e qualquer sugestão sera muito bem vinda, é isso ai espero ter ajudado t+++

thiagof.fernandes

Muito bom tutorial .. só uma correção

no primeiro comando não é essentials e sim essential .. sem o S

diego@rocha:~$ sudo apt-get install build-essential kernel-package

valeu  ;D

Jeferson Lucas

Bom, eu já estava desistindo de tentar compilar um Kernel. Segui vários tutorias, entendi muita coisa do menuconfig, mas sempre que ia pro novo Kernel, nada funcionava. Além de ficar mais lento, não reconhecia nada do meu notebook: placa de vídeo, rede, som nada. Ia instalar os drivers e acusava que já estavam todos instalados.

Vou tentar de novo hoje de noite, vamos ver se tenho mais sorte. Se não, so vou voltar a tentar compilar de novo só daqui há alguns meses kkkkk.

Valeu pelo tutorial.

Hqxriven

CitarBom, eu já estava desistindo de tentar compilar um Kernel. Segui vários tutorias, entendi muita coisa do menuconfig, mas sempre que ia pro novo Kernel, nada funcionava. Além de ficar mais lento, não reconhecia nada do meu notebook: placa de vídeo, rede, som nada. Ia instalar os drivers e acusava que já estavam todos instalados.

Vou tentar de novo hoje de noite, vamos ver se tenho mais sorte. Se não, so vou voltar a tentar compilar de novo só daqui há alguns meses kkkkk.

Valeu pelo tutorial.

Se vc drivers restritos no ubuntu ao compilar vc vai perdê-los...

Eu faço compilações dessa forma...

http://hqxriven.wordpress.com/2008/02/24/compilando-um-kernel-desktops-do-jeito-do-hqxriven-no-kuxbuntu/

Foi o jeito mais fácil que arranjei...

O vídeo instalo com o envy

A rede não uso

O som funciona normalmente!!!

Que tipos de problemas vc tem??
Sem distro Linux fixa - Kernel Omnislash
Meu objetivo nesse fórum é ajudar. Sou um mero humano mas desejo sempre aprender e melhorar em tudo o que faço em minha vida. Então, por favor, quando eu postar me notifique depois

Metalbobolic

Utilizando esses passos não seria mais fácil? ou tem algo ae inapropriado..

eu coompilei meu kernel 2.6.36.2 com esses comandos e foi tranquilo..

#make -j 4
# make -j 4 modules
# make -j 4 modules_install

Instale o kernel compilado.

# make install

Crie uma imagem de inicialização para o kernel, para ser levantada no boot

# cd /boot
# mkinitramfs -o initrd.img-2.6.35.1 2.6.35.1

(Substitua a versão em negrito pela versão do kernel baixado)

Atualize a lista de kernels do grub

# update-grub