Download da última versão do kernel do Linux
A última versão pode ser obtida diretamente pelo link http://www.kernel.org/pub/linux/kernel/v2.6/
Baixando o source do Kernel (no momento em que escrevo a última versão é a 2.6.30.5)
Depois de feito o download, descompactar para o diretório /usr/src
1 |
tar jxvf linux-2.6.30.5. tar .bz2 -C /usr/src |
03 |
linux-2.6.30.5/virt/kvm/ |
04 |
linux-2.6.30.5/virt/kvm/coalesced_mmio.c |
05 |
linux-2.6.30.5/virt/kvm/coalesced_mmio.h |
06 |
linux-2.6.30.5/virt/kvm/ioapic.c |
07 |
linux-2.6.30.5/virt/kvm/ioapic.h |
08 |
linux-2.6.30.5/virt/kvm/iodev.h |
09 |
linux-2.6.30.5/virt/kvm/iommu.c |
10 |
linux-2.6.30.5/virt/kvm/irq_comm.c |
11 |
linux-2.6.30.5/virt/kvm/kvm_main.c |
12 |
linux-2.6.30.5/virt/kvm/kvm_trace.c |
Para facilitar as coisas, ir até o diretório /usr/src e criar um link simbólico para o código fonte chamado linux, ficando assim:
2 |
ln -sf linux-2.6.30.5 linux |
Resultado:
1 |
drwxr-xr-x 3 root root 4.0K Sep 2 06:18 . |
2 |
drwxr-xr-x 13 root root 4.0K Aug 31 14:25 .. |
3 |
lrwxrwxrwx 1 root root 14 Sep 2 06:18 linux -> linux-2.6.30.5 |
4 |
drwxrwxr-x 22 root root 4.0K Aug 16 18:19 linux-2.6.30.5 |
Preparando o ambiente para compilar o Kernel
Para compilar o Kernel no Linux, o ambiente do SO precisa estar preparado, com o gcc, ncurses etc.
Se sua instalação do CentOS ou do RedHat foi a mínima, o ambiente de desenvolvimento não foi instalado, sendo necessário fazer agora, isto é simples com o utilitário Yum que já resolverá todas as dependências.
yum install gcc make bison ncurses-devel rpm-build |
2 |
Installed: bison.i386 0:2.3-2.1 gcc.i386 0:4.1.2-44.el5 ncurses-devel.i386 0:5.5-24.20060715 |
3 |
Dependency Installed: cpp.i386 0:4.1.2-44.el5 glibc-devel.i386 0:2.5-34.el5_3.1 glibc-headers.i386 0:2.5-34.el5_3.1 kernel-headers.i386 0:2.6.18-128.7.1.el5 libgomp.i386 0:4.3.2-7.el5 |
4 |
Updated: glibc.i686 0:2.5-34.el5_3.1 glibc-common.i386 0:2.5-34.el5_3.1 nscd.i386 0:2.5-34.el5_3.1 |
Compilando o kernel para CentOS ou RedHat
Antes de iniciar com o processo da compilação, é interessante limpar algum lixo que possa ter ficado.
Uma boa idéia é pegar os parâmetros de configuração do kernel que vem com o original e esse arquivo encontra-se no diretório /boot, vamos copiá-lo para a raiz do source do kernel e executar o menuconfig.
2 |
cp /boot/config-` uname -r` .config |
Certifique-se de estar sempre no diretório /usr/src/linux.
Acessar o menu de configuração é a forma mais fácil de configurá-lo.
Como essa é uma compilação customizada então fica a sugestão de adicionar uma tag personalizada para o kernel que resultará, para fazer isso, faça da seguinte forma:
- Na tela incial, vá ao menu General setup –>
- Selecione Local version – append to kernel release
Isto feito o kernel resultante terá uma Tag de identificação.
Essa é a hora de customizar as configurações de hardware do seu kernel.
Após feita essa configuração e adequação, é hora de sair do menu de configuração e iniciar a compilação.
Ao sair da configuração, será solicitado que você grave as alterações feitas. Responda Yes.
Agora é a hora mais aguardada… a compilação.
Execute o comando make rpm
HOSTLD scripts/kconfig/conf |
scripts/kconfig/conf -s arch/x86/Kconfig |
set -e; cd ..; ln -sf /usr/src/linux-2.6.30.5 kernel-2.6.30.5fogonacaixadagua |
/bin/sh /usr/src/linux-2.6.30.5/scripts/setlocalversion > /usr/src/linux-2.6.30.5/.scmversion |
set -e; cd ..; tar -cz --exclude SCCS --exclude BitKeeper --exclude .svn --exclude CVS --exclude .pc --exclude .hg --exclude .git -f kernel-2.6.30.5fogonacaixadagua. tar .gz kernel-2.6.30.5fogonacaixadagua/. |
E dará início à compilação, vai demorar bastante tempo.
Término da compilação, sem erros:
2 |
Wrote: /usr/src/redhat/SRPMS/kernel-2.6.30.5fogonacaixadagua-1.src.rpm |
3 |
Wrote: /usr/src/redhat/RPMS/i386/kernel-2.6.30.5fogonacaixadagua-1.i386.rpm |
O kernel está compilado e foi gerado um .rpm para sua instalação.
Para confirmar que o kernel existe no formato rpm, execute o comando:
1 |
ls -alh /usr/src/redhat/RPMS/i386/ |
2 |
drwxr-xr-x 2 root root 4.0K Sep 2 11:45 . |
3 |
drwxr-xr-x 9 root root 4.0K Sep 2 10:39 .. |
4 |
-rw-r--r-- 1 root root 164M Sep 2 11:45 kernel-2.6.30.5fogonacaixadagua-1.i386.rpm |
Pacote RPM do novo kernel (32 bits)
Estou disponbilizando aqui o kernel compilado e empacotado.
Instalando o novo kernel
Como foi gerado um RPM do kernel, sua instalação ficou bem simples.
rpm -ivh /usr/src/redhat/RPMS/i386/kernel-2.6.30.5fogonacaixadagua-1.i386.rpm |
Preparing... ########################################### [100%] |
1:kernel ########################################### [100%] |
Confirmando que o novo kernel foi instalado.
1 |
config-2.6.18-128.el5 symvers-2.6.18-128.el5.gz |
2 |
config-2.6.30.5-fogonacaixadagua System.map-2.6.18-128.el5 |
3 |
grub System.map-2.6.30.5-fogonacaixadagua |
4 |
initrd-2.6.18-128.el5.img vmlinux-2.6.30.5-fogonacaixadagua.bz2 |
5 |
initrd-2.6.30.5-fogonacaixadagua.img vmlinuz-2.6.18-128.el5 |
6 |
lost+found vmlinuz-2.6.30.5-fogonacaixadagua |
Criando o initrd para o novo kernel
Criar as dependências dos módulos:
1 |
depmod 2.6.30.5-fogonacaixadagua |
É necessário criar um novo initrd para que o SO possa iniciar e pré-carregar os módulos de hardware necessário.
1 |
mkinitrd - v /boot/initrd-2.6.30.5-fogonacaixadagua.img 2.6.30.5-fogonacaixadagua |
Caso o seguinte erro ocorra:
1 |
No module dm-mem-cache found for kernel 2.6.30.5-fogonacaixadagua, aborting. |
Para contornar isso, utilizar o parâmetro --without-dmraid com o mkinitrd
1 |
mkinitrd --without-dmraid - v /boot/initrd-2.6.30.5-fogonacaixadagua.img 2.6.30.5-fogonacaixadagua |
Editando o grub
Fase final, resta apenas editar o grub.conf para utilizar o novo kernel.
Com seu editor de textos favorito, adicione as seguintes linhas:
1 |
title CentOS (2.6.30.5-fogonacaixadagua) |
3 |
kernel /vmlinuz-2.6.30.5-fogonacaixadagua ro root=/dev/VolGroup00/LogVol00 |
4 |
initrd /initrd-2.6.30.5-fogonacaixadagua.img |
O final do arquivo /boot/grub/grub.conf parecerá com o seguinte:
01 |
# grub.conf generated by anaconda |
03 |
# Note that you do not have to rerun grub after making changes to this file |
04 |
# NOTICE: You have a /boot partition. This means that |
05 |
# all kernel and initrd paths are relative to /boot/, eg. |
07 |
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00 |
08 |
# initrd /initrd-version.img |
12 |
splashimage=(hd0,0)/grub/splash.xpm.gz |
14 |
title CentOS (2.6.18-128.el5) |
16 |
kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/VolGroup00/LogVol00 |
17 |
initrd /initrd-2.6.18-128.el5.img |
18 |
title CentOS (2.6.30.5-fogonacaixadagua) |
20 |
kernel /vmlinuz-2.6.30.5-fogonacaixadagua ro root=/dev/VolGroup00/LogVol00 |
21 |
initrd /initrd-2.6.30.5-fogonacaixadagua.img |
Como primeiro boot, deixe a linha default=0 para testar, se o novo kernel inicilizar sem problemas é possível deixar default=1 para sempre utilizar o novo kernel num reboot.
Testando um boot com o novo kernel
Reinicie o computador.