[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ siguiente ]


Guía de referencia Debian
Capítulo 7 - El kernel de Linux en Debian


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.


7.1 Recompilación del kernel

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:

Manoj Srivastava escribió:

--initrd requiere de un parche cramfs de Debian.

Herbert Xu escribió:

No, no es así. Para usar un sistema de archivos diferente al CRAMFS hay que configurar MKIMAGE en el /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.


7.1.1 Método Debian estándar

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).


7.1.2 Método clásico

Obtenga los fuentes nuevos de:

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 ...

7.1.3 Cabeceras del 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.


7.2 El kernel modular 2.4

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.3 y Documentation/*.txt en los fuentes de Linux para una información detallada.


7.2.1 PCMCIA

/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.


7.2.2 SCSI

[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.


7.2.3 Funciones de Red

/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.


7.2.4 Sistema de archivos EXT3 ( > 2.4.17)

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).


7.2.5 Soporte Realtek RTL-8139 en el kernel 2.4

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.


7.2.6 Soporte puerto paralelo

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.


7.3 Poniendo a punto al kernel mediante el sistema de archivos proc

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.


7.3.1 Demasiado archivos abiertos

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

7.3.2 Intervalos de vaciado de disco

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.


7.3.3 Máquinas con memoria extremadamente lenta

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

7.4 El kernel 2.6 con udev

udev es un reemplazo dinámico para /dev/. Los nombres de los dispositivos se pueden elegir bien cortos. El devfs utilizado por el núcleo 2.4 actualmente se encuentra obsoleto.

Si se instala el kernel 2.6 de Debian kernel-image-2.6.NN con el paquete udev, este último quedará activado.


[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ siguiente ]


Guía de referencia Debian

CVS, jue ene 18 11:52:44 UTC 2007

Osamu Aoki osamu#at#debian.org
Coordinador de la traducción al español: Walter O. Echarri wecharri#at#infovia.com.ar
Autores, Sección A.1