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: 17.774 ]

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

Kernel atualizado no Debian - Parte I

NPTL, Exec-Shield e outros palavrões que fazem seus programas crasharem

Kernel 2.6: a instalação mais fácil

Compilando kernel 2.6 no Slackware 11

Compilar e habilitar os módulos ip_table e iptable_nat no kernel 2.6.26 no Debian Linux

  
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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts