Compilando um novo kernel em distribuições RPM-like

Este pode parecer um artigo inútil (me fiz essa contestação antes de criá-lo), mas resolvi postar pois a compilação de um kernel personalizado em distribuições como Fedora, SuSE, Mandriva, PCLinuxOS etc é algo menos explorado (em português pelo menos) que em distros baseadas no Debian, Gentoo ou Slackware.

[ Hits: 18.599 ]

Por: Augusto André Souza em 28/01/2010 | Blog: http://www.google.com


Introdução e ferramentas necessárias



Introdução

A compilação de um novo kernel pode ser estimulada por diferentes razões. Talvez a maior delas seja em relação ao aumento de compatibilidade de dispositivos de hardware; ou talvez seja a busca por um kernel mais enxuto e rápido; enfim, algo nesse sentido o motivou a ler este artigo. No fundo o processo de compilação de um kernel é o mesmo, independentemente da distribuição preferida do usuário. Mas como sou mero iniciante e encontrei dificuldades para fazê-lo em RPM-like (por exemplo, em Mandriva, CentOS ou PCLinuxOS não tem o build-essential nem o kernel-package como no Debian), talvez alguém com pouco conhecimento como eu tenha tido a mesma dificuldade, então resolvi descrever o processo.

Ferramentas de construção

Basicamente você precisará instalar os seguintes pacotes (se sua distribuição já não os trouxer por padrão): gcc, make, glibc-devel, binutils, util-linux, module-init-tools, e2fsprogs, xfsprogs, reiserfsprogs, quota, mount, coreutils, udev, mkinitrd, bison, ncurses-devel, autoconf, automake, rpm-build e glibc-headers-dev.

Obs.: esse último pacote, aliás, foi motivo de várias tentativas frustradas de compilação. Tente dar o "make" sem esse pacotezinho e tire a prova... Vai surgir um problema com o arquivo limits.h dentro do GNU C. E NÃO adianta copiar ele pra dentro do diretório, vai continuar acusando que o arquivo não existe!

Obs. 2: Talvez alguns desses pacotes nem sejam estritamente necessários para você. Por exemplo, se você não trabalha com sistemas XFS ou ReiserFS não precisaria dos pacotes xfsprogs e reiserfsprogs, respectivamente. Os mais importantes mesmo são o make, gcc, binutils, coreutils, ncurses-devel e rpm-build (caso queira criar um RPM do seu kernel personalizado).

Obs. 3: Suponho que você esteja habituado a lidar com instalação de pacotes pelos repositórios de sua distribuição. Portanto, não irei abordar... Em caso de dúvida, utilize os excelentes artigos:
Obs. 4: uma dica para atestar se seu sistema possui todas as dependências satisfeitas é ir em /usr/src/linux-2.6.versao_escolhida e rodar o seguinte script:

# sh scripts/ver_linux

Caso haja algum problema ele vai te mostrar os pacotes que estão faltando. Caso contrário, vai apenas listar algumas coisas, significando que você está apto a virar a página!

    Próxima página

Páginas do artigo
   1. Introdução e ferramentas necessárias
   2. Processo padrão de compilação
   3. Instalando e adicionando ao boot
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Recompilando o kernel na distribuição Debian

Kernel atualizado no Debian - Parte II

Como explicar o que é kernel para um leigo

Compilando o KERNEL sem medo do "kernel panic"

Kernel-BALA

  
Comentários
[1] Comentário enviado por cristiano.moraes em 28/01/2010 - 08:23h

Parabéns Augusto. É sempre bom termos um passo a passo de compilação do kernel. E o seu esta bem didático.

[2] Comentário enviado por joaopaulo999 em 08/10/2010 - 08:49h

fiz este passo a passo quando vou criar o mkinitrd

ele mi da o seguinte erro


Kernel image: /boot/vmlinuz-2.6.31.14-0.1-default
Initrd image: /boot/initrd-2.6.31.14-0.1-default
Kernel Modules: <not available>
Could not find map /boot/initrd-2.6.35.7-0.1.img/boot/System.map, please specify a correct file with -M.

Kernel image: /boot/vmlinuz-2.6.35.7-0.1-default
Initrd image: /boot/initrd-2.6.35.7-0.1-default
Kernel Modules: <not available>
Could not find map /boot/initrd-2.6.35.7-0.1.img/boot/System.map, please specify a correct file with -M.

estou tentando usar kernel 2.6.35.7

estou usando um suse 11.2


Contribuir com comentário