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.
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:
/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
.
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)
.
Obtenha os fontes originais de :
http://www.kernel.org/
http://pcmcia-cs.sourceforge.net/
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 ...
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
.
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.
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.
[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.
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.
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).
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.
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.
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
.
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
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.
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
Referência Debian
CVS, Seg Abr 3 22:58:08 UTC 2005osamu@debian.org
pormenese@uol.com.br