Arquivos históricos do BR-Linux.org apresenta:

Kernel via pacote RPM

O Mike Shigueru Matsumoto mandou este tutorial que explica como manipular o kernel nas distribuições baseadas no RPM (Red Hat, Conectiva, Mandrake...) a partir dos pacotes disponibilizados pela própria distribuidora.

Instalando e/ou Atualizando o Kernel do Linux via pacote RPM

Autor: Mike Shigueru Matsumoto
Emai: fuji_linux@yahoo.com.br
Data da Última Revisão: 23/07/2003

Plataforma de execução:

Conectiva 8.0 Kernel 2.4.18-3U8_4cl (atual)
Conectiva 9.0 Kernel 2.4.21-28872cl (a ser instalado)

OBS: Poderia ser qualquer outro kernel de preferência da mesma distribuição. Inclusive um kernel mais antigo.
A preferência pelo kernel já compilado pela mesma distribuição deve ser mantida visto que algumas distribuições podem compilar os seus kerneis de maneira diferente. Uma instalação de um kernel do Red Hat 8.0 no Conectiva 8.0, causou erros na hora do boot.
Versões atualizadas do kernel da sua distribuição podem ser encontradas no FTP oficial da sua distribuição.

Características técnicas:

As instruções dos comandos serão dadas em negrito para um melhor visual.
A saída do comando será mostrada em itálico.
O caractere # apenas indica que o usuário esta logado como “root” e não deve ser escrita no Shell.
Ex:
# ls -l /
drwxr-xr-x 2 root root 4096 Jul 14 11:30 bin
drwxr-xr-x 3 root root 4096 Jul 18 08:41 boot
drwxrwxrwx 2 root root 4096 Jul 17 09:58 common
drwxr-xr-x 21 root root 53248 Jul 18 08:41 dev
drwxr-xr-x 55 root root 4096 Jul 18 09:01 etc
drwxr-xr-x 5 root root 4096 Jul 16 18:24 home
drwxr-xr-x 2 root root 4096 Mar 23 23:46 initrd
...
ATENÇÃO: Neste how-to nos vamos atualizar o kernel, mas vamos manter o antigo kernel padrão vindo da distribuição.
Isto é o melhor a se fazer, porque qualquer erro que aconteça com o novo kernel, ainda poderemos iniciar a nossa máquina pelo antigo.
Para isto vamos instalar o novo kernel usando a opção “-i” no comando “rpm” e vamos deixar todas as entradas nos gerenciadores de boot (GRUB / LILO) do kernel padrão do jeito que estavam. Apenas vamos adicionar a nova.

Começando. . .

1 -) Obter o kernel de maneira correta

Antes de se baixar algum kernel em formato rpm para instalação deve-se verificar o tipo de arquitetura do seu computador e se ela é multi-processada.
Estas informações podem ser vistas olhando o kernel padrão que foi instalado em sua máquina pela própria distribuição.
No entanto, podem ser usados os seguintes passos para identificação do mesmo:

# uname -a
Linux tux.fuji.com.br 2.4.21-28872cl #1 Sex Mar 21 22:55:39 BRT 2003 i686 unknown

Pode se observar através do comando acima os seguintes pontos:
2.4.21-28872cl kernel usado no momento
i686 arquitetura do processador

Ou seja, a arquitetura do seu processador é i686 e seu computador provavelmente possui apenas um processador.
Se o seu computador fosse multi-processado na saída do comando teria uma string “smp”.
Exemplo:

# uname -a
Linux tux.fuji.com.br 2.4.21-28872clsmp #1 Sex Mar 21 22:55:39 BRT 2003 i686 unknown

Você também pode obter informações sobre o seu computador olhando os arquivos dentro do diretório /proc do Linux.
Exemplo:

- Quantos processadores possuem na sua maquina e informações técnicas sobre eles:
# cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 6
model : 7
model name : AMD Duron(tm) Processor
stepping : 1
cpu MHz : 1294.251
cache size : 64 KB
...
OBS: O campo “processor” define quantos processadores foram encontrados.
Começando em: 0. O segundo processador seria: 1, o terceiro: 2 e assim por diante.

Para uma máquina multi-processada, a saída do comando seria algo assim:
# cat /proc/cpuinfo
processor : 0 => Primeiro Processador
vendor_id : AuthenticAMD
cpu family : 6
model : 7
model name : AMD Duron(tm) Processor
stepping : 1
cpu MHz : 1294.251
cache size : 64 KB
...
processor : 1 => Segundo Processador
vendor_id : AuthenticAMD
cpu family : 6
model : 7
model name : AMD Duron(tm) Processor
stepping : 1
cpu MHz : 800.


- Total de memória:
# cat /proc/meminfo
total: used: free: shared: buffers: cached:
Mem: 113278976 112029696 1249280 0 1294336 65441792
Swap: 271392768 30695424 240697344
MemTotal: 110624 kB
...

Conclusão:
- Para uma máquina com apenas um processador e arquitetura i686, deveria ser baixado algo parecido com:
kernel-2.4.18-14.i686.rpm
- Com mais de um processador:
kernel-2.4.18-14.i686smp.rpm

OBS: Caso não tenha certeza do tipo de arquitetura do seu computador pode ser usado o padrão i386, algo parecido com:
    kernel-2.4.18-14.i386.rpm
Os kerneis em formato “rpm” são encontrados nos FTPs das distribuições. Eles já vêm compilados e prontos para suportar o maior tipo de hardware possível, o que pode evitar problemas para você que não quer compilar o kernel.
O código fonte do kernel em “rpm” possui algo como o seguinte:
    kernel-2.4.20-1.3.2.src.rpm
Você só vai precisar baixá-lo quando quiser compilar ou adicionar algo ao seu kernel.
Cuidado para não baixar o código fonte do kernel em vez do kernel compilado (rpm).
Olhe bem a string “src” de source.

2 -) Analisando o Estado Atual do Kernel

Como o kernel baixado é um pacote “rpm” a instalação é igual a qualquer outro programa em rpm.
Antes de executar a instalação verifique qual a versão do seu kernel atual para que você não confunda com as entradas que serão criadas.

Vamos olhar o estado do nosso sistema antes da instalação do novo kernel:
(ATENÇÃO: ESTE PASSO É MUITO IMPORTANTE)
# ls /boot
-rw-r--r-- 1 root root 460950 Mai 29 2002 System.map-2.4.18-3U8_4cl
-rw-r--r-- 1 root root 8704 Mar 15 21:05 boot-bmp.b
-rw-r--r-- 1 root root 8704 Mar 15 21:05 boot-menu.b
-rw-r--r-- 1 root root 6656 Mar 15 21:05 boot-text.b
lrwxrwxrwx 1 root root 11 Jul 14 10:50 boot.b -> boot-menu.b
-rw-r--r-- 1 root root 800 Mar 15 21:05 chain.b
drwxr-xr-x 3 root root 4096 Jul 16 14:14 grub
-rw-r--r-- 1 root root 333494 Jul 15 13:45 initrd-2.4.18cl.img
lrwxrwxrwx 1 root root 15 Jul 14 18:22 kernel.h -> kernel.h-2.4.18
-rw-r--r-- 1 root root 411 Jul 14 20:49 kernel.h-2.4.18
-rw-r--r-- 1 root root 512 Mar 15 21:05 mbr.b
-rw-r--r-- 1 root root 13598 Mai 29 2002 module-info-2.4.18-3U8_4cl
-rw-r--r-- 1 root root 728 Mar 15 21:05 os2_d.b
-rw-r--r-- 1 root root 802823 Mai 29 2002 vmlinuz-2.4.18-3U8_4cl

Os principais arquivos que devem ser olhados neste momento são:
    vmlinuz-2.4.18-3U8_4cl
    initrd-2.4.18cl.img
Procure no arquivo de configuração do seu gerenciador de boot (GRUB ou LILO) e veja que ele possui uma entrada que aponta para eles.

GRUB:
# cat /boot/grub/menu.lst
title = Conectiva Linux 8 [Grafico]
kernel = (hd0,7)/boot/ vmlinuz-2.418-3U8_4cl root=/dev/hda8 5 vga=788
initrd = (hd0,7)/boot/initrd-2.4.18cl.img
title = Conectiva Linux 8 [Modo texto]
kernel = (hd0,7)/boot/vmlinuz-2.418-3U8_4cl root=/dev/hda8 3 vga=788
initrd = (hd0,7)/boot/initrd-2.4.18cl.img

LILO:
# cat /etc/lilo.conf
image = /boot/vmlinuz-2.4.18-3U8_4cl
root = /dev/hda8
label = Conectiva_Linux_8
read-only
Veja que as duas entradas apontam para o kernel atual.

3 -) Instalando o Kernel

Note que estamos usando a opção “-i” e não “-U” para mantermos o antigo kernel, veja mais abaixo.

# rpm -ivh kernel-2.4.21-28872cl.i686.rpm
Preparando...   ########################################### [100%]
1:kernel-2.4.21 ########################################### [100%]

Se alguns problemas de dependência acontecer, vá até o site http://rpmfind.net e digite na caixa de pesquisa o pacote faltando mostrado pelo seu Linux na hora da instalação.
Um pacote que será necessário é o mkinitrd-x.xx.xx ( os x.xx.xx é substituído pela versão do programa ).

Dicas: Instalação de Pacotes RPM

Para verificar se um pacote já está instalado, no caso o “mkinitrd”:
# rpm -qa | grep mkinitrd
mkinitrd-3.2.6-29127cl

Verificar todos os pacotes instalados no seu Linux:
# rpm -qa => mostra todos os pacotes na tela
# rpm -qa > pacotes.txt => joga os nomes dos pacotes no arquivo “pacotes.txt”
# rpm -qa | less => mostra os pacotes na tela pausadamente
# rpm -q <nomedopacote> => mostra se um pacote esta instalado
                    Igual a “rpm -qa | grep <nome_ou_string_do_pacote>”
# rpm -Uvh <nomedopacote> => atualiza um pacote
# rpm -e <nomedopacote> => desinstala um pacote
# rpm -ql <nomedopacote> => mostra onde estão os arquivos do pacote

Quando um pacote já estiver instalado e você quiser instalá-lo de novo por algum motivo use:
# rpm -ivh <nomedopacote> --force

Quando se tem algum problema de dependência na hora de instalar ou remover o pacote pode ser usado:
# rpm -ivh <nomedopacote> --nodeps => Para instalar
# rpm -e <nomedopacote> --nodeps => Para desinstalar

Atenção: Note que isto pode ser uma operação arriscada. Deixar falhas de dependências pode trazer o não funcionamento do programa.
O ideal e sempre tentar resolver a dependência instalando-a ou removendo-a quando for o caso.
Novamente: O site http://rpmfind.net resolve o seu problema! Apenas lembre-se de dar preferência por baixar pacotes da sua distribuição e da sua arquitetura.
Caso não ache para sua arquitetura pode ser usado a “i386”.

Voltando ao Kernel...

Eu acho que o único erro que pode acontecer é dizer que o pacote “mkinitrd” não está instalado ou precisa de outra versão.
Se não estiver instalado é fácil, instale. Se ele estiver pedindo uma versão mais antiga que a sua, (verifique a sua versão com as dicas acima) você pode tentar algo como:

# rpm -ivh kernel-2.4.21-28872cl.i686.rpm –nodeps

Já fiz isto antes e funcionou. Mas deixo bem claro que a minha versão era mais atual que a pedida. Primeiro tente resolver a dependência e não fazer este “gato”.

Verificando a Instalação do Kernel

Depois do kernel instalado você pode verificar se ele foi instalado corretamente com os seguintes passos:

1) Verifique se foi criado o diretório de modules dele.
# ls /lib/modules
2.4.18-3U8_4cl 2.4.21-28872cl

Veja que agora eu tenho os dois kerneis.

Vamos verificar agora o que foi mudado no nosso diretório /boot.
# ls -l /boot
lrwxrwxrwx 1 root root 25 Jul 18 08:41 System.map -> System.map-2.4.21-28872cl
-rw-r--r-- 1 root root 460950 Mai 29 2002 System.map-2.4.18-3U8_4cl
-rw-r--r-- 1 root root 487236 Mar 21 23:05 System.map-2.4.21-28872cl
...
-rw-r--r-- 1 root root 333494 Jul 15 13:45 initrd-2.4.18.img
-rw-r--r-- 1 root root 133093 Mar 21 23:10 module-info-2.4.21-28872cl
lrwxrwxrwx 1 root root 22 Jul 16 11:04 vmlinuz -> vmlinuz-2.4.21-28872cl
-rw-r--r-- 1 root root 802823 Mai 29 2002 vmlinuz-2.4.18-3U8_4cl
-rw-r--r-- 1 root root 926852 Mar 21 23:05 vmlinuz-2.4.21-28872cl

Muito bom!!!
Veja que foram criadas novas entradas referente ao novo kernel.

O vmlinuz-2.4.21-28872cl é a imagem do seu novo kernel. Note que foi criado um link simbólico com o nome de “vmlinuz”que aponta para a nova imagem. Este link é criado para facilitar a criação da nova entrada do kernel no GRUB ou LILO.

Continuando a Configuração
Agora tudo que precisamos é criar o “initrd” deste novo kernel. Para isto vamos criar com o comando “mkinitrd”, por isso a necessidade do pacote instalado.

Sintaxe do comando:
# mkinitrd <nome_do_arquivo_a_ser_criado> <nome_do_kernel_alvo>

Mais informações:
# mkinitrd - - help
# man mkinitrd

No nosso how-to, o comando ficaria assim:
# mkinitrd /boot/initrd-2.4.21-28872cl.img 2.4.21-28872cl

O programa “mkinitrd” recebe 2 parâmetros:
  1. o nome do arquivo que será criado, no caso /boot/initrd-2.4.21-28872cl.img
  2. e o nome do kernel 2.4.21-28872cl
Note que já aproveitamos para criar o arquivo “initrd-2.4.21-28872cl.img” dentro do diretório “/boot”.
Já o nome do kernel é o mesmo nome do diretório criado dentro de “/lib/modules” quando instalamos o kernel. Verifique com:
# ls /lib/modules
2.4.18-3U8_4cl 2.4.21-28872cl

Verifique se o arquivo foi gerado corretamente:
# ls -l /boot
-rw-r--r-- 1 root root 460950 Mai 29 2002 System.map-2.4.18-3U8_4cl
-rw-r--r-- 1 root root 8704 Mar 15 21:05 boot-bmp.b
-rw-r--r-- 1 root root 8704 Mar 15 21:05 boot-menu.b
-rw-r--r-- 1 root root 6656 Mar 15 21:05 boot-text.b
lrwxrwxrwx 1 root root 11 Jul 14 10:50 boot.b -> boot-menu.b
-rw-r--r-- 1 root root 800 Mar 15 21:05 chain.b
drwxr-xr-x 3 root root 4096 Jul 16 14:14 grub
-rw-r--r-- 1 root root 459090 Jul 14 11:35 initrd-2.4.21-28872cl.img
-rw-r--r-- 1 root root 333494 Jul 15 13:45 initrd-2.4.18cl.img
lrwxrwxrwx 1 root root 15 Jul 14 18:22 kernel.h -> kernel.h-2.4.18
-rw-r--r-- 1 root root 411 Jul 14 20:49 kernel.h-2.4.18
-rw-r--r-- 1 root root 512 Mar 15 21:05 mbr.b
-rw-r--r-- 1 root root 13598 Mai 29 2002 module-info-2.4.18-3U8_4cl
-rw-r--r-- 1 root root 728 Mar 15 21:05 os2_d.b
-rw-r--r-- 1 root root 802823 Mai 29 2002 vmlinuz-2.4.18-3U8_4cl

4 -) Atualizando o GRUB ou LILO

Tudo que falta agora e atualizar o GRUB ou LILO.
Segue-se o exemplo de como ficaria o dois tomando por base os arquivos de configuração que foram mostrados no início.

GRUB:
# cat /boot/grub/menu.lst
title = Conectiva Linux 8 [Grafico]
kernel = (hd0,7)/boot/ vmlinuz-2.418-3U8_4cl root=/dev/hda8 5 vga=788
initrd = (hd0,7)/boot/initrd-2.4.18.img
title = Conectiva Linux 9 [Texto]                             => NOVA ENTRADA
kernel = (hd0,7)/boot/ vmlinuz-2.4.21-28872cl root=/dev/hda8 5 vga=788
initrd = (hd0,7)/boot/initrd-2.4.21-28872cl.img
title = Conectiva Linux 8 [Modo texto]
kernel = (hd0,7)/boot/vmlinuz-2.418-3U8_4cl root=/dev/hda8 3 vga=788
initrd = (hd0,7)/boot/initrd-2.4.18.img

Veja que apenas copiei uma entrada padrão e alterei para os arquivos do novo kernel.
A linha abaixo;
    kernel = (hd0,7)/boot/ vmlinuz-2.4.21-28872cl root=/dev/hda8 5 vga=788
também poderia ter sido escrita apenas assim:
    kernel = (hd0,7)/boot/ vmlinuz root=/dev/hda8 5 vga=788
Isto porque no diretório “/boot” tem um link simbólico chamado “vmlinuz” que aponta para esta entrada.

LILO:
# cat /etc/lilo.conf
image = /boot/vmlinuz-2.4.18-3U8_4cl
root = /dev/hda8
label = Conectiva_Linux_8
read-only
image = /boot/vmlinuz                                             => NOVA ENTRADA
root = /dev/hda8
label = Conectiva_Linux_9
read-only

Note que agora eu usei o nome do link em vez do nome completo da imagem.
Lembre-se que depois de alterar o Lilo /etc/lilo.conf é necessário rodar o comando “lilo” para atualizar a nova entrada:
# lilo
Added Conectiva_Linux_8 *
Added Conectiva_Linux_9

“Pronto!!! Agora reinicie seu computador para ver os resultados, e lembre-se de usar o comando “uname -a” para verificar qual kernel está ativo depois do reboot.”
Notas finais: Se o novo kernel estiver funcionando corretamente (faça o teste pelo menos uma semana), placas de sons, rede, vídeo, servidores, impressoras, etc, você pode remover o antigo kernel.
Para isto apenas remova o pacote do antigo kernel, # rpm –e <nomedopacotedokernelantigo>, e retire as entradas para ele no seu GRUB ou LILO.

7



Postado por brain em julho 31, 2003 10:34 AM

Comentários para "Kernel via pacote RPM"

» Postado por: Alexandre Moraes em julho 31, 2003 06:12 PM, 200.148.42.:

 

» Postado por: fabian em agosto 20, 2003 09:57 AM, 200.215.101:

 

» Postado por: Paulo Anastacio em outubro 3, 2003 08:30 PM, 200.175.77.:

 

» Postado por: Victor em outubro 26, 2003 07:39 PM, 200.203.66.:

 

» Postado por: Victor em outubro 26, 2003 07:42 PM, 200.203.66.:

 

» Postado por: Zithromax Online em setembro 24, 2004 06:20 AM, 65.75.139.9:

 

» Postado por: vandra em setembro 26, 2004 05:41 PM, 200.147.12.:

 

» Postado por: Cialis em outubro 8, 2004 05:12 PM, 65.75.139.9:

 

» Postado por: Levaquin em outubro 12, 2004 05:04 PM, 65.75.139.9:

 

» Postado por: Seasonale em outubro 14, 2004 11:49 AM, 65.75.139.9:

 

» Postado por: Remeron em outubro 22, 2004 02:54 PM, 65.75.139.9:

 

» Postado por: Elidel online em novembro 2, 2004 12:50 PM, 208.53.138.:

 

Antes de comentar...

- Preserve a qualidade desta discussão
- Leia os Termos de Uso.
- Este formulário deve ser usado para comentários sobre a notícia. Se você tem dúvidas ou precisa de ajuda, use o Fórum.
- Mantenha o foco nos argumentos e no assunto
- Não faça ataques pessoais.
- Pense 5 vezes antes de entrar em discussões inúteis, como "qual é a melhor distribuição/ambiente gráfico/linguagem de programação/etc.", mesmo se alguém já tiver provocado - um erro não justifica o outro
- Não seja um e-mala ;-)


O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.