Debian tiene su propio método de recompilar el kernel y sus módulos asociados. Véase también Debian y el kernel, Sección 2.7.
La utilización de gcc
, binutils
y
modutils
de la rama unstable de Debian puede resultar
de ayuda al compilar el kernel de linux más reciente. Véase
/usr/share/doc/kernel-package/README.gz
de la información oficial
(en especial la parte inferior de ésta)
Puesto que es un tema dinámico, la compilación del kernel es un asunto difícil que puede confundir incluso a los desarrolladores más admirados:
/etc/mkinitrd/mkinitrd.conf
.
Sea cuidadoso y consulte siempre el
/usr/share/doc/kernel-package/README.gz
de Manoj y Kent.
Asegúrese de obtener la última versión inestable del paquete
kernel-package
si va a compilar la versión más reciente del
kernel.
initrd no es necesario para un kernel compilado para una única
máquina. Lo uso porque deseo que mi kernel sea casi el mismo que el
proporcionado por los paquetes kernel-image. Si utiliza initrd,
asegúrese de leer mkinitrd(8)
y mkinitrd.conf(5)
.
Véase también http://bugs.debian.org/149236
.
Preste atención a los informes de fallos de los paquetes
kernel-package
, gcc
, binutils
y
modutils
. Si es necesario utilice las versiones más recientes.
Compilar en un sistema Debian un kernel personalizado a partir de los fuentes
exige de un cuidado especial. Utilice la nueva opción
--append_to_version de make-kpkg
para crear múltiples
imágenes del kernel.
# apt-get install debhelper modutils kernel-package libncurses5-dev # apt-get install kernel-source-2.4.18 # utilice la versión más reciente # vi /etc/kernel-pkg.conf # escriba su nombre y dirección # electrónica $ cd /usr/src # cree el directorio $ tar --bzip2 -xvf kernel-source-2.4.18.tar.bz2 $ cd kernel-source-2.4.18 # si este es el código fuente de su # kernel $ rm -rf */pcmcia # [OPCIONAL] si uno desea usar los módulos de pcmcia-cs $ cp /boot/config-2.4.18-386 .config # tomar configuración actual como predeterminada $ make menuconfig # personalizar a gusto $ make-kpkg clean # indispensable (consultar: 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 # instalar
En realidad, make-kpkg kernel_image ejecuta make oldconfig y make dep. No utilice --initrd si no va a usar initrd.
Se puede evitar hacer rm -fr */pcmcia seleccionado "General setup —>" en "PCMCIA/CardBus support —>" en make menuconfig y tomar como configuración "< > PCMCIA/CardBus support" (es decir, destildando la casilla de verificación).
En una máquina SMP, configure CONCURRENCY_LEVEL de acuerdo con el
kernel-pkg.conf(5)
.
Obtenga los fuentes nuevos de:
http://www.kernel.org/
http://pcmcia-cs.sourceforge.net/
o utilice los fuentes de Debian equivalentes y haga lo siguiente:
# cd /usr/src # tar xfvz linux-loquesea.tar.gz # rm -rf linux # ln -s linux-loquesea linux # tar xfvz pcmcia-cs-loquesea.tar.gz # ln -s pcmcia-cs-loquesea pcmcia # cd linux # rm -rf */pcmcia # [OPCIONAL] si desea usar los módulos de pcmcia-cs # make menuconfig ... lo relativo a la configuración ... # make dep # make bzImage ... edite lilo / grub ... ... mueva /usr/src/linux/arch/i386/boot/bzImage al directorio boot ... ... /sbin/lilo o lo que corresponda si usa grub # make modules; make modules_install # cd ../pcmcia # make config # make all # make install ... añada los nombres de los módulos que se necesitan al /etc/modules # shutdown -r now ... arranque con el nuevo kernel ...
La mayoría de los programas "normales" no necesitan las cabeceras del
núcleo y de hecho pueden corromperse si se las usa directamente; en cambio,
deben compilarse usando las cabeceras con las que fueron creadas las
glibc
que en un sistema Debian se encuentran en
los directorios /usr/include/linux
y
/usr/include/asm
.
Por lo tanto no cree enlaces simbólicos al directorio
/usr/src/linux
desde /usr/include/linux
y
/usr/include/asm
, como lo sugieren algunos documentos
desactualizados.
Si necesita las cabeceras del un kernel en particular para
algunas aplicaciones específicas que así lo requieran, altere el/los
makefile(s) de modo de incluir las rutas correspondientes
dir-de-las-cabeceras-de-un-kernel-en-particular/include/linux
y
dir-de-las-cabeceras-de-un-kernel-en-particular/include/asm
.
Los nuevos núcleos 2.4 de Debian proporcionados por el paquete
kernel-image-2.4.NN
están muy modularizados. Debe
asegurarse que los módulos estén activados para hacer que el kernel funcione
como se pretende.
Si bien hay numerosos ejemplos de /etc/modules
en la siguiente
sección, me han dicho que la manera adecuada de corregir los problemas
relacionados con los módulos consiste en crear un alias para el dispositivo en
un archivo situado en /etc/modutils/
ya que en los núcleos
actuales hay suficientes alias disponibles. Algunos módulos se pueden activar
automáticamente por los programas de detección automática de hardware tal como
discover
. Véase también Paquetes de detección de hardware para el
servidor X, Sección 9.4.2.
Véase Cuidados especiales para tratar con
módulos, Sección 2.7.5 y Documentation/*.txt
en los fuentes de
Linux para una información detallada.
/etc/modules
necesita incluir lo siguiente para que funcione
algunas PCMCIA antiguas:
# controlador PnP ISA isa-pnp # Nuevo controlador PCMCIA de bajo nivel # yenta_socket # en mi caso no parece ser necesario
Del resto se encarga los scripts PCMCIA (del paquete pcmcia-cs
),
depmod
y kmod
. Creo que necesité de
isa-pnp
ya que mi portátil es una antigua ISA-PCMCIA. Las
portátiles actuales con CardBus/PCMCIA no necesitan de él.
Según las palabras del genio Miquel van Smoorenburg miquels@cistron.nl
:
"Simplemente eliminé todo lo referente a pcmcia de la PC portátil de mi
trabajo, incluyendo cardmgr, e instalé el kernel 2.4 con soporte cardbus y el
nuevo paquetee hotplug
de woody.
Mientras posea únicamente tarjetas de 32 bits, no necesitará el paquete pcmia; 2.4 incluye servicios incorporados para tarjetas. El controlador estándar tulip debería funcionar correctamente con su tarjeta dlink.
—Mike."
Véase Linux PCMCIA
HOWTO
y Configuración
de la red y PCMCIA, Sección 10.9.5.
[SIN PROBAR] /etc/modules
necesita incluir lo siguiente para que
funcione SCSI:
# núcleo SCSI scsi_mod # controlador SCSI genérico sg # disco SCSI sd_mod # Todos los módulos necesario para el hardware ...
depmod
puede encargarse de algunos de los módulos anteriores.
/etc/modules
debe incluir lo siguiente para funciones de red
adicionales:
# net/ipv-4 ip_gre ipip # net/ipv-4/netfilter # iptable (en orden) 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
Lo anterior puede no estar optimizado. depmod
puede encargarse de
algunos de los módulos anteriores.
Para activar el sistema de archivos transaccional EXT3 usando el paquete precompilado kernel-image ( > 2.4.17) de Debian hay que seguir los siguientes pasos:
# cd /etc; mv fstab fstab.antiguo # sed 's/ext2/ext3,ext2/g' <fstab.antiguo >fstab # vi /etc/fstab ... fijar el sistema de archivos raíz en "auto" en vez 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 el último kernel y configure el arranque (en este caso se ejecuta lilo) # tune2fs -j -i 0 /dev/hda1 # tune2fs -j -i 0 /dev/hda2 ... Para todos los sistemas de archivos EXT2 convertidos en EXT3 # shutdown -r now
El sistema transaccional EXT3 se encuentra ahora habilitado. Una entrada
"type" ext3,ext2 en el fstab
permite una
migración segura a EXT2 si el núcleo no soporta EXT3 para particiones
diferentes a la partición raíz.
Si ya tiene instalado un kernel 2.4 y no desea reinstalarlo, realice los pasos
anteriores a los comandos apt-get
, y a continuación:
# 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 los sistemas de archivos EXT2 convertidos a EXT3 # shutdown -r now
El sistema transaccional EXT3 se encuentra ahora habilitado.
Si /etc/mkinitrd/modules
no ha sido configurado cuando
mkinitrd
fue ejecutado y le gustaría añadir algunos módulos en
tiempo de arranque:
... en el indicador de initrd pulse ENTER (5 seg.) para acceder al intérprete de comandos # insmod jbd # insmod ext3 # modprobe ext3 puede hacerse cargo de todo # insmod ext2 # ^D ... continua el arranque
En los mensajes del arranque del sistema (dmesg
), puede aparecer
la frase "cramfs: wrong magic" que no acarrea ninguna consecuencia.
Este problema se ha resuelto en Sarge (2002/10). Véase http://bugs.debian.org/135537
y
el EXT3
File System mini-HOWTO
o
/usr/share/doc/HOWTO/en-txt/mini/extra/ext3-mini-HOWTO.gz
para más
información.
Se ha informado sobre graves cuelgues del kernel al activar EXT3 pero no he tenido ningún problema (con el 2.4.17).
Por alguna razón, el módulo que soporta RTL-8139 ya no se llama rtl8139 sino
8139too. Simplemente edite su /etc/modules
para reflejar este
cambio al pasar del kernel 2.2 al 2.4.
En el kernel-image-2.4.*
, el soporte del puerto paralelo es
proporcionado mediante un módulo. Actívelo haciendo:
# modprobe lp # echo lp >> /etc/modules
Véase Documentation/parport.txt
del código fuente de Linux.
El comportamiento del kernel de Linux se puede modificar al vuelo usando el sistema de archivos proc.
Para información básica para modificar los parámetros del kernel a través del
sistema de archivos /proc
, consulte
Documentation/sysctl/*
de los fuentes del kernel.
Véase algunos ejemplos de manipulación de los parámetros del kernel en
/etc/init.d/networking
y Problemas extraños al acceder a ciertos
sitios de Internet, Sección 3.7.5.
Véase sysctl.conf(5)
para saber cómo configurar el tiempo de
arranque en la configuración del kernel mediante el sistema de archivos
/proc
con el script /etc/init.d/procps.sh
que
generalmente se ejecuta desde /etc/rcS.d/S30procps.sh
.
El kernel de Linux puede quejarse diciendo "Too many open files" ("Demasiado archivos abiertos"). Esto es debido al pequeño valor predeterminado (8096) de file-max. Para solucionar este problema, ejecute el siguiente comando como superusuario:
# echo "65536" > /proc/sys/fs/file-max # para los núcleos 2.2 y 2.4 # echo "131072" > /proc/sys/fs/inode-max # únicamente para el núcleo 2.2
o escriba lo siguiente en el /etc/sysctl.conf
para que el cambio
sea permanente:
file-max=65536 # para los núcleos 2.2 y 2.4 inode-max=131072 # únicamente para el núcleo 2.2
Puede modificar los intervalos de vaciado de disco mediante el sistema de archivos proc. Lo siguiente disminuirá el intervalo predeterminado de cinco segundos a un segundo.
# echo "40 0 0 0 100 30000 60 0 0" > /proc/sys/vm/bdflush
Esto puede influir negativamente en el rendimiento de la E/S del archivo. Pero asegura los contenidos del mismo salvo durante el último segundo que es inferior a los 5 segundos predeterminados. Esto es así incluso para el sistema de archivos transaccional.
Para algunos sistemas antiguos con memoria extremadamente lenta, puede resultar útil activar la siguiente opción usando el sistema de archivos proc:
# echo 1 > /proc/sys/vm/overcommit_memory
Guía de referencia Debian
CVS, lun abr 3 22:57:45 UTC 2005osamu@debian.org
wecharri@infovia.com.ar