[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: atualizar, compilar o Kernel



Compilando kernel na Debian

Colaboração: Rodrigo Bernardo Pimentel <<rbp (a) isnomore net>>

A Debian (http://www.debian.org), assim como a maioria das grandes 
distribuições, empacote o kernel de forma modular, para que não seja 
necessário recompilá-lo para adicionar suporte a novo hardware ou coisas do 
gênero.

Entretanto, volta e meia é necessário, pra aplicar um patch, pegar uma versão 
nova de kernel que ainda não foi empacotada pro stable, alterar alguma 
configuração como tipo de processador etc.

Como a Debian (e, novamente, a maioria das grandes distribuições) normalmente 
acrescenta patches ao empacotar o kernel, seria interessante, ao recompilar, 
manter esses patches. Além disso, instalar o kernel como pacote Debian tem a 
vantagem de permitir usar o dpkg (e apt), removê-lo com facilidade etc.

Para compilar (ou recompilar) um kernel "do jeito Debian", utiliza-se um 
programa chamado make-kpkg, que vem com o pacote kernel-package ("apt-get 
install kernel-package", que deve instalar o pacote dpkg-dev).

Por exemplo, se você quer recompilar o kernel 2.4.22 a partir do fonte 
distribuído pela Debian (o processo é semelhante para compilar e gerar um 
pacote a partir do kernel "oficial"), você pode fazer (como root, ou usando 
uma ferramenta como "sudo" ou "fakeroot"):

  apt-get install kernel-source-2.4.22

Isso é colocado no arquivo kernel-source-2.4.22.tar.bz em /usr/src . Daí, você 
faz:

  # cd /usr/src
  # tar xjf kernel-source-2.4.22.tar.bz

Com isso, você tem um diretório /usr/src/kernel-source-2.4.22 .

  # cd kernel-source-2.4.22

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 patches 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 I
  apologize 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 do Monty Python 
:)

E, algum tempo depois...

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.

E pronto! Agora há os arquivos /boot/vmlinuz-2.4.22-rbp e 
/boot/initrd-2.4.22-rbp, prontos pra serem usados!

Como o kernel novo foi instalado como um pacote Debian, é uma boa hora pra 
usar mais uma facilidade da Debian: update-grub (se você ainda usa lilo, é 
uma boa hora pra mudar :).

Instale o grub com "grub-install /dev/hda" (se for instalá-lo na MBR), isso 
cria um diretório /boot/grub. Depois disso, é só rodar "update-grub" que ele 
gera um /boot/grub/menu.lst pra você (se você já tem um menu.lst, sugiro 
fazer backup e removê-lo, a não ser que você tenha *muita* modificação nele). 
Edite o menu.lst, altere configurações como

  # kopt=root=/dev/hda3 ro
  # groot=(hd0,0)

de acordo com como seu sistema está configurado. Note que as linhas devem 
permanecer comentadas (com o "#" no começo da linha), essas são 
"meta-configurações". Depois de acertar isso, rode update-grub de novo e... 
Ele gera as entradas no menu do grub automaticamente, a partir das imagens de 
kernel instaladas e das meta-configurações que você fez! Prático, hein? :)















On Wednesday 11 February 2004 10:18, Debian - Caraguá wrote:
> bom dia Galera instalei
> em meu micro o Debian 30r1 kernel 2.4.18-bf2.4
> Como faço para atualizar e compilar o kernel ???
> Quero que minha placa de som (Via Technologies, Inc. AC97 Audio Controller
> (rev 50))funcione
> Grato pela ajuda.
> Debian e Cia

-- 
Att,

/-----------------------------------------------------\
|  .''`.  | E-mail: eduardo@giantcargo.com.br         |
| : :'  : | Programador UIN # 38352716                |
| `. `'`  | Giant Cargo  http://www.giantcargo.com.br |
|   `-    | Tel.: (11) 5581-0113 r. 152               |
\-----------------------------------------------------/



Reply to: