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 dificil e até os mais admiráveis desenvolvedores podem ficar confusos:
/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 uso-o uma vez que eu queira que meu kernel seja quase o mesmo
que o kernel fornecido pelo 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 uma nova
versão 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.
Consulte Documentation/*.txt
nos fontes do kernel Linux para
informação precisa.
O arquivo /etc/modules
precisa conter o conteúdo a seguir para que
PCMCIA funcione :
# driver ISA PnP isa-pnp # 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 generoso 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."
[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, através do 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 os fontes do Linux em
Documentation/sysctl/*
.
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.
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 (ou coloque-os dentro de um script de inicialização em
/etc/rcS.d/*
.
# 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
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 5 segundos para 1 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 5 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
1.06-17, Sáb Jan 31 07:56:05 UTC 2004osamu@debian.org
pormenese@uol.com.br