terça-feira, 14 de julho de 2009


Ola Bacanas, vamos aprender como compilar o kernel do linux debian para acrescentar o pacote ABI, para os amantes do COBOL.


Para compilar o kernel, você precisa configurá-lo. Você pode fazer da maneira usual ("make config", "make menuconfig" ou "make xconfig"), ou pode partir da configuração do kernel correspondente da Debian. Se você tem um kernel da Debian instalado, há um arquivo de configuração correspondente em /boot/config-<versao do kernel> . Por exemplo, supondo que você tem


instalado o pacote kernel-image-2.4.22-1-k7:


cp /boot/config-2.4.22-1.k7 /usr/src/kernel-source-2.4.22/.config


Se você copiar um arquivo de configuração de um kernel mais antigo,o processo de compilação do kernel (explicado a seguir) vai pedir sua intervenção nas opções novas ou incompatíveis que surgirem. Feito isso, agora é só compilar:


make-kpkg --append-to-version "-rbp" --initrd --us --uc kernel_image


Esse é o comando que faz a mágica. Destrinchando:


1) --append-to-version acrescenta a palavra que você indicar (no exemplo, "-rbp") à versão do pacote criado. É útil pra diferenciar seu


kernel recompilado de um "oficial".


2) --initrd indica que junto com o kernel deve ser criado um arquivo "initrd", que é o padrão da Debian (e o modo mais flexível). Para mais informações, "man 4 initrd".


3) --us e --uc são opções pra criação do pacote, dizem pra não tentar assinar com gpg o pacote, nem criar changelog. Se você não quiser se preocupar com essas tecnicalidades da Debian, simplesmente use as opções sem pensar mais nisso. Se quiser entender, "man dpkg-buildpackage"


4) "kernel_image" é a ação que o make-kpkg vai executar. Com essa ação, ele cria um pacote Debian com a imagem do kernel. Há outras ações possíveis, veja "man make-kpkg".


Há uma série de outras opções, inclusive para aplicar patche automaticamente (funciona de forma mais ou menos imediata com patches instalados da própria Debian, com apt-get; para mais informações, "man make-kpkg", opção "--added_patches").


Feito isso, o sistema vai te fazer uma pergunta (por causa do --initrd):


Warning: You are using the initrd option, that may not work unless you have applied the initrd cramfs patch to the kernel, or modified mkinitrd not to use cramfs by default. The cramfs initrd patch, is included in the Debian supplied kernel sources, but is not present in pristine kernel sources.


By default, I assume you know what you are doing, and Iapologize for being so annoying. Should I abort[Ny]?


É só digitar "n" (pra *não* abortar) e Enter.


Se houver opções não configuradas, como citado anteriormente, o sistema vai pedir que você as configure, em modo "make config" (portanto é sempre prático configurar antes com "make menuconfig", ou copiar uma configuração já existente).


Em seguida o programa vai começar a efetivamente compilar o kernel, então essa é a hora de fazer algo produtivo, como ir assistir a um filme.


E, algum tempo depois…


cd .. # Ou seja, cd /usr/src


dpkg -i kernel-image-2.4.22-rbp_10.00.Custom_i386.deb


Ou seja, foi criado um pacote


kernel-image-2.4.22-rbp_10.00.Custom_i386.deb em /usr/src, é só instalá-lo e


usá-lo! Cuidado para que ele não sobrescreva algum kernel existente, a opção "--append-to-version" ajuda nisso.


Abs.

Nenhum comentário:

Postar um comentário