1. Logo após o arquivo referente ao kernel
Linux 2.6.31.1 ter sido totalmente copiado para o seu computador, desconecte da Internet e efetue logon com o super-usuário (root);
2. Estando logado como root, verifique se o prompt de comando está parecido com uma das duas opções abaixo:
[root@chicago /]#
Ou
chicago:~#
3. Acesse o diretório onde você salvou o arquivo "linux-2.6.31.1.tar.bz2".
# cd /diretorio-onde-esta-o-arquivo
4. Mova o arquivo "linux-2.6.31.1.tar.bz2" para o diretório "/usr/src":
# mv linux-2.6.31.1.tar.bz2 /usr/src
5. Vamos acessar o diretório "/usr/src":
# cd /usr/src
6. Antes de iniciar o processo de compilação do kernel Linux, é necessário descompactar o arquivo "linux-2.6.31.1.tar.bz" com o comando:
# tar -xvf linux-2.6.31.1.tar.bz2
7. Note que será criado o diretório "linux-2.6.31.1" onde estão armazenados os arquivos e diretórios referentes ao código fonte do kernel Linux 2.6.31.1:
# ls
linux-2.6.31.1 linux-2.6.31.1.tar.bz2 linux-source-2.6.26.tar.bz2
8. Apenas como precaução, vamos alterar o dono e o grupo de todos os arquivos e diretórios que estão dentro do diretório "/usr/src/linux-2.6.31.1" digitando o comando:
# chown root.root -R -v /usr/src/linux-2.6.31.1/*
9. As configurações atuais do kernel Linux que foi instalado com o Debian
GNU/Linux 5.0.3 codinome Lenny estão armazenadas no arquivo "/boot/config-2.6.26-2-686". Irei utilizá-las como base para compilar o kernel Linux 2.6.31.1. Para isso, digitei o comando:
# cp /boot/config-2.6.26-2-686 /usr/src/linux-2.6.31.1/.config
10. OK, vamos em frente. Acesse o diretório 'linux-2.6.31.1':
# cd linux-2.6.31.1
11. Vamos iniciar o processo de compilação do kernel Linux 2.6.31.1. Devemos, primeiramente, configurar/selecionar as opções que queremos compilar/instalar através de um menu. Para isso, digite o comando:
# make menuconfig
12. Na tela que surgir, selecione a opção "Load an Alternate Configuration File", isto é, "Ler um arquivo de configuração alternativo" e tecle "ENTER". Utilizei o arquivo ".config" como base para acrescentar e remover algumas opções para o kernel Linux 2.6.31.1. Caso tenha dúvidas, por favor, veja o passo número 5.9. Então digite o nome do arquivo ".config" e tecle "ENTER".
A partir deste momento você poderá acrescentar ou remover algumas opções referentes ao hardware utilizado pelo seu computador. O significado dos caracteres especiais utilizados para acrescentar ou remover as opções que posteriormente serão compiladas são:
- [ * ] = compilado dentro do kernel Linux por padrão;
- [ ] = não compilado;
- < M > = compilado como módulo;
- < * > = compilado dentro do kernel Linux;
- < > = não compilado.
Quando se tem opções como colchetes [ ], você tem duas opções:
- compilar dentro do kernel Linux por padrão
- não compilar
Já quando se tem opções como < >, você pode:
- compilar como módulo
- compilar dentro do kernel Linux
- não compilar
13. Infelizmente, por motivo de falta de tempo, não pude acrescentar neste tutorial as opções referentes aos diversos drivers de dispositivos que a versão 2.6.31.1 do kernel Linux oferece. Então ficará por sua conta selecionar essas opções observando a configuração do seu computador, ou seja, o seu hardware (modelo da placa de som, modelo da placa de vídeo, modelo da placa de rede, dispositivos USB, firmware, sistemas de arquivos, tipo do processador etc).
14. Logo após selecionar/marcar os itens que serão compilados, selecione a opção "Save an Alternative Configuration File", isto é, "Salvar um arquivo de configuração alternativo" para salvar as modificações que você realizou na configuração do kernel Linux 2.6.31.1. Depois de teclar "ENTER", digite um nome para o arquivo como, por exemplo, "config-nova-configuracao-do-kernel.txt".
15. Por fim, selecione a opção "Exit" (Sair) e tecle "ENTER".
16. Na tela que surgir, "Do you wish to save your new kernel configuration?" (Você deseja salvar sua nova configuração do kernel Linux?), selecione a opção "Yes" e tecle "ENTER".
17. Estando no prompt de comando, digite:
# make-kpkg clean
O comando "make-kpkg clean" é utilizado para limpar construções anteriores do kernel Linux.
18. Para criar um arquivo/pacote DEB com o kernel Linux 2.6.31.1 compilado, digite o comando:
# make-kpkg --append-to-version "-VERSAO_TAL" --initrd kernel_image
Altere o texto "VERSAO_TAL" para um nome familiar. EX: -teste01. Aguarde... esse procedimento demorará alguns minutos.
19. Caso o comando "make-kpkg" tenha parado/terminado com a seguinte mensagem:
(...)
cc -m32 -Wall -Wmissing-declarations -Wmissing-prototypes
-O3 -I../../include -I../../arch/x86/include -U_FORTIFY_SOURCE
lguest.c -o lguest
lguest.c:21:25: error: sys/eventfd.h: No such file or directory
lguest.c: In function 'create_thread':
lguest.c:1021: warning: implicit declaration of function 'eventfd'
make: *** [lguest] Error 1
Você deverá alterar o arquivo "/usr/src/linux-2.6.31.1/Documentation/lguest/Makefile". Altere a linha:
all: lguest
Para:
all:
20. Rode/execute novamente o comando:
# make-kpkg --append-to-version "-VERSAO_TAL" --initrd kernel_image
Altere o texto "VERSAO_TAL" para um nome familiar. EX: -teste01. Aguarde... esse procedimento demorará alguns minutos. No final do processo de compilação do kernel Linux 2.6.31.1 você deverá visualizar as seguintes informações:
(...)
dpkg --build /usr/src/linux-2.6.31.1/debian/linux-image-2.6.31.1 ..
dpkg-deb: building package `linux-image-2.6.31.1' in `../linux-image-2.6.31.1_teste.1.0_i386.deb'.
make[2]: Leaving directory `/usr/src/linux-2.6.31.1'
make[1]: Leaving directory `/usr/src/linux-2.6.31.1'
21. Repare na terceira linha de baixo para cima:
dpkg-deb: building package `linux-image-2.6.31.1' in `../linux-image-2.6.31.1_teste.1.0_i386.deb'.
Ou seja, após compilar o kernel Linux, foi gerado o arquivo chamado "linux-image-2.6.31.1_teste.1.0_i386.deb" no diretório superior "..". Assim, digite o comando:
# cd ..
22. Então para instalar o kernel Linux versão 2.6.31.1, digite o comando:
# dpkg -i linux-image-2.6.31.1_teste.1.0_i386.deb
Caso o kernel Linux versão 2.6.31.1 seja instalado com sucesso, você verá as seguintes informações:
Selecting previously deselected package linux-image-2.6.31.1.
(Reading database ... 210162 files and directories currently installed.)
Unpacking linux-image-2.6.31.1 (from linux-image-2.6.31.1_teste.1.0_i386.deb) ...
Done.
Setting up linux-image-2.6.31.1 (teste.1.0) ...
Running depmod.
Running postinst hook script update-grub.
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-2.6.31.1
Found kernel: /boot/vmlinuz-2.6.26-2-686
Updating /boot/grub/menu.lst ... done
23. Por fim, vamos reiniciar o computador digitando:
# sync
# shutdown -r now
24. Pronto! Agora, quando aparecer o menu do GRUB, selecione a opção:
Debian GNU/Linux, kernel 2.6.31.1-VERSAL_TAL
25. Caso apareça alguma mensagem de erro durante a inicialização/boot do sistema operacional Debian GNU/Linux 5.0.3 codinome Lenny utilizando o kernel 2.6.31.1, reinicie o computador e acesse o sistema através do kernel antigo selecionando a seguinte opção:
Debian GNU/Linux, kernel 2.6.26-2-686
Caso o Debian GNU/Linux trave durante a inicialização do novo kernel 2.6.31.1 com a seguinte mensagem de erro:
Begin: Waiting for root file system ...
Você deverá optar em realizar um dos dois procedimentos abaixo:
1° procedimento: segundo o site
kernelnewbies, a partir da versão 2.6.19 do kernel Linux o suporte a dispositivos que utilizam a interface IDE (como, por exemplo, disco rígidos, drives de CD-ROM ou DVD-ROM) serão acessados, por padrão, pelo Debian GNU/Linux através de uma nova nomenclatura:
/dev/sda
/dev/sdb
/dev/sdc
/dev/sdd
Ao invés de:
/dev/hda (periférico configurado como MASTER na IDE primária)
/dev/hdb (periférico configurado como SLAVE na IDE primária)
/dev/hdc (periférico configurado como MASTER na IDE secundária)
/dev/hdd (periférico configurado como SLAVE na IDE secundária)
Esse recurso está selecionado na configuração do kernel Linux 2.6.31.1 na opção "Serial ATA (prod) and Parallel ATA (experimental) drivers" dentro do menu "Device Drivers". Caso queira realmente utilizar esse novo recurso, você deverá alterar os seguintes arquivos:
Arquivo
/etc/fstab:
(...)
# Editado por Eder Jordan - 04/10/2009
# /dev/hda2 / ext3 (...)
/dev/sda2 / ext3 (...)
#
# Editado por Eder Jordan - 04/10/2009
# /dev/hda4 /home ext3 (...)
/dev/sda4 /home ext3 (...)
#
# Editado por Eder Jordan - 04/10/2009
# /dev/hda3 none swap (...)
/dev/sda3 none swap (...)
#
# Editado por Eder Jordan - 04/10/2009
# /dev/hdc /media/cdrom0 udf,iso9660 (...)
/dev/sdc /media/cdrom0 udf,iso9660
(...)
Arquivo
/boot/grub/menu.lst:
(...)
## ## End Default Options ##
title Debian GNU/Linux 5.0.3 - Lenny - Kernel 2.6.31.1
root (hd0,1)
kernel /boot/vmlinuz-2.6.31.1-ej23mj root=/dev/sda2 ro quiet
initrd /boot/initrd.img-2.6.31.1-ej23mj
title Debian GNU/Linux 5.0.3 - Lenny - Kernel 2.6.31.1 (single-user mode)
root (hd0,1)
kernel /boot/vmlinuz-2.6.31.1-ej23mj root=/dev/sda2 ro single
initrd /boot/initrd.img-2.6.31.1-ej23mj
title Debian GNU/Linux 5.0.3 - Lenny - Kernel 2.6.26-2-686
root (hd0,1)
kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/hda2 ro quiet
initrd /boot/initrd.img-2.6.26-2-686
title Debian GNU/Linux 5.0.3 - Lenny - Kernel 2.6.26-2-686 (single-user mode)
root (hd0,1)
kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/hda2 ro single
initrd /boot/initrd.img-2.6.26-2-686
(...)
2° procedimento: também, segundo o site kernelnewbies:
"Well, the safe option is using the old driver: The old drivers will continue working just as they did before. There'll be no changes if you continue using the old drivers."
Tradução amadora: Bem, a opção segura é utilizar o driver antigo: ele continuará funcionando da mesma maneira que que fazia antes. Não haverá mudanças se você continuar usando o driver antigo.
E mais:
"If you want to be safe, use the old drivers."
Tradução amadora: Se você deseja estar seguro, utilize o driver antigo.
O driver antigo configurará o suporte a dispositivos que utilizam a interface IDE (como, por exemplo, disco rígidos, drives de CD-ROM ou DVD-ROM) através da mesma nomenclatura anterior à versões do kernel Linux 2.6.19, ou seja, 2.6.18, 2.6.17, 2.6.16 etc. Sua nomenclatura não altera, isto é:
/dev/hda (periférico configurado como MASTER na IDE primária)
/dev/hdb (periférico configurado como SLAVE na IDE primária)
/dev/hdc (periférico configurado como MASTER na IDE secundária)
/dev/hdd (periférico configurado como SLAVE na IDE secundária)
Optei por utilizar o 2° procedimento. Para isso, na configuração do kernel Linux 2.6.31.1 , selecionei a opção "ATA/ATAPI/MFM/RLL support", dentro do menu "Device drivers e desmarquei a opção referente ao novo driver, "Serial ATA (prod) and Parallel ATA (experimental) drivers" dentro do menu "Device Drivers". Assim não será necessário alterar os arquivos /etc/fstab e /boot/grub/menu.lst como no 1° procedimento.