[ anterior ] [ Conteúdo ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ próximo ]


Referência Debian
Capítulo 7 - O kernel Linux no Debian


O Debian tem o seu próprio método de recompilar o kernel e módulos relacionados. Consulte também Debian e o kernel, Seção 2.7.


7.1 Recompilação do Kernel

O uso do gcc, binutils, e modutils do Debian unstable pode ajudar quando compilamos o mais novo kernel Linux. Consulte /usr/share/doc/kernel-package/README.gz, especialmente o final do mesmo para a informação oficial.

Uma vez que trata-se de um alvo em movimento, a compilação do kernel é um assunto difícil que pode confundir até mesmo o desenvolvedor mais admirado:

Manoj Srivastava escreveu:

--initrd requer um patch do cramfs somente para Debian.

Herbert Xu escreveu:

Não, não precisa, tudo o que você precisa fazer para usar outro sistema de arquivos diferente do CRAMFS é definir MKIMAGE em /etc/mkinitrd/mkinitrd.conf.

Seja cuidadoso e sempre conte com /usr/share/doc/kernel-package/README.gz de Manoj e Kent. Certifique-se de obter a versão mais nova instável do pacote kernel-package caso esteja compilando a versão mais nova do kernel.

O initrd não é necessário para um kernel compilado somente para uma máquina. Eu o uso porque quero que meu kernel seja quase o mesmo que o kernel fornecido pelos pacotes kernel-image. Caso você use initrd, certifique-se de ler mkinitrd(8) e mkinitrd.conf(5). Consulte também http://bugs.debian.org/149236.


7.1.1 Método Debian padrão

Fique atento aos relatórios de bugs do kernel-package, gcc, binutils e modutils. Use novas versões deles se necessário.

Compilar um kernel personalizado a partir dos fontes em um sistema Debian requer cuidado especial. Use o novo --append_to_version com o make-kpkg para construir múltiplas imagens do kernel.

     # apt-get install debhelper modutils kernel-package libncurses5-dev
     # apt-get install kernel-source-2.4.18   # Use a versão mais nova
     # apt-get install fakeroot
     # vi /etc/kernel-pkg.conf                # Coloque seu nome e e-mail
     $ cd /usr/src                            # diretório de compilação
     $ tar --bzip2 -xvf kernel-source-2.4.18.tar.bz2
     $ cd kernel-source-2.4.18                # Caso esse seja seu fonte do kernel
     $ cp /boot/config-2.4.18-386 .config     # use a configuração atual por padrão
     $ make menuconfig                        # personalize-a como quiser
     $ make-kpkg clean                        # deve ser executado (conforme: man make-kpkg)
     $ fakeroot make-kpkg --append_to_version -486 --initrd \
             --revision=rev.01 kernel_image \
             modules_image # modules_image é para pcmcia-cs*, etc.
     $ cd ..
     # dpkg -i kernel-image*.deb pcmcia-cs*.deb # instala

make-kpkg kernel_image na verdade faz um make oldconfig e um make dep. Não use --initrd caso não esteja usando um initrd.

Se quiser usar módulos de pcmcia-cs ou não usar pcmcia, deve-se selecionar "General setup —>" para "PCMCIA/CardBus support —>" no make menuconfig e definir a configuração para "< > PCMCIA/CardBus support" (ou seja, desmarque a caixa).

Em uma máquina SMP, defina CONCURRENCY_LEVEL de acordo com kernel-pkg.conf(5).


7.1.2 Método clássico

Obtenha os fontes originais de :

ou use os fontes equivalentes no Debian e faça o seguinte :

     # cd /usr/src
     # tar xfvz linux-qualquercoisa.tar.gz
     # rm -rf linux
     # ln -s linux-qualquercoisa linux
     # tar xfvz pcmcia-cs-qualquercoisa.tar.gz
     # ln -s pcmcia-cs-qualquercoisa pcmcia
     # cd linux
     # make menuconfig
     ... coisas do configure ...
     # make dep
     # make bzImage
     ... edite para o lilo / grub ...
     ... mova /usr/src/linux/arch/i386/boot/bzImage para boot ...
     ... /sbin/lilo ou seja lá o que você faz para o grub
     # make modules; make modules_install
     # cd ../pcmcia
     # make config
     # make all
     # make install
     ... adicione os nomes dos módulos necessários em /etc/modules
     # shutdown -r now
     ... inicie com o novo kernel ...

7.1.3 Cabeçalhos do kernel

A maioria dos programas "normais" não precisa de cabeçalhos do kernel e, de fato, podem ter problemas se você usá-los diretamente; ao invés disso eles devem ser compilados com os mesmos cabeçalhos com os quais a glibc foi compilada, os quais são as versões em /usr/include/linux e /usr/include/asm do sistema Debian.

Portanto não coloque ligações simbólicas para os diretórios em /usr/src/linux de /usr/include/linux e /usr/include/asm, como sugerido por algumas documentações antigas.

Caso você precise de cabeçalhos de kernel particulares por alguns programas específicos de kernel, altere o(s) makefile(s) para que o(s) mesmo(s) inclua(m) caminhos apontando para diretório-dos-cabeçalhos-de-kernel-específicos/include/linux e diretório-dos-cabeçalhos-de-kernel-específicos/include/asm.


7.2 O kernel 2.4 modularizado

Os novos kernels Debian 2.4 fornecidos por kernel-image-2.4.NN são bem modulares. Você tem que se certificar que estes módulos estejam ativados para fazer com que o kernel funcione da maneira que você pretende.

Apesar de existirem muitos exemplos para /etc/modules na seção a seguir como uma rápida correção, eu ouvi que a maneira correta de corrigir estes problemas relacionados a módulos é fornecer um alias para o dispositivo em um arquivo em /etc/modutils/ uma vez que existem aliases o bastante disponíveis com os kernels atuais. Alguns módulos podem ser auto ativados por programas de detecção de hardware como o discover. Veja também Detecção de hardware para o X, Seção 9.4.2.

Consulte Documentation/*.txt nos fontes do kernel Linux para informação precisa.


7.2.1 PCMCIA

O arquivo /etc/modules pode precisar conter o conteúdo a seguir para que algum PCMCIA antigo funcione :

     # driver ISA PnP
     isa-pnp
     # Novo Driver PCMCIA baixo-nível
     # yenta_socket # não parece ser necessário em meu caso

O restante é gerenciado pelos scripts PCMCIA ( do pacote pcmcia-cs), depmod e kmod. Eu acho que precisei do isa-pnp devido ao meu laptop ser um antigo ISA-PCMCIA. Laptops atuais com CardBus/PCMCIA podem não requerer isso.

Voz do gênio Miquel van Smoorenburg miquels@cistron.nl:

"Eu simplesmente removi todas as coisas pcmcia do laptop aqui no trabalho , incluindo o cardmgr, etc, e só instalei um kernel 2.4 com suporte cardbus e o novo pacote hotplug do woody.

Contanto que você possua somente cartões 32-bit você não precisa do pacote pcmcia; o kernel 2.4 possui o cardservices embutido. E o driver tulip padrão deve funcionar bem com seu cartão dlink.

—Mike."

Veja o HOWTO de PCMCIA no Linux e Configuração de rede e PCMCIA, Seção 10.9.5.


7.2.2 SCSI

[NÃO TESTADO] O arquivo /etc/modules precisa conter o que se segue para que SCSI funcione :

     # SCSI core
     scsi_mod
     # SCSI generic driver
     sg
     # SCSI disk
     sd_mod
     # Todos os outros módulos de HW necessários
     ...

O depmod pode cuidar de alguns dos módulos acima.


7.2.3 Função de rede

O arquivo /etc/modules precisa conter o que se segue para função extra de rede :

     # net/ipv-4
     ip_gre
     ipip
     
     # net/ipv-4/netfilter
     # iptable (em ordem)
     ip_tables
     ip_conntrack
     ip_conntrack_ftp
     iptable_nat
     iptable_filter
     iptable_mangle
     #
     ip_nat_ftp
     ip_queue
     #
     ipt_LOG
     ipt_MARK
     ipt_MASQUERADE
     ipt_MIRROR
     ipt_REDIRECT
     ipt_REJECT
     ipt_TCPMSS
     ipt_TOS
     ipt_limit
     ipt_mac
     ipt_mark
     ipt_multiport
     ipt_owner
     ipt_state
     ipt_tcpmss
     ipt_tos
     ipt_unclean
     #
     #ipchains
     #ipfwadm

O precedente pode não estar otimizado. O depmod pode cuidar de alguns dos módulos acima.


7.2.4 Sistema de arquivos EXT3 ( > 2.4.17)

Habilitar um sistema de arquivo com journaling com o FS EXT3 envolve os seguintes passos usando um pacote kernel-image ( > 2.4.17) Debian pré-compilado :

     # cd /etc; mv fstab fstab.old
     # sed 's/ext2/ext3,ext2/g' <fstab.old >fstab
     # vi /etc/fstab
     ... defina o tipo de sistema de arquivos do sistema de arquivos raiz para
     ... "auto" ao invés de "ext3,ext2"
     # cd /etc/mkinitrd
     # echo jbd >>modules
     # echo ext3 >>modules
     # echo ext2 >>modules
     # cd /
     # apt-get update; apt-get install kernel-image-2.4.17-686-smp
     ... instale o último kernel e configure a inicialização (lilo é executado aqui)
     # tune2fs -j -i 0 /dev/hda1
     # tune2fs -j -i 0 /dev/hda2
     ... Para todos os sistemas de arquivos EXT2 convertidos para EXT3
     # shutdown -r now

Agora o journaling EXT3 está habilitado. Usar ext3,ext2 como a entrada "type" do fstab garante um fallback seguro para EXT2 caso o kernel não suporte EXT3 para partições não-raíz.

Caso você tenha instalado um kernel 2.4 anteriormente e não deseja reinstalar, execute os passos acima até os comandos apt-get e então :

     # mkinitrd -o /boot/initrd.img-2.4.17-686-smp /lib/modules/2.4.17-686-smp
     # lilo
     # tune2fs -j -i 0 /dev/hda1
     # tune2fs -j -i 0 /dev/hda2
     ... para todos os sistemas de arquivos EXT2 convertidos para EXT3
     # shutdown -r now

Agora journaling EXT3 está habilitado.

Caso /etc/mkinitrd/modules não estivesse configurado quando o mkinitrd foi executado e você quisesse adicionar alguns módulos em tempo de inicialização :

     ... no prompt initrd para ganhar o shell (5 segundos), digite RETURN
     # insmod jbd
     # insmod ext3 # modprobe ext3 pode cuidar de tudo
     # insmod ext2
     # ^D
     ... continue iniciando

Na tela de inicialização do sistema (dmesg), "cramfs: wrong magic" pode aparecer mas é conhecido que isso é inofensivo. Este problema foi resolvido no Sarge (2002/10). Consulte http://bugs.debian.org/135537 e o mini-HOWTO do Sistema de Arquivos EXT3 ou /usr/share/doc/HOWTO/en-txt/mini/extra/ext3-mini-HOWTO.gz para maiores informações.

Foi reportado que alguns sistemas experienciam severos travamentos de kernel caso EXT3 esteja habilitado mas eu não tive problemas (até o kernel 2.4.17).


7.2.5 Suporte Realtek RTL-8139 no kernel 2.4

Por alguma razão, o módulo para suporte a RTL-8139 não é mais chamado rtl8139, ele é agora chamado 8139too. Somente edite seu arquivo /etc/modules para refletir esta mudança quando atualizando um kernel 2.2 para um kernel 2.4.


7.2.6 Suporte a porta paralela

Para kernel-image-2.4.*, o suporte a porta paralela é fornecido como um módulo. Habilite-o usando :

     # modprobe lp
     # echo lp >> /etc/modules

Consulte Documentation/parport.txt nos fontes do kernel Linux.


7.3 Ajustando o kernel pelo sistema de arquivos proc

O comportamento do kernel Linux pode ser modificado durante a execução usando o sistema de arquivos proc.

Para obter informações básicas sobre modificação dos parâmetros do kernel através do sistema de arquivos /proc, leia Documentation/sysctl/* nos fontes do Linux.

Veja alguns exemplos de manipulações de parâmetros do kernel em /etc/init.d/networking and Estranhos problemas de acesso a alguns websites, Seção 3.7.5.

Veja a página de manual sysctl.conf(5) para saber como como ajustar a configuração da inicialização do kernel através do sistema de arquivos /proc com o script/etc/init.d/procps.sh executado geralmente a partir de /etc/rcS.d/S30procps.sh.


7.3.1 Muitos arquivos abertos

O kernel Linux pode reclamar "Too many open files" (ou, "Muitos arquivos abertos"). Isto é devido ao pequeno valor padrão (8096) para file-max. Para corrigir esse problema, execute os comandos a seguir como root:

     # echo "65536"  > /proc/sys/fs/file-max  # para kernel 2.2 e 2.4
     # echo "131072" > /proc/sys/fs/inode-max # somente para kernel 2.2

ou coloque o seguinte em /etc/sysctl.conf para a mudança permanente:

     file-max=65536   # para kernel 2.2 e 2.4
     inode-max=131072 # somente para kernel 2.2

7.3.2 Intervalos de sincronização (flush) de disco

Você pode mudar os intervalos de sincronização (flush) do disco através do sistema de arquivos proc. O seguinte diminuirá esse intervalo do padrão de cinco segundos para um segundo.

     # echo "40 0 0 0 100 30000 60 0 0"  > /proc/sys/vm/bdflush

Isso pode ter um pequeno impacto negativo no desempenho de I/O de arquivo. Mas isso assegura os conteúdos dos arquivos exceto para o último segundo, o que é mais curto que o padrão de cinco segundos. Isso é verdadeiro mesmo para o sistema de arquivos journaling.


7.3.3 Máquinas de pouca memória antigas e lerdas

Para alguns sistemas antigos de pouca memória, ainda pode ser útil habilitar sobre-envio (over-commit) de memória através do sistema de arquivos proc:

     # echo 1 > /proc/sys/vm/overcommit_memory

[ anterior ] [ Conteúdo ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ próximo ]


Referência Debian

CVS, Qui Jan 18 11:53:12 UTC 2007

Osamu Aoki osamu#at#debian.org
Paulo Rogério Ormenese (líder: pt-br) pormenese#at#uol.com.br
Autores, Seção A.1