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

Re: Atualização para o kernel 2.4 (muito longo)



Daniel, aqui estou te mandando todo um relatório escrito pelo Jonas Goes e enviado pelo grupo L-Dicas de como recompilar para o kernel 2.6.x
sei que o seu caso é para o 2.4.27, mas acho que muitas respostas você pode achar aqui, inclusive a parte do dual boot0. Se nào lhe for útil simplesmente descarte, ok? :-)
 
espero ter ajudado
 
Daniel
 
 
 
 Compilando um kernel linux série 2.6
  ====================================

------------------------------------
Autor: Jonas Goes http://www.goes.eti.br


Por que recompilar o kernel ?
=============================


A primeira intenção é otimizar o kernel para o seu hardware a
fim de melhorar a performance e suportar todos os dispositivos.
Você também pode querer atualizar o sistema obtendo suporte
a novos resursos e dispositivos de hardware.  Ou você pode
querer se livrar de BUG's.


O que é o kernel?
=================


O kernel Linux é o centro do sistema operacional. A parte
do sistema responsável pelo gerenciamento de baixo nível do
hardware e software.


Quais são os requerimentos mínimos de hardware?
===============================================


Isso varia muito de acordo com a arquitetura e a versão
do kernel. Mas tenha em mente o seguinte para ter um sistema
mínimo funcional: 16MB de RAM (memória física), 100MHz de clock
de processamento e 100MB de espaço em disco (memória virtual).

Mas o que eu tenho de hardware?  Execute o comando:


  $ lspci

ou


  $ lspci -vvv

ou


  $ cat /proc/pci



Mas que processador eu tenho, qual é o clock, qual é a arquitetura?
===================================================================


Execute o comando:


  $ cat /proc/cpuinfo



Que arquiteturas são suportadas?
================================


Para saber isso, basta você fazer listar o conteúdo do
diretório /usr/src/linux/arch.  Veja lá a listagem para a
versão do kernel 2.6.7:


  alpha
  arm
  arm26
  cris
  h8300
  i386
  ia64
  m68k
  m68knommu
  mips
  parisc
  ppc
  ppc64
  s390
  sh
  sparc
  sparc64
  um
  v850
  x86_64


O seu caso, muito provavelmente deve ser a arquitetura i386,
que é a mais comum do mundo dos PC's.  Outra arquitetura muito
comum é a PPC (PowerPC), os famosos computadores da Apple.
Sim, o Linux pode ser instalado em um computador da Apple ;)
Você tem um playstation II ai? Então instale um Linux nele!


Qual é a quantidade de memória que eu tenho?
============================================


Execute o comando:


  $ cat /proc/meminfo



Quais são os softwares mínimos que devem estar instalados para executar o kernel?
=================================================================================


Veja a Parte VII


O kernel Linux é Software Livre?
================================


Sim! É Software Livre porque cumpre com os quatro direitos da GPL (General Public License). Veja só:
- O direito de cópia: Sim, você pode fazer cópias ou downloads do kernel livremente.
- O direito de estudo: Sim, você pode baixar o código fonte do kernel em http://www.kernel.org e estudá-lo.
- O direito de modificação: Sim, você pode modificar o código fonte do kernel e enviar suas modificações as pessoas responsáveis.
- O direito de redistribuição: Sim, você pode redistribuir livremente o kernel.

Mãos à obra!


Passo I
=======


Baixe o pacote que contém o código fonte mais atualizado do
kernel Linux da série 2.6 em http://www.kernel.org Abrindo a
página no navegador web, clique no link F para fazer o download
do pacote que contém os fontes.  Você também poderá fazer o
download com o comando wget como no exemplo abaixo:


  $ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.7.tar.bz2



Passo II
========


Como superusuário (faça o login no sistema com o usuário root),
descompacte e desempacote o arquivo assim:


  # tar xjvf linux-2.6.7.tar.bz2 -C /usr/src



Passo III
=========


Crie o link simbólico /usr/src/linux apontando para /usr/src/linux-2.6.7 assim:


  # ln -sf /usr/src/linux-2.6.7 /usr/src/linux



Passo IV
========


Acesse /usr/src/linux assim:


  # cd /usr/src/linux


Este será o diretório raiz de compilação, ou seja, o diretório
base para os passos seguintes.


Passo V
=======


Caso você já tenha compilado o kernel anteriormente, execute
o comando 'make mrproper' para retornar ao padrão os arquivos
de configuração do kernel.


  # make mrproper



Passo VI
========


Edite o arquivo Makefile para personalizar a versão de
sua compilação.  Altere a variável EXTRAVERSION na quarta
linha para um valor que deseje como por exemplo -i386-1.
Salve este arquivo.


  VERSION = 2
  PATCHLEVEL = 6
  SUBLEVEL = 7
  EXTRAVERSION = -i386-1



Passo VII
=========


O arquivo /usr/src/linux/Documentation/Changes contém
uma lista do software mínimo que deve estar corretamente
instalado na máquina antes de iniciar a compilação.
Não inicie a compilação do kernel sem antes obtiver a
certeza de que o mínimo de software está instalado.
Existe um script que pode auxiliar nisto. O script
/usr/src/linux/scripts/ver_linux imprime na tela uma lista do
software mínimo e suas respectivas versões que estão instalados
na máquina. Compare esta lista com a lista oferecida pelo
documento /usr/src/linux/Documentation/Changes. Para executar
este script, faça assim:


  # sh scripts/ver_linux


Eis a lista de software mínimo requerido para um kernel da série 2.6 poder funcionar:


  o  Gnu C                  2.95.3                  # gcc --version
  o  Gnu make               3.79.1                  # make --version
  o  binutils               2.12                    # ld -v
  o  util-linux             2.10o                   # fdformat --version
  o  module-init-tools      0.9.10                  # depmod -V
  o  e2fsprogs              1.29                    # tune2fs
  o  jfsutils               1.1.3                   # fsck.jfs -V
  o  reiserfsprogs          3.6.3                   # reiserfsck -V 2>&1|grep reiserfsprogs
  o  xfsprogs               2.6.0                   # xfs_db -V
  o  pcmcia-cs              3.1.21                  # cardmgr -V
  o  quota-tools            3.09                    # quota -V
  o  PPP                    2.4.0                   # pppd --version
  o  isdn4k-utils           3.1pre1                 # isdnctrl 2>&1|grep version
  o  nfs-utils              1.0.5                   # showmount --version
  o  procps                 3.2.0                   # ps --version
  o  oprofile               0.5.3                   # oprofiled --version


Nem tudo na lista acima é obrigatório. Será obrigatório ter
os itens instalados da lista acima apenas aqueles que o kernel
que você está configurando suportar.  Por exemplo, se você não
configurou o suporte a isdn, não é necessário ter instalado
na sua máquina o software isdn4k-utils para poder compilar e
executar o kernel.


Passo VIII
==========


O arquivo /usr/src/linux/.config armazena a configuração
do kernel. Basicamente, este arquivo descreve o que deverá
ser incorporado ao kernel (y) e o que deverá ser criado como
módulo (m). Incorpore ao kernel apenas o necessário. O restante
necessário, configure como módulo. O que não for necessário,
retire. Por exemplo, se você não tem dispositivos pcmcia em
sua máquina, retire da configuração o suporte a pcmcia. Isto
possibilita uma maior performance por parte do sistema.

O kernel Linux pode ser modular, ou seja, o suporte básico
fica incorporado ao kernel constantemente e o suporte a
outros dispositivos, como por exemplo, uma placa de som,
pode ser configurado como módulo. Assim sendo, este módulo
da placa de som é carregado na memória e plugado ao kernel
apenas quando for necessário, ou seja, apenas quando o usuário
estiver utilizando som no sistema.  Isto otimiza o sistema,
utilizando seus recursos sabiamente.

Existe uma configuração padrão para cada tipo de arquitetura
de harware no diretório /usr/src/linux/arch. O nome do arquivo
é defconfig.  Supondo que sua arquitetura de harware seja
i386, a mais comum, faça uma cópia do arquivo defconfig para
o diretório raiz de compilação com o nome .config assim:


  # cp -f /usr/src/linux/arch/i386/defconfig /usr/src/linux/.config


Em alguns casos de arquitetura, pode existir um diretório
configs contendo configurações específicas e testadas para
cada modelo de máquina.

Sendo assim, ao iniciar a ferramenta de configuração, você
já terá alguns itens marcados. Não será necessário iniciar do
zero uma configuração.


Passo IX
========


Execute a ferramenta de configuração assim:


  # make menuconfig


ou


  # make xconfig (modo gráfico)


Perceba a existência de uma configuração já pré-definida. Isto
se deve ao fato de você ter copiado o arquivo defconfig
para o diretório raiz de compilação com o nome de .config.
Algumas dicas:

1) Marque com * itens que serão incorporados ao arquivo do
kernel como por exemplo, sistemas de arquivos que você utiliza
ou vai utilizar em suas partições.

2) Marque com m itens que serão criados como módulo, ou seja,
serão plugados ao kernel apenas quando houver necessidade
de uso.

Este é um passo demorado e deve ser feito com atenção. Acompanhe
o help de cada item para saber o que está incluindo ou não.


Passo X
=======


Após a configuração do kernel, vamos compilá-lo realmente. Para
isto, execute o comando:


  # make


Este passo pode levar minutos ou de um dia para o outro. Depende
do poder da máquina onda você vai compilar.


Passo XI
========


Após a compilação do kernel, vamos instalar os módulos com o
seguinte comando:


  # make modules_install



Passo XII
=========


Agora vamos copiar o kernel (bzImage) para o diretório /boot. O
arquivo está no diretório de acordo com a arquitetura que
você estiver utilizando. Se você compilou o kernel em um PC,
o que é mais comum, então o comando para copiar é o seguinte:


  # cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.6.7-i386-1


Nomeie os arquivos de acordo com a versão do kernel que está
compilando e de acordo com a arquitetura de hardware.

Agora vamos copiar o arquivo System.map para /boot:


  # cp /usr/src/linux/System.map /boot/System.map-2.6.7-i386-1


Criando um link simbólico para System.map:


  # ln -sf /boot/System.map-2.6.7-i386-1 /boot/System.map


Agora vamos copiar o .config para /boot:


  # cp /usr/src/linux/.config /boot/config-2.6.7-i386-1



Passo XIII
==========


Vamos criar um arquivo initrd assim:


  mkinitrd -o /boot/initrd-2.6.7-i386-1.img 2.6.7-i386-1


A opção (-o arquivo) diz onde salvar o arquivo initrd gerado.
A próxima opção de parâmetro é a versão do kernel que você
compilou.

Na verdade, o initrd não é necessário caso você tenha
incorporado ao kernel todo a hardware necessário para
sua inicialização e o restante que não é necessário para a
inicialização como módulo. Ou seja, você não deve configurar
como módulo o chipset da sua placa mãe, suporte a IDE e todos
os sistemas de arquivos que estiver utilizando, como ext3,
jfs, xfs e reiserfs.

Eu recomendo não utilizar o initrd, pois afinal, este artigo
visa criar um kernel específico para a sua máquina.

O initrd é utilizado mais para kernel's genéricos que acompanham
as distribuições Linux. As distribuições são lançadas com
kernel's genéricos para suportar o maior número de hardware
possível. Então tem muita coisa lá que você não precisa. Afinal,
você não tem todas as marcas de placa de vídeo por exemplo em
sua máquina não é mesmo?


Passo XIV
=========


Vamos configurar o gerenciador de boot, GRUB ou LILO, qual você utiliza?

-> Configuração GRUB (Isto é só um exemplo):

# Note que você não precisa regravar o GRUB no MBR ou partição específica após feitas as alterações.


  boot=/dev/hda
  default=0
  timeout=10
  title Debian GNU/Linux (2.4.25-i386-c4)
  root (hd0,1)
  kernel /boot/vmlinuz-2.4.25-i386-c4 ro root=LABEL=/
  initrd /boot/initrd-2.4.25-i386-c4.img
  title Debian GNU/Linux (2.6.7-i386-1)
  root (hd0,1)
  kernel /boot/vmlinuz-2.6.7-i386-1 ro root=LABEL=/
  initrd /boot/initrd-2.6.7-i386-1.img



Configuração do LILO (Isto é apenas um exemplo):
================================================


Note que você precisa regravar o LILO no MBR ou partição
específica após feitas as alterações.


  boot=/dev/hda
  map=/boot/map
  install=/boot/boot.b
  default=2.6.7
  lba32
  prompt
  timeout=50
  message=/boot/message
  menu-scheme=wb:bw:wb:bw
  image=/boot/vmlinuz
  label=2.4.25
  root=/dev/hda3
  append="hdc=ide-scsi"
  read-only
  image=/boot/bzImage-2.6.0
  label=2.6.7
  root=/dev/hda3
  read-only


Execute lilo para regravar o LILO no MBR.


  # /sbin/lilo


Não remova a configuração do kernel anterior que estava
funcionando. Ele será útil para inicializar a máquina em caso
de alguma falha na inicialização do novo kernel.

Reinicie sua máquina e boa sorte!

Alias, esta é a única vez atualmente que é necessário reiniciar
sua máquina quando seu sistema é Linux.  Eu disse atualmente
pois isto já está em discussão e em desenvolvimento com o
pessoal do kernel.  Num futuro bem próximo, não será necessário
reiniciar sua máquina para executar um novo kernel.  E falando
de hardware, você não mais precisará reiniciar sua máquina
para trocar uma placa PCI ou até mesmo um processador em um
sistema de multiprocessadores.

Novas versões deste artigo podem ser encontradas na URL abaixo:
http://www.goes.eti.br/docs/kernel-2.6.txt


  Suporte com relação a este artigo por e-mail:
  Título: Artigo Compilando um Kernel Linux 2.6
  Envie suas dúvidas para msl@goes.eti.br


Qualquer correção neste artigo é só me avisar! Eu agradeço pela leitura.

Reply to: