[LinuxFocus-icon]
Hogar  |  Mapa  |  Indice  |  Busqueda

Noticias | Arca | Enlaces | Sobre LF
Este documento está disponible en los siguientes idiomas: English  Castellano  ChineseGB  Deutsch  Francais  Italiano  Nederlands  Turkce  

convert to palmConvert to GutenPalm
or to PalmDoc

[Photo of the Author]
por Philip de Groot
<philipg(at)authors.linuxfocus.org>

Sobre el autor:

Espero recibir mi doctorado de la Universiteit van Nijmegen durante este año. Mi tesis es sobre lo que llamamos chemometrics. Actualmente trabajo en tecnología informática aplicada a la biología, en el Centro Médico Académico en Amsterdam, Holanda. Además mantengo mi propia página para novatos de Linux (en holandés): es una de las muchas iniciativas de y para la comunidad linnuxera. Me encanta trabajar con Linux y habitualmente escribo mis experiencias.



Taducido al español por:
Javier Gómez Sierras <jgomsi(at)obelix.umh.es>

Contenidos:

 

Compila tu propio núcleo de Linux

[illustratie]

Resumen:

Dentro de poco averiguarás que tú también puedes obtener, configurar, compilar, e instalar tu propio núcleo.


_________________ _________________ _________________

 

Introducción

¿Y por qué vas a querer compilar e instalar un nuevo núcleo tú solito? Algunas posibles razones son: Es un problema que compilar tu propio núcleo requiera un elevado conocimiento informático. Por lo tanto un nuevo usuario de Linux no intentará compilar el núcleo a la ligera. Este artículo muestra capturas de pantalla del método para compilar el núcleo usando el comando 'make xconfig'. Con este comando interactua con el núcleo a través de un GUI, una Interfaz Gráfica de Usuario, y el ratón. Hay alrededor de 40 capturas de pantalla, que clarifican por qué o por qué no debes escoger ciertas opciones en situaciones particulares. Hablar de estas 40 capturas puede parecer excesivo, pero es la mejor manera de clarificar el funcionamiento interno del núcleo y el cómo y por qué de ciertas opciones del núcleo. Las capturas de pantalla están basadas en el núcleo 2.4.6. El núcleo más reciente es actualmente el 2.4.19, pero a parte de algunas opciones extras en los menús (p. ej., soporte para nuevo hardware) las capturas son las mismas y el proceso de compilar el núcleo también. Un consejo: imprime esta página antes de empezar, ¡para que así siempre tengas acceso a la información necesaria!

El artículo está estructurado como sigue. Primero habla de dónde puedes encontras el código fuente en Internet, y cómo instalar el código fuente, seguido de la configuración gráfica usando las capturas de pantalla. Una vez que el núcleo está configurado debe ser compilado, pero incluso un núcleo recien compilado no está todavía listo para usar. Primero, el nuevo núcleo debe ser instalado con el gestor de arranque 'lilo', y antes de usar 'lilo' tienes que crear el fichero '/etc/lilo.conf'. También puedes copiar el núcleo compilado a una partición desde la que puedas arrancar Linux con un programa para DOS/Windows llamado 'loadlin'. Además hay un montón de puntos específicos que deben ser tratados, como el soporte para PCMCIA ya que es necesario para portátiles. Las PCMCIA, unas pequeñas tarjetas para insertar parecidas a una tarjeta de crédito de gran grosor y que a menudo se encargan de la conexión a la red, están soportadas por el núcleo internamente desde los núcleos de la serie 2.4.x. Antiguos núcleos pueden soportar tarjetas PCMCIA a través de una compilación e instalación distinta. SuSE tiene otro problema, el soporte para sonido a través de los drivers ALSA. Estos drivers no son parte del núcleo y deben ser compilados e instalados por separado, porque los drivers originales habitualmente ya no funcionan. Para poner peor las cosas, cambiar de una serie del núcleo a otra, digamos de la 2.2 a la 2.4, puede venir acompañado de problemas con ciertas utilidades del núcleo, las llamadas 'modutils'. Estas contienen el código necesrio para cargar un módulo del núcleo: La figura 3 explica que es un módulo. Algunas veces el nuevo núcleo no sabe qué hacer con las viejas 'modutils', por lo que tienes que compilar e instalar una versión más reciente de modutils. Problemas como estos son raros pero ocurren, y es necesario mencionarlos con antelación.

Pero, si sigues fielmente el prodimiento de este artículo no hay casi nada que pueda fallar. Se añade el nuevo núcleo a 'lilo', o se copia a la partición de 'loadlin'. Por lo tanto, en caso de emergencia, todavía puedes reiniciar con el núcleo original. Entonces, trabajando con el núcleo original puedes intentar solventar el problema con el nuevo núcleo. Incluso aunque pudieses tener problemas con las nuevas 'modutils' del núcleo todavía sería posible reiniciar con el antiguo núcleo y entonces arreglar el problema compilando e instalándolas por separado: todas las nuevas versiones de 'modutils' son compablibles hacia atrás con las antiguas versiones del núcleo, por lo que las nuevas 'modutils' funcionan bien con antiguos núcleos.

 

Instalando el código fuente del núcleo

Todo lo que vas a hacer ahora requiere privilegios de root, así que debes comenzar entrado a una sesión como root. Lo primero y más importante es instalar el código fuente del núcleo, p. ej., desde el CD de instalación. En SuSE dicho código se encuentra en la parte 'd' (de 'desarrollo') como el paquete 'lx_kernel'. Es recomendable instalar el código fuente del núcleo que viene con tu distribución, porque así se instalan automaticamente también varios de los GUIs. Una vez que has hecho esto el tarball con el núcleo de Linux más reciente, p. ej., el fichero 'linux-2.4.6.tar.bz2' se puede descargar de (http://www.kernel.org/pub/linux/kernel/v2.4/) y ser instalado. Las modutils correspondientes están en http://www.kernel.org/pub/linux/utils/kernel/modutils/v2.4/. Ten en cuenta que los números de la versión de 'modutils' no tienen que coincidir con los del núcleo: simplemente descargar la versión más reciente. La compilación e instalación de modutils se detalla más tarde, en el epígrafe Ínstalando modutils'. Pero primero lo haremos con el propio núcleo.

El código fuente del núcleo qeu está en tú máquina ahora mismo se encuentra en el directorio '/usr/src/linux/'. Es una buena idea poner este código fuente en particular a salvo, por ejemplo renombrando el directorio linux así:

cd /usr/src
mv linux linux-2.2.19 (si es el código fuente original del 2.2.19).


Sólo después de haber guardado de manera segura el nucleo original has de desempaquetar el nuevo núcleo: comprobarás que el fichero linux-2.4.6.tar.bz2 descomprime su contenido por defecto en el directorio 'linux'. Si ya existía el directorio se sobreescribirá lo que había, y entonces tendrás problemas: ya no podrás recompilar el núcleo antiguo, habrás perdido la configuración original, etc. En este ejemplo renombro el directorio 'linux' creando el directorio 'linux-2.4.6'. La ventaja de este procedimiento es que puedes ver la versión del núcleo actual inmediatamente. Además es fácil instalar una actualización del núcleo. Los comandos son (recuerda, como root):
cd /usr/src
cp ~/linux-2.4.6.tar.bz2 ( asumiento que el tarball lo descargaste  )
                         ( a tu directorio personal ('~')           )
bzip2 -d linux-2.4.6.tar.bz2 (puede que tarde un rato               )
tar -xvf linux-2.4.6.tar
mv linux linux-2.4.6
ln -s /usr/src/linux-2.4.6 /usr/src/linux


Una vez que has hecho esto vas al directorio del núcleo, y haces:
cd /usr/src/linux
make xconfig (ver Figura 1)

La interfaz gráfica para definir tu
     núcleo de Linux después del comando 'make xconfig'.
Figura 1: La interfaz gráfica para definir tu núcleo de Linux después del comando 'make xconfig'.

Este es el menú principal usado para definir el núcleo. Para hacer esto debes pulsar en las diferenctes opciones. Pulsar en 'Save and Exit' guarda tus opciones al disco, y una vez que hayas terminado puedes finalmente compilar e instalar el núcleo (como en la Figura 40). Pero aún no hemos llegado.

 

Configurando el núcleo

Debajo reproduzco varias capturas de pantalla con mis opciones marcadas. Cada pantalla se acompaña de una explicación del porqué e elegido estas opciones. Si lees cuidadosamente estos ejemplos podrás entender las razones de mis elecciones, y también comprenderás mejor qué opción deberías coger en tu caso concreto. La opción 'help' te da una información similar. Puedes ver el botón 'help' haciendo tu propio 'make xconfig' para tu distribución de Linux. Y después pulsa 'Help'. El texto que aparece habitualmente recomienda qué opción deberías escoger.

Los ejemplos, por supuesto, pueden no comprender todo el hardware que puedas tener. Sin embargo, deberían clarificar cómo manejar tu hardware en concreto, y cómo buscar en el propio núcleo para averiguar si tu hardware está soportado.

Selección de 'code maturity level options'.

Figura 2: Selección de 'code maturity level options'.
En esta sección puedes permitir el uso de las opciones experimentales de núcleo. Algunas veces son necesarias, por ejemplo para el soporte de nuevos tipos de tarjetas. Sin embargo, en la mayoría de casos no marcamos esta opción ya que el código experimental genera un núcleo menos estable. En la Figura 1 se ven las opciones ÍEEE 1394 (FireWire) support' y 'Bluetooth support' en gris. Con las opciones marcadas no se puede seleccionar estas dos porque el código correspondiente es todavía experimental.

Figura 3: Support for loadable modules.
(de ahora en adelante las capturas de pantalla estarán enlazadas, puedes abrirlas en una ventana nueva para echarles un vistazo)
Los módulos son trozos del código del núcleo, p. ej., drivers, que se compilan por separado pero idealmente al mismo tiempo que se compila el propio núcleo. Por lo tanto, este código no es parte del núcleo, pero se puede cargar y por lo tanto estar disponible cuando lo necesitas. La recomendación general es compilar el código del núcleo como módulo siempre que sea posible, porque esto da lugar a un núcleo pequeño y estable. Una advertencia: nunca compiles el sistema de ficheros como un núcleo, ver Figura 32. Si cometes este error y compilas el sistema de ficheros como un módulo, el núcleo que obtengas no podrá leer su propio sistema de ficheros. Entonces, el núcleo no podrá siquiera cargar sus propios ficheros de configuración, algo que es obviamente un prerequisito para arrancar correctamente linux. Puedes comprobar que escasamente uso los módulos: me gusta que mi núcleo pueda hablar directamente con todo el hardware sin tener que cargar módulos, pero esta es sólo mi preferencia.

Figura 4: Seleccionando processor type and features.
Aquí tienes que elegir el tipo de procesador que tienes, e indicar si hay que aplicar varias opciones. En general las opciones '/dev/cpu' son bastante avanzadas y no deberíar ser seleccionadas por la mayoría de usuarios. 'High Memory Support' es necesario sólo si tu ordenador tiene más de 1 gigabyte de RAM (no espacio de disco). La mayoría de ordenadores tienen de 64 a 512 megabytes de ram (y de 8 a 60 Gb de disco duro), por lo que 'High Memory Support' no se marca habitualmente. Tienes que activar la opción 'Math Emulation' si usas linux en un equipo 386 o 486SX. Estos antiguos equipos carecen del coprocesador matemático que linux les supone, por lo que en este caso debes seleccionar 'Math Emulation'. Virtualmente todo los procesadores modernos tienen un coprocesador incluido, por lo que habitualmente puedes dejar esta opción sin marcar. La opción 'MRTT' permite una comunicación más rápida entre un bus PCI y uno AGP. Puesto que todos los equipos modernos tienen su tarjeta de video en un bus AGP o PCI deberías marcar 'MTRR': en cualquier caso, siempre es seguro habilitar esta opción incluso si tu equipo no usa el bus PCI o AGP para la tarjeta de vídeo. Symmetric multi-processing support (SMP) [soporte para multiproceso simétrico] se aplica únicamente a las placas base con dos procesarores Pentium II. SMP se asegura de que el núcleo carga ambos procesadores optimamente. La última opción (APIC) también se aplica habitualmente a los sistemas multiprocesador, y normalmente no se activa.

Figura 5: General Kernel Options [Opciones generales del núcleo].
Aquí se le especifican ciertas opciones generales al núcleo. Todo el mundo siempre selecciona Ñetworking support' porque siempre se necesita, p.ej., para Internet. Linux está fuertemente orientado a Internet y no puede funcionar correctamente sin las redes. Además, el soporte para redes también se necesita para muchas otras acciones que no parecen tener mucho que ver con las redes. Es incluso posible que el núcleo no compile sin el soporte para redes. Resumiendo: incluye el soporte para redes. Todos los equipos modernos usan el bus PCI, por lo que selecionamos estas opciones también. El texto en gris 'PCMCIA/CardBus support' muestra que esta opción no está disponible, porque antes hemos indicado que no queremos usar código experimental (ver Figura 2.). Si usas un portátil necesitas el soporte para PCMCIA/CardBus en el núcleo para permitir el uso de la red o un módem (ver también más abajo bajo el nombre 'pcmcia support (laptops)'). 'System V IPC' permite a los programas comunicarse y sincronizarse, 'BSD process accounting' guarda p.ej., el código de error cuando los procesos terminan, y 'Sysctl support' permite a los programas modificar ciertas opciones del núcleo sin tener que recompilar el núcleo o reniciar el sistema. Estas opciones se sueler dejar activadas. Las distribuciones modernas de linux tiene su 'kernel core (/proc/kcore/) format' seleccionado como ÉLF': este es el formato estándar de varias librerías de sistema, p.ej., código que está disponible para el sistema y usado por programas. ÉLF' es el sucesor del obsoleto formato á.out', y similar a los ficheros .dll de windows. Todas los programas modernos de linux usan las librerías ELF, pero desafortunadamente algunos programas más antiguos también precisan de soporte para el formato á.out'. Un ejemplo es 'Word Perfect 8 para XWindows': esta aplicación nativa de XWindows/Linux sólo está disponible en el formato á.out', así que 'xwp' simplemente no funcionará sin el soporte para el formato á.out'. Incluye á.out' como módulo. En principio no lo uso, pero resulta útil tener el código disponible si eres un usuario habitual de java, python, o el emulador de DOS DOSEMU. He seleccionado 'Power Management support' y Ádvanced Power Management BIOS support' (no se muestran en la Figura 5). Estas dos opciones son lo mínimo que se necesita en una placa base ATX moderna para permitir al núcleo apagar el ordenador automaticamente cuando se cierre linux. Las otras funciones de control de energía se desactivan porque no suelen funcionar bajo XWindows (que es lo que uso cuando estoy en linux). KDE y Gnome tienen sus propias funciones de gestión estándar de energía que puedes seleccionar.

Figura 6: Configurando Memory Technology Devices.
Necesitas esta opción para hacer que linux pueda leer por ejemplo tarjetas flash. Las tarjetas flash se usan habitualmente en cámaras digitales. Con esta opción linux puede leer tarjetas flash (desde el hardware necesario) y copiar las fotos como ficheros .jpg al disco. A menos que sepas que lo necesitas yo no marcaría esta opción: si descubres que la necesitas siempre la puedes añadir más tarde

Figura 7: Configurando el parallel port [puerto paralelo].
Antes de que exisitiese la tecnología USB el puerto paralelo se usaba comunmente para conectar impresoras y escáners al ordenador. Mi impresora se conecta al puerto paralelo, así que quiero que este puerto esté disponible en linux. Ten en cuenta que configurar el puerto paralelo no es lo mismo que configurar el sistema de impresión: esto se hace después, en la Figura 28.

Figura 8: Configurando Plug & Play.
Casi todo el mundo tiene un sistema 'Plug & Play' y por lo tanto y quiere soporte para ello. Activar esta opción permite al núcleo configurar los dispositivos 'Plug & Play' y que estén disponibles en el sistema. Algunas veces es necesario activar la opción 'Plug & Play OS' en la BIOS, porque de otra manera linux (y también Windows) no pueden configurar los dispositivos 'Plug & Play'. La opción ÍSA Plug & Play support' se refiere a las tarjetas ISA que son 'Plug & Play' pero usan el bus ISA. Un ejemplo es la sound blaster AWE64. El bus ISA nunca tuvo un estándar 'Plug & Play', lo que hace difícil configurar estas tarjetas. Hace tiempo, antes del núcleo 2.4.x, los usuarios de linux tenían que llamar al programa ísapnp' (paquete isapnptools, rpm -qil isapnptools para ver los ficheros) durante el proceso de arranque. ísapnp' leia el fichero '/etc/isapnp.conf'. Este fichero contenía todos los puertos, direcciones e interrupciones usadas por las diferentes tarjetas. Si la información en '/etc/isapnp.conf' no era correcta, o si no se hacía la llamada a ísapnp', la tarjeta no estaba accesible para linux y el modem, tarjeta de red o tarjeta de sonido no funcionaba. Al seleccionar la opción ÍSA Plug & Play support' se reemplaza el antiguo procedimiento: el fichero '/etc/isapnp.conf' ya no se usa. En vez de esto, las configuraciones se detectan automaticamente. En la SuSE 7.1 tuve que renombrar el fichero '/etc/isapnp.conf' a p.ej., '/etc/isapnp.conf.old' después de compilar el 2.4.x, porque tanto el núcleo como ísapnp' reclamaban los mismo recursos, con desastrosas consecuencias. El problema es que SuSE 7.1 (y versiones antiguas) activan automaticamente ísapnp' durante el arranque, incluso aunque el núcleo ya tenga el soporte necesario. Esto sin embargo es únicamente relevante para equipos Linux antiguos, los nuevos no usan isapnp por defecto.

Figura 9: Configurando block devices.
Virtualmente todo el mundo querrá usar la disquetera, así que la opción de arriba está activada (o, en mi caso, seleccionada como un módulo). En las peticiones para acceder a la disquetera el núcleo carga automaticamente el módulo necesario, siempre y cuando el fichero '/etc/modules.conf' o '/etc/conf.modules' esté correctamente configurado en tu distribución como es habitual. Como usuario no deberías tener ningún problema si has seleccionado las opciones correctas en la Figura 3. Para acceder a la disquetera el núcleo debe ser, por supuesto, capaz de leer el sistema de archivos del disquete. Por lo tanto también debes copiar la Figura 32 correctamente. Las otras opciones pueden ser importantes si usas un sistema de almacenamiento IDE a través del puerto paralelo, pero normalmente están desactivadas. Una posible excepción es 'loopback device support'. Antes de grabar CDs en linux usualmente se hace una imágen del CD, y el 'loopback device' es necesario para mirar el contenido de la imagen. He seleccionado esta opción (quinta línea desde abajo) como un módulo (no aparece en la Figura 9).

Figura 10: Configurando multiple devices.
Los usuarios comunes de linux normalmente no necesitan soporte para raid o LVM. 'Raid' implica que el sistema utiliza dos o más discos para guardar la información en paralelo. Si un disco se rompe el otro sigue en marcha, y el sistema sigue en funcionamiento. LVM hace posible añadir un disco duro de forma que una partición existente parece que se agrande. En la práctica esto significa que no tienes que reparticionar o copiar una partición pequeña a una más grande. Las rutas a ficheros siguen siendo las mismas también. Esta posibilidad es muy útil, pero habitualmente la mayoría de usuarios comunes no la necesitarán.

Figura 11: Configurando networking options.
Necesitas la opción 'Packet Socket' para comunicarte con los elementos de red sin implementar un protocolo de red en el núcleo. Aquí puedo ser escueto: seleccionala siempre. La mayoría del resto de opciones no hay que activarlas, a menos que necesites su soporte especifico. Por ejemplo, he seleccionado Ñetwork packet filtering (replaces ipchains)' porque uso el cortafuegos estándar de SuSE. Un cortafuegos proteje tu ordenador de ataques del exterior, p.ej., a través de Internet, al menos cuando has configurado el cortafuegos correctamente. Protección de cortafuegos a nivel de núcleo es obviamente algo muy ventajoso. Otras opciones para configurar ñetwork packet filtering' se explican en la Figura 12. Necesitas Únix domain sockets' para establecer conexiones de red, pero también a otras aplicaciones: XWindows usa automaticamente sockets Unix, así que no puedes usar XWindows sin esta opción. Actívala siempre. 'TCP/IP networking' contiene los protocolos necesarios para Internet, y también para las redes internas. Normalmente vas a necesitar activar el soporte para TCP/IP. En caso de duda al seleccionar alguna opción en particular, prueba con los textos de ayuda. Si no consigues aclararte siempre es posible incluir el soporte, y entonces quitarlo más tarde durante las pruebas. Compilar ciertas opciones como módulos es también una buena posibilidad.

Figura 12: Configurando IP netfilter (cortafuegos).
Para el funcionamiento correcto de su cortafuegos SuSE Linux necesita compatibilidad hacia atrás para ipchains. De esta manera, para SuSE selecciono esta opción. Si usas un cortafuegos en otras distribuciones o instalaciones, consulta el manual.

Figura 13: Configurando telephony support.
Esto sólo lo necesitas si tienes una tarjeta telefónica en tu ordenador, p.ej., para hacer llamadas a través de Internet. La mayoría de usuarios comunes no necesitan esta opción.

Figura 14: Configurando ATA, IDE, MFM, RLL support (protocolos de comunicación para discos duros).
Casi todo el mundo necesita estos protocolos, con la única excepción de aquellos pocos sistemas que sólo tienen discos SCSI y ningún otro tipo de disco. Por lo tanto, la mayoría de usuarios deben elegir esta opción. Pulsando el la línea de debajo aparece un sub menú con otra serie de opciones. De estas hablamos más abajo. Debido a su importantcia no hay una sino tres capturas de pantalla. Selecciona con cuidado: tienen una importancia extrema.

Figura 15: Configurando ATA, IDE, MFM, RLL support: captura 1.
La opción superior es necesaria para todos aquellos que interactuen con su hardware a través del interfaz IDE/ATAPI. Esto incluye los discos duros, pero también unidades de cinta, discos ZIP, y lectores y grabadores de CD. Basicamente, todos los ordenadores modernos usan el interfaz IDE/ATAPI, y por lo tanto esta opción está activada. La opción ínclude IDE/ATA-2 DISK support' se necesita para soportar el disco duro del equipo. Por eso, esta opción también tienes que estar activada, excepto si tienes un equipo sólo con SCSI.

Figura 16: Configurando ATA, IDE, MFM, RLL support: captura 2.
La opción ínclude IDE/ATAPI CDROM support' se selecciona habitualmente si tienes un dispositivo CDROM ATAPI. Sin embargo, a las grabadoras de CD ATAPI se accede mediante la emulación SCSI. La emulación SCSI se puede usar para acceder tanto al lector de CD como a la grabadora. Sin embargo, puedes tener problemas si montas tus CDs a través de la emulación SCSI, como mensajes de error al montar el CD, o al iniciar el reproductor de CD para escuchar un CD de música. La mejor solución es activar ambas opciones ínclude IDE/ATAPI CDROM support' y 'SCSI emulation support' como se muestra en la Figura 16. El dispositivo que necesita emulación SCSI, habitualmente la grabadora, se puede definir en '/etc/lilo.conf' añadiendo la línea áppend="hdd=ide-scsi"': de esto hablamos más abajo bajo la cabecera 'Configuración de Lilo'. Como tengo una unidad ZIP interno que se comunica con la placa base a través del interfaz ATAPI, he seleccionado la opción ínclude IDE/ATAPI FLOPPY support'. Se necesita la misma opción para acceder a otros dispositivos similares a disqueteras, como una unidad LS120. La mayoría de las placas base utilizan 'PCI IDE' para acceder a los discos duros, CDROMs y disqueteras, y por lo tanto esta opción está activada habitualmente. De la misma manera las dos posibilidades de activar DMA. DMA le da a tu hardware acceso directo a la memoria interna del ordenador, sin la intervención del procesador. Como resultado de esto se puede acceder a los discos IDE más rápido. Activa esta opción. La opción 'sharing PCI IDE interrupts support' está desactivada porque lo más normal es que no la necesites. Cierto, algunas controladoras IDE permiten compartir interrupciones con otro dispositivo del ordenador, por ejemplo con una tarjeta de red exótica. Desafortunadamente, compartir interrupciones IDE disminuye el rendimiento de los discos compartidos, por lo que normalmente sólo quieres compartir interrupciones cuando es la única manera de solucionar ciertos problemas serios de hardware.

Figura 17: Configurando ATA, IDE, MFM, RLL support: screenshot 3.
Mi placa base tiene un chipset Pentium II e Intel, por lo que por supuesto quiero usar el soporte específico para este chipset particular. Cuando configures las opciones de tu propio núcleo verás otros chipsets que no se muestran en la Figura 17.

Figura 18: Configurando SCSI support.
Si tienes una tarjeta SCSI debes seleccionar, por supuesto, las opciones que necesitas. La captura sólo muestra las opciones que necesitas para tu grabadora ATAPI si has seleccionado 'SCSI emulation support' (Figura 16).

Figura 19: Configurando I2O device support.
Debes seleccionar esta opción si tienes un interfaz I2O en tu ordenador. La mayoría de gente no lo tiene, y si este es tu caso simplemente desactiva la opción.

Figura 20: Configurando network device support.
Nunca he sido capaz de compilar un núcleo sin network device support (soporte para dispositivos de red). Por lo tanto deberías seleccionar esta opción. También deberías seleccionar el driver dummy (dummy = falso), como parte del núcleo o como módulo. Linux necesita un driver falso incluso aunque en realidad la red física no existea, como es el caso de muchos usuarios caseros. Incluso cuando hay una red linux usa frecuentemente el driver dummy. En este menú puedes seleccionar el tipo de red y la tarjeta de red, como se muestra en el ejemplo de la Figura 21. Ten en cuenta que hay que hacer otras cosas aparte si quieres acceder a internet a través de un módem: debes activar el soporte ppp eligiendo 'PPP support for async serial ports' (para puertos COM) o 'PPP support for sync tty ports' (para conexiones rápidas a través de p.ej, un adaptador SyncLink). Si olvidas hacer esto el núcleo te dirá que el módulo ppp no existe, aunque lo hayas creado, un mensaje de error que no ayuda a encontrar el problema real. Puedes elegir ambos métodos de compresión sin problemas: si el núcleo los necesita se usarán, si no los necesita, no.

Figura 21: Configurando ethernet device.
Mi tarjeta ethernet es una tarjeta 3COM /100 MBit que usa el chipset 3c509/3c529. Como no tengo ninguna conexión física con una red (tengo una tarjeta de red, pero estoy conectado a la red a través de un módem) compilo este driver como un módulo, por si acaso necesito la tarjeta en un futuro. Por supuesto debes seleccionar el tipo de red y tarjeta de tu equipo. Además, debes configurar la conexión de red con un programa de configuración de linux, como puede ser 'yast2' en SuSE.

Figura 22: Configurando amateur radio support.
Selecciona esta opción si quieres usar el soporte para radioaficionado, y activa el driver necesario. La mayoría de gente no usa esta opción.

Figura 23: Configurando support for infrared (wireless) communication.
Activa la opción de comunicación infrarroja si tienes un dispositivo inalámbrico, p.ej., un ratón inalámbrico o un teclado inalámbrico. La mayoría de ordenadores de escritorio no los tienen y no necesitan la opción.

Figura 24: Configurando ISDN support.
Aquí tienes que seleccionar el soporte para la tarjeta ISDN que tengas en tu equipo. Es importante conocer qué tarjeta tienes, incluido el chipset: necesitas esta información para seleccionar el driver correcto.

Figura 25: Configurando old CDROM drivers.
En los antiguos equipos 486 e incluso 386 el CDROM no se conectaba a través de la controladora del disco duro IDE (ATAPI), sino a través de una tarjeta de sonido o una tarjeta especial. Al usar estos antiguos CDs es necesario seleccionar el driver correspondiente. Esta opción ha sido reemplazada en los equipos modernos, y por lo tanto es supérflua.

Figura 26: Configurando input core support.
Esta opción se refiere a una de las novedades más importantes de la serie 2.4.x del núcleo: el soporte para USB. Input core support es la capa entre el núcleo y algunos dispositivos USB. La Figura 38 muestra varios dispositivos USB que puedes seleccionar, y el texto de ayuda de alguno de estos indica los que necesitan ínput core support': ver Figura 38. Debes activar aquí ínput core support' si uno de tus dispositivos USB lo necesita. Todas las placas base modernas tienen una conexión USB, así que por norma deberías activarlo. Pero, para ser honesto, se que no necesitaré soporte USB en mi sistema por lo que lo he desactivado.

Figura 27: Configurando character devices: captura 1.
La opción de arriba ('virtual terminal') activa la posibilidad de abrir un xterm (usando XWindows) o usar el modo texto para entrar. Normalmente esta opción está siempre activada. La segunda opción ('support for console on virtual terminal') le dice al núcleo dónde debería enviar los mensajes, como avisos sobre la falta de un módulo o su funcionamiento incorrecto, problemas con el propio núcleo, y mensajes de inicio. Bajo XWindows nomalmente se habilita una ventana especial a parte para los mensajes del núcleo, pero en el modo texto van tipicamente al primer terminal virtual ('CTRL+ALT+F1'). Deja esta opción activada. También puedes elegir enviar estos mensajes al puerto serie, p.ej., a la impresora o a otro terminal (la cuarta opción). Para enviar los menajes a la impresora debes activar también el puerto mediante la tercera opción. De igual manera, debes activar este puesto si quieres usarlo para un 'serial mouse' (ratón serie). De nuevo, normalmente la tercera opción ('standard/generic (8250/16550 and compatible UARTs) serial support') está activada. En mi equipo he elegido compilar esto como un módulo. La razón es que durante el arranque SuSE se queja de la falta del módulo 'serial support', e incluir el soporte como módulo es una manera elegante de evitar el mensaje asegurándonos que el módulo existe. Configurar los 'character devices' es extremadamente importante. Si no lo haces correctamente puedes acabar con un sistema que no funcione. Por lo tanto las figuras de la 28 a la 30 ahondan en una cuantas opciones más.

Figura 28: Configurando los 'character devices': caputura 2.
Si quieres usar un xterm en tu máquina o desde una remota, por ejemplo a través de 'telnet' o 'ssh', debes activar la opción únix98 PTY support'. Puede parecer que un escritorio que no tiene conexión no necesita esta opción, pero varios procesos en segundo plano también usan esta opción. Por lo tanto, es una buena idea activar esta opción en cualquier caso, aunque sólo sea para evitar los mensajes de error (al menos en SuSE) durante el inicio. Todo el mundo que conecte una impresora a través del puerto paralelo necesita por supuesto 'Parallel printer support'. De todas formas, no todo el mundo necesita el puerto paralelo: las modernas impresoras USB no lo necesitan. Los mensajes del núcleo también pueden ir a la impresora en el puerto paralelo activando la opción 'Support for console on line printer': habitualmente, no lo usarás. Necesitas la opción 'support for user-space parallel port device drivers' si tienes ciertos dispositivos que cuelgan del puerto paralelo, pero no es muy habitual. De igual manera, habitualmente no necesitas Í2C support': es necesario para ciertas tarjetas que manejan video, pero si descubres que lo necesitas siempre puedes añadirlo al núcleo más tarde, una vez que sabes que el núcleo funciona correctamente. Selecciona soporte para ratón y joystick cuando los uses, pero no todos los ratones usan este driver (ver más abajo, en la Figura 29). Las grabadoras de CD de hoy en día han dejado obsoletas a las unidades de cinta que necesitan 'QIC-02 Tape support', por lo tanto esta opción está habitualmente desactivada.

Figura 29: Configurando los 'character devices': Ratón.
No necesitas nada de esta opción si tienes un ratón de puerto serie, pero para todos los demás tipos de ratones debes configurar ciertos parámetros aquí. Si usas un ratón bus ORIGINAL debes seleccionar la opción de arriba, y debajo de ella el correspondiente tipo o marke del ratón bus. Muchos ordenadores hoy en día tienen otros tipo de ratones, normalmente (y erroneamente) llamados 'ratón bus (busmouse)' o ' ratón PS/2'. Estos ratones se conectan frecuentemente a '/dev/aux' y se conectan al equipo a través de un pequeño conector similar al los que se usan para los teclados. A menudo este tipo de ratón usa el teclado para conectarse al ordenador. Para hacer que estos ratones funcionen correctamente debes seleccionar las opciones mostradas en la Figura 29, 'mouse support (not serial and bus mice)' y 'PS/2 mouse (aka "auxiliary device" support)'.

Figura 30: Configurando los 'character devices': captura 3.
Las opciones para configurar el núcleo entre la de la Figura 28 y la Figura 30 no se discuten aquí. Normalmente están desactivadas. La opción 'Ftape, the floppy tape device driver' se refiere al soporte para las unidades de cinta conectadas a través de la controladora de disquetera. Incluso aunque tengas tal unidad de cinta no es esencial compilar su soporte, al menos no la primera vez. Las otras opciones se refieren a las tarjetas de video 3D modernas. Si tienes una tarjeta de video que se conecta a través de un bus AGP, puedes activar el soporte para AGP, y también el driver específico para tu tarjeta de video (bajo '/dev/agpgart (AGP support)'). Ten en cuenta que es posible tener un núcleo que funcione correctamente si estas opciones, ¡pero no necesariamente! La gente que tenga una tarjeta de video integrada en su placa base, como el chipset intel i815, ¡DEBEN usar el driver del núcleo! Si no, XWindows 4.0 o superiores (usadas en la mayoría de distribuciones más recientes) no funcionará. Mi equipo tiene una tarjeta AGP, una NVidia TNT2, pero esta tarjeta no está soportada por un módulo específico del núcleo (NVidia se niega a compartir las especificaciones hardware, necesarias para desarrollar estos drivers). Desafortunadamente, en mi caso no tiene por lo tanto mucho sentido activar el soporte para AGP. A pesar de este problema particular, puedo usar XWindows 4.0 sin el driver del núcleo. 'Direct rendering support' es para una opción XWindows desde la versión 4.0 para acelerar el rendimiento de los gráficos a través del núcleo. Para hacer uso de esta opción tu tarjeta de video específica debe estar soportada, y debes usar XFree86 4.0 o superior. Además debes activar también ÁGP support'. De toda maneras, puedes no seleccionar estas opciones con toda tranquilidad y obtener un núcleo de linux que funcione correctamente.

Figura 31: Configurando los 'multimedia devices.
Esta opción está activada si tienes una tarjeta que maneja video o radio. Como antes, esta opción no es esencial para el funcionamiento correcto del núcleo.

Figura 32: Configurando los 'file systems': captura 1.
Aquí puedes especificar los sistemas de ficheros que pueden ser leidos por el núcleo de linux. Quizá quieras hacer un núcleo de linux que pueda leer discos y disquetes de Windows, pero debes asegurarte de que el núcleo pueda leer el propio sistema de ficheros de linux, ext2, o el nuevo sistema de ficheros ReiserFS. Linux no podrá ni arrancar si no lo haces, porque entonces el núcleo no puede leer su propio disco de arranque (como se comentó antes cerca de la Figura 3). Para leer disquetes y discos DOS/Windows necesitas activar la opción 'DOS FAT support': sin embargo, para leer discos de Windows NT/Windows 2000 necesitas un driver específico de solo lectura que se puede seleccionar posteriormente en este menú. Para leer y también escribir discos y disquetes DOS/Windows necesitas la opción 'MSDOS fs support'. Virtualmente todo el mundo necesita esto, así que la mayoría de gente activa estas opciones. 'VFAT' es para el soporte de nombres de ficheros largos en Windows 95 o 98. Mi equipo es lo que se llama un equipo de arranque dual, en el cual puedo arrancar tanto Windows 98 como linux (usando el gestor de arranque de linux lilo, ver 'Configuring lilo'). Por lo tanto he activado 'VFAT'. Necesitas incluir soporte para ISO 9660 leer CDs en formato estándar. Bajo esta está la opción 'Joliet extensions', que permite nombres de ficheros más largos que los de MS-DOS 8.3 que es el límite en el estándar ISO 9660. Casi todo el mundo quiere leer los CDs de hoy en día, así que estas opciones normalmente están activadas. La Figura 33 clarifica algunas opciones adicionales, entre las que está el sistema de ficheros ext2 de linux.

Figura 33: Configurando los file systems: captura 2.
Los ficheros en el directorio '/proc' contienen información sobre el estado del sistema, p.ej., qué interrupciones están siendo usadas. Normalmente siempre se activa esta opción. 'Second extended fs support' es la opción relacionada con el sistema de ficheros estándar (todavía) de linux. DEBES compilar está opción en el núcleo (¡NUNCA como un módulo!). Las Figuras 32 y 33 no muestran la opción 'ReiserFS' que también puede ser seleccionada aquí: el sucesor bendecido de ext2, ReiserFS gestiona mucho mejor el daño producido en el sistema de ficheros debido a fallos en el suminitro eléctrico y problemas similares. En este momento ReiserFS está todavía bajo desarollo y por lo tanto marcado como código experimental. Aun así la mayoría de distribuciones recientes ya soportan el uso de ReiserFS, pero incluso aunque ReiserFS se supone que reemplazará a éxt2' en el futuro no lo recomendaría como un sistema de ficheros para todas las particiones ahora mismo. Necesitas el ÚDF file system support' si usas (bajo Windows) el programa 'packetCD', que permite copiar ficheros de un CD al vuelo así como desde un disco duro lento. Es muy útil para intercambiar datos con otros PCs. También es posible leer estos "packet CDs" bajo linux montandolos con el sistema de ficheros údf', p.ej., con un comando como 'mount -t udf /dev/scd0 /cdrom'. Esta parte también contiene elementos como Ñetwork file systems' (sistemas de ficheros de red), 'partition types' (tipos de particiones) y Ñative language support' (soporte para lenguaje nativo). No necesitas Ñetwork File Systems' a menos que tu ordenador sea parte de una red grande, en cuyo caso necesitas activar ÑFS File System Support' y quizá también 'SMB file support', pero para un ordenador aislado no necesitas estas opciones. La opción 'Partition Types' es bastante avanzada pero no necesaria para un uso efectivo del núcleo de linux. Es mejor desactviarla. Las Figuras 35 y 35 explican con más detalle Ñative Language Support'.

Figura 34: Configurando ñative language support': captura 1.
En este menú seleccionas qué tabla de códigos debe usar linux para manejar los nombres de ficheros de DOS y Windows. Las tablas de códigos de la figura 34 son los usuales para nombres de ficheros de DOS. Las tablas NLS de la figura 35 son necesarios para usar nombres de ficheros largos. La opción superior de la figura 34, 'Default NLS option', determina qué símbolos serán los estándar en linux. La figura 35 representa y explica la opción íso8859-15'.

Figure 35: Configurando ñative language support': captura 2.
Necesitas la opción ÑLS ISO 8859-15' para reproducir correctamente FAT de Windows y las extensiones Joliet de los sistemas de ficheros de los CDs, algo que es siempre una buena idea. La selección ÑLS ISO 8859-15' es apropiada para las lenguas occidentales, e incluye el símbolo del euro. Por lo tanto esta tabla de códigos se compila casi siempre con el núcleo. La tabla ÑLS ISO 8859-1' es la tabla anterior de las lenguas occidentales pero sin el soporte para el símbolo del euro.

Figura 36: Configurando los console drivers (drivers de consola).
La opción 'VGA text console' permite habilitar el modo texto con una resolución VGA. Casi todo el mundo necesita esta opción, así que esta opción casi siempre está activada. Sólo unos pocos de los antiguos ordenadores 386 carecen de una tarjeta VGA compatible, mientras que los ordenadores modernos no tienen ni el más ligero problema con esta elección. La segunda opción, 'video mode selection support', hace posible seleccionar la resolución del modo texto durante el proceso de arranque. Esto es realmente útil si quieres tener más letras por línea, pero normalmente se deja desactivada. Las dos opciones finales son experimentales, y te aconsejo que nos las selecciones.

Figura 37: Sound configuration (configuración del sonido).
En esta sección se configura la tarjeta de sonido. Si tu distribución usa los drivers de sonido ALSA (como SuSE 6.3 y superiores), sobra con seleccionar 'sound card support' como MÓDULO. Los drivers ALSA se compilar y linkan más tarde (ver más abajo bajo el epígrafe 'SuSE y los drivers de sonido ALSA'). Si tu distribución usa los drivers de sonido estándars del núcleo debes seleccionar ahora el adecuado para tu tarjeta de sonido. Virtualmente todas las marcas de tarjetas de sonido se nombran aquí, así que en principio la selección del driver adecuado no es problema. Si tu tarjeta de sonido funciona con el núcleo estándar de tu distribución puedes usar también programas de configuración (como el 'yast2' de SuSE) para averiguar qué driver necesita especificamente tu tarjeta de sonido. Es tranquilizador saber que el sonido no es crítico: te quedas sin sonido si algo va mal aquí, pero el núcleo en sí funciona perfectamente.

Figura 38: Configurando ÚSB support'.
Mi placa base tiene un puerto USB, pero no lo uso. Sin embargo, si desactivo el soporte para USB SuSE me da un mensaje de error durante el arranque. Por supuesto SuSE soporta USB y por lo tanto intenta cargar los módulos necesarios, por eso he seleccionado 'Support for USB' como un módulo. Aunque este mensaje de error no es importante para mí, lo soluciono de una manera elegante compilando el driver necesario para los puertos USB de mi placa. Para hacer esto la opción mínima es poner 'y' en 'Preliminary USB device filesystem' y cargar el driver específico de USB. Puesto que mi placa Pentium II es bastante antigua he seleccionado el driver ÚHCI (Intel PIIX4, VIA, ...)' como un módulo. Pero, si tienes una placa base reciente con el chipset Intel debes seleccionar el módulo ÚHCI Alternate Driver (JE) support', mientras que p. ej., en un ordenador Compaq deberías elegir ÓHCI support' como módulo. En principio sólo necesitas uno de estos tres módulos, pero en caso de duda puedes elegir los tres. Tu distribución de linux descubrirá cuál de los tres necesita, y cargará automaticamente el correcto.

Habilitar simplemente los puertos USB de tu placa base no es suficiente, necesitas especificar también los drivers (módulos) del periférico USB que está conectado a tu ordenador. La lista que aparece bajo ÚSB Device Class drivers' tiene varias opciones. Lo que sigue es bastante sencillo y poco puede fallar: de todas maneras, en caso de duda lee la ayuda.

Figura 39: Configurando 'kernel hacking'.
Esta es fácil: ¡NO la selecciones!. Es una opción útil para programadores que quieren encontrar la razón por la que el núcleo falló o para leer la caché del disco duro: la opción no sirve de nada para un usuario común.

Save and Exit.

Figura 40: Save and Exit (guardar y salir).
Pffft, lo conseguimos. Lo que queda es compilar e instalar el núcleo como se muestra más abajo.


 

Compilando el núcleo

Pulsando en 'Save and Exit' (Guardar y Salir) guardas tus opciones de configuración en el fichero './.config' (o '/usr/src/linux/.config' si compilas en /usr/src/linux). Además, es muy útil guardar este fichero y copiarlo al nuevo directorio del código fuente del núcleo si haces una actualización pequeña, del núcleo 2.4.5 al 2.4.6 por ejemplo. De esta manera puedes (habitualmente) conservar todas tus antiguas opciones de configuración, que te pueden ahorrar mucho trabajo. De manera similar puedes comenzar usando el fichero de configuración del núcleo éstándar' de tu distribución, que en algunas ditros está en /boot/config (copialo a ./.config para empezar a usarlo). Pero, si actualizaste el código fuente de tu núcleo y aparecen problemas extraños al compilar el núcleo ¡este es por supuesto el primer fichero que debes borrar! Doy por hecho por tu bien que has anotado y guardado cuidadosamente la configuración del núcleo que funciona correctamente. El proceso para compilar el núcleo es el siguiente:
make dep
make clean (para núcleos antiguos)
make bzImage
make modules
make modules_install
La figura 40 ya indicó la necesidad del comando 'make dep'. Por supuesto ejecutamos estos comandos en el directorio del código fuente de linux, normalmente '/usr/src/linux'. Los núcleos de la serie 2.0.x o anteriores también necesitaban el comando 'make clean', que borraba ficheros antiguos antes de la compilación de un nuevo núcleo. El comando 'make clean' impedía extraños mensajes de error que eran difíciles de solucionar, pero que estaban causados presumiblemente por ficheros objeto (.o) antiguos que no eran sobreescritos. El comando 'make bzImage' compila el nuevo núcleo, pero todavía no lo instala. También puedes compilar el núcleo con otros comandos 'make', p.ej., 'make bzlilo' o 'make zImage', pero estos comandos pueden darte problemas inesperados. La mayoría de los núcleos son demasiado grandes como para permitir un 'make zImage' ejecutado correctamente: obtienes un mensaje de error durante la compilación, y acabas sin un núcleo. Con el comando 'make bzlilo' todo debe estar configurado correctamente el ficheros como '/etc/lilo.conf', pero este no es siempre el caso. Por lo tanto es más seguro evitar estos últimos comandos. El comando 'make modules' compila los módulos: se instalan con el comando 'make modules_install'. Este comando pone los módulos en el directorio '/lib/modules/2.4.6/' si la versión actual de núcleo es la 2.4.6: cambia cuando compilas otra versión del núcleo. De esta manera los módulos correspondientes a una versión en concreto del núcleo acaban automaticamente en un directorio específico, por lo tanto evitando conflictos con módulos obsoletos y problemas similares. Durante el arranque el núcleo de linux sabe en qué directorio puede encontrar los módulos correctos. Pero, los ficheros en '/lib/modules/2.4.6/' son sobreescritos y módulos antiguos permanecen si ya habías compilado el núcleo 2.4.6 antes y lo recompilas de nuevo. Entonces, puede que antiguos módulos sigan estando por ahí aunque ya no sean necesarios en el nuevo núcleo. Normalmente esto no es un problema, pero es siempre una buena idea tomarse el tiempo necesario para borrar los módulos antiguos antes de instalar los nuevos.

Para evitar problemas al instalar el núcleo también te debes asegurar de que la configuración de lilo '/etc/lilo.conf' es la correcta, y debes copiar el núcleo y el fichero 'System.map' en el lugar correcto. Después de todo esto también tienes que ejecutar el comando 'lilo'. Una alternativa es el uso de 'loadlin', que permite arrancar un núcleo de linux bajo Dos/Windows. Ambas opciones son comentadas más abajo.

 

Configurando lilo

Puedes encontrar el fichero de configuración de lilo en el directorio '/etc' con el nombre '/etc/lilo.conf'. Ábrelo con un editor de texto ASCII sencillo: puede que tengas instalado un editor "de verdad" como XEmacs (entonces, usa 'xemacs /etc/lilo.conf &'), un editor de texto sencillo a pantalla completa como kedit o gedit (entonces, usa 'k(g)edit /etc/lilo.conf') o un primitivo editor lineal como pico o nano (entonces usa 'pico /etc/lilo.conf'). El fichero lilo.conf será algo como esto:

boot    = /dev/hda
vga     = normal
read-only
menu-scheme = Wg:kw:Wg:Wg
lba32
prompt
timeout = 300
message = /boot/message

  other  = /dev/hda1
  label  = win98

  image  = /boot/bzImage
  label  = linux-2.4.6
  root   = /dev/hda3
  append = "parport=0x378,7 hdd=ide-scsi"

  image  = /boot/vmlinuz.suse
  label  = suse
  root   = /dev/hda3
  append = "hdd=ide-scsi"
  initrd = /boot/initrd.suse

El contenido detallado del fichero lilo.conf puede diferir del que se muestra arriba tanto entre equipos como distribuciones. Por lo tanto no voy a comentar paso a paso este fichero. Las 8 líneas superiores están correctamente configuradas y no es necesario que las modifiques, normalmente. El comando 'boot' en la primera línea indica el disco duro físico del que se arranca, esto es, 'boot' apunta a donde se encuentra el 'master boot record'. En mi caso arranco de /dev/hda, el primer disco duro físico. La opción 'vga' indica que el arranque usa el modo texto estándar VGA, con 80x25 caracteres. La opción 'read-only' significa que el proceso de arranque primero monta la partición de linux como sólo lectura. Durante el arranque de linux se requean las particiones en busca de errores: sólo después de esto se vuelven a montar con las opciones de lectura y escritura. La línea 'menu-scheme' establece los colores del menú de arranque de 'lilo' en modo texto. Con 'lda32' se posibilita el arrancar el sistema operativo después del cilindro 1024, siempre y cuando esto esté soportado por la BIOS. Todos los equipos modernos suportan 'lba32'. Los problemas con esta opción se pueden solucionar mediante una actualización de la BIOS, algo que es casi una necesidad con los grandes discos duros disponibles hoy en día. El comando 'prompt' fuerza a 'lilo' a mostrar un prompt que permite al usuario elegir el sistema operativo deseado. La opción 'timeout' establece el número de milisegundos que 'lilo' espera a que se teclee algo en el prompt antes de arrancar el sistema operativo por defecto. Si 'lilo.conf' no estable un sistema operativo por defecto, como en el ejemplo, el proceso de arranque inicia el primer sistema operativo que encuentra. En mi caso este es Windows98, así que la gente que no conoce linux todavía al final obtendrán un entorno Windows. La opción 'message' muestra un mensaje mientras se ejecuta 'lilo'. En SuSE es Tux, el estupendo pingüino mascota de linux, con (por supuesto) el texto 'SuSE Linux 7.1'. Puedes ver este mensaje escribiendo 'xv /boot/message' o 'gv /boot/message' (algunas veces incluso 'gimp /boot/message') : 'xv' y 'gv' (ghostview) son programas shareware con los que puedes ver varios tipos de formatos de imágenes. Ten siempre en cuenta que el fichero /boot/message no existe en los sistemas que no tienen una pantalla de login gráfica (p.ej. distribuciones antiguas), en este caso el 'boot message' es simplemente un mensaje de texto. En principio es posible mostrar tu propia imagen favorita durante el arranque, pero no he probado todavía esta posibilidad. Todas las opciones de 'lilo' están por supuesto documentadas en las páginas man, a las que puedes acceder a través de los comandos 'man lilo' y 'man lilo.conf'.

Las otras opciones gestionan el arranque de varios sistemas operativos. Como mucho puedes arrancar dieciseis sistemas operativos o núcleos distintos. Normalmente esto es suficiente. Seleccionas el sistema operativo con la línea 'label='. Lo normal con Windows98 (y también anteriores versiones de Windows y DOS, pero no Windows NT o Windows 2000) es tenerlo en la primera partición primaria. Por lo tanto estos sistemas operativos únicamente necesitan una línea óther' y una línea 'label'. La segunda sección, desde ímage=/boot/bzImage', inicia el nuevo núcleo con la etiqueta (label) 'linux-2.4.6'. Mi directorio raiz de linux es '/dev/hda3'. La línea áppend = "parport=0x378,7 hdd=ide-scsi"' le dice al núcleo la dirección y la interrupción para el puerto paralelo (port 0x378, interrupt 7), y especifica que mi grabadora 'hdd' debe ser manejada mediante emulación SCSI. El nombre de la grabadora depende del equipo: en el mio está en 'hdd', pero en el tuyo puede ser otro nombre. El uso de una interrupción es mayormente cuestión de gustos personales. Una interrupción acelera la impresión, pero puedes no incluir este comando si no tienes una interrupción disponible para el puerto paralelo (impresora). Por defecto en linux se usa el lento método de 'polling', que permite al núcleo usar el puerto paralelo sin una interrupción. La última sección, desde ímage = /boot/vmlinuz.suse', contiene la configuración de lilo que se realizó durante el proceso de configuración de SuSE: he añadido la línea append="hdd=ide-scsi" a mano. El fichero 'boot/vmlinuz.suse' es el núcleo estándar que viene con la distribución. Preferiblemente, deberías guardar este núcleo SIEMPRE para las emergencias. La línea ínitrd = /boot/initrd.suse' afecta únicamente a la instalación estándar del núcleo: especifica la carga de lo que se conoce como imagen 'ramdisk', un disco virtual que se carga en memoria (o memoria de acceso aleatorio - random access memory -, RAM). El 'ramdisk' contiene los módulos necesarios para el arranque correcto de linux: un núcleo de una distribución tiene, por supuesto, que ser capaz de acceder a una enorme variedad de hardware, algo que es sólo posible usando muchos módulos.

Espero que ahora esté claro dónde debes guardar el nuevo núcleo antes de ejecutar lilo. En este ejemplo, los comandos exactos son:

cp /usr/src/linux/arch/i386/boot/bzImage /boot
cp /usr/src/linux/System.map /boot/System.map-2.4.6
lilo
En SuSE 7.3 también puedes ejecutar el segundo comando así:
cp /usr/src/linux/System.map /boot

( el System.map original ya ha sido renombrado )
Si ya tienes un núcleo con el nombre 'bzImage' y quieres mantener este núcleo, puedes copiar el núcleo nuevo a '/boot/bzImage-2.4.6' y hacer el correspondiente cambio en /etc/lilo.conf: cambia /boot/bzImage por /boot/bzImage-2.4.6. La compilación siempre recrea el fichero System.map, que contiene los nombres y la configuración de importantes variables del núcleo. El comando 'depmod -a' crea un fichero que contiene todas las dependencias de los módulos del núcleo, esto es, la distintas relaciones entre el núcleo y los módulos, entre los propios módulos, y también la información en el fichero '/etc/modules.conf'. La mayoría de distribuciones de linux, incluida SuSE, comprueban que 'depmod -a' se ejecuta durante el arranque, pero es un buena idea asegurarse explicitamente que el fichero /boot/System.map existe, y que corresponde con la versión correcta del núcleo. El comando 'lilo' instala las nuevas configuraciones de un núcleo antiguo, o el nuevo núcleo. Si ya tenías un fichero '/boot/bzImage' que sobreescribes con un nuevo núcleo pero sin ejecutar lilo, acabarás con un nuevo núcleo que no podrá arrancar. El antiguo núcleo original de la distribución que guardaste de manera segura todavía funciona, porque no ha sido sobreescrito. Guardar el antiguo núcleo nos permite compilar y probar nuevos núcleos de una manera responsable.

 

Usando loadlin

Si usas 'loadlin' para arrancar linux sin duda ya sabes como encontrar este útil programa, a saber, en C:\loadlin. Virtualmente todas las distribuciones de linux tienen 'loadlin' en el primer CD en el directorio 'dosutils'. También debes copiar el núcleo nuevo al disco duro en 'C:\loadlin', quizá con un nombre único. Arrancando primero Windows98 en modo DOS puedes después arrancar linux con el comando:
loadlin bzImage
Bajo circunstancias normales la mayoría de configuraciones que se guardan en el propio núcleo, como la localización de la partición raiz, son correctas si has compilado tu propio núcleo, y en este caso es suficiente el comando de arriba es suficiente para arrancar linux sin problemas. Escribiendo (en DOS) el comando 'loadlin | more' obtendrás una pantalla de ayuda que incluye un enlace a un 'loadlin-HowTo' en Internet. Con 'loadlin' puedes probar un nuevo núcleo compilado incluso aunque seas reticente trabajar con 'lilo': a saber, 'loadlin' y 'bzImage' juntos caben en un disquete de 1.44 MB. No hay nada que pueda fallar si arrancas primero DOS con un disquete de arranque (con soporte para EMM386), y después arrancas linux desde el disquete con 'loadlin' y 'bzImage'. Pero, por supuesto debes tener un disquete de arranque de DOS.

 

SuSE y los drivers de sonido de ALSA

SuSE usa los drivers de sonido estándar ALSA (Advanced Linux Sound Architecture). Estos drivers son de mejor calidad que los drivers del proyecto OSS que son los estándar en el núcleo. Si te tomas enserio el sonido bajo linux sin duda deberías usar los drivers de ALSA. Estos drivers no son parte del (antiguo) código fuente del núcleo, lo que implica que los drivers deben ser compilados e instalados de manera independiente. El código fuente de los drivers de ALSA se localiza en la parte 'zq' de la distribución SuSE: sigue leyendo si no sabes lo que significa esto. Instala ALSA a través de YaST o YaST2 para que puedas tener el código fuente disponible en el directorio '/usr/src/packages/'. Para compilar e instalar los drivers de ALSA haz lo siguiente:
rpm -bb /usr/src/packages/SPECS/alsa.spec
cd /usr/src/packages/BUILD/alsa/alsa-driver-<version number>/
./configure
make install
La primera línea instala el código fuente, incluidos los drivers, en el directorio '/usr/src/packages/BUILD/'. Además las librerías de ALSA y las utilidades se compilan directamente como ficheros rpm. Desafortunadamente, los drivers no se compilan por defecto. Debes compilarlos e instalarlos por separado a mano usando los dos comandos de arriba. El comando './configure' encuentra las configuraciones y ficheros necesarios en tu sistema y los pone en un fichero de configuración. El comando 'make install' compila todos los drivers de ALSA y los instala a la vez para que puedan ser usados por el núcleo en el directorio '/lib/modules/2.4.6/misc/'. Ahora, al arrancar SuSE el driver de sonido deseado se instala automaticamente. Tengo que admitir que el procedimiento sugerido aquí es algo cutre, pero debes saber exactamente lo que estas haciendo para encontrar los drivers necesarios e incluir el soporte de sonido en un nuevo núcleo de manera más directa.

Si no usas SuSE, o si quieres usar una verción más reciente de los drivers de ALSA, puedes descargar estos drivers y las librerías y utilidades correspondientes de http://www.alsa-project.org. La página de inicio de este sitio muestra las últimas noticias sobre el proyecto ALSA (p.ej., la integración en febrero de 2002 de los drivers de ALSA con la rama de código fuente oficial de la serie 2.5 del núcleo) y enlaces a varios ficheros para su descarga. Abajo mostraré cómo compilar los drivers de ALSA: puedes seguir los mismos pasos para las librerías y las utilidades. Desempaqueta los drivers en un directorio conveniente, p.ej., '/usr/local/'. Entra en este directorio, en este caso '/usr/local/alsa-driver-<version-number>/' y ejecuta los comandos de arriba empezando por './configure'. Es posible que tengas que realizar algunos pasos adicionales para que los drivers funcionen si tu distribución no usa los drivers de ALSA como estándar. Desafortunadamente, estos problemas están fuera del alcance de este bastante extenso documento, pero puedes encontrar más ayuda en la FAQ (Frequently Asked Questions - Preguntas Frecuentes) de ALSA que también puedes descargar.

 

Soporte para pcmcia (portátiles)

El soporte para pcmcia es estándar desde los núcleos 2.4.x en adelante. Sin embargo, el PCMCIA HOWTO oficial discute que la versión del núcleo de PCMCIA debería perferentemente no usarse. Por ahora, los fuentes de pcmcia, incluidos los scripts y los drivers pueden funcionar con todos las ramas del núcleo: 2.0, 2.2, y 2.4. Mi experiencia me dice que los drivers pcmcia dejan de funcionar después de recompilar el núcleo, y que deben ser recompilados también. Hay dos soluciones dependiendo de tu distribución. La primera es usar el código fuente que viene con la distribución. Instalar y compilar el código fuente a un fichero rpm te proporciona un fichero que puedes instalar. La otra solución es descargar, desempaquetar, compilar, e instalar la versión más reciente de pcmcia de http://sourceforge.net/projects/pcmcia-cs/), así:
cp /etc/rc.d/pcmcia /etc/rc.d/pcmcia.SuSE
cp ~/pcmcia-cs-3.1.?.tar.gz /usr/src
cd /usr/src
tar -zxf ./pcmcia-cs-3.1.?.tar.gz
make config
make all
make install
cp /etc/rc.d/pcmcia.SuSE /etc/rc.d/pcmcia

La primera y la última línea solucionan un problema específico de SuSE. El script de inicialización de pcmcia de SuSE es borrado con el comando 'make install', lo que hace que el script falle en SuSE. El problema se soluciona copiando el original de nuevo después del 'make install'. Si has sobreescrito por error el script original de SuSE debes reinstalar el paquete pcmcia de nuevo empezando con la parte á1', copiar el script original a otro fichero, executar 'make install' otra vez, y finalmente reemplazar el fichero con el script original.

Para obtener el nuevo fichero rpm para el soporte para pcmcia en SuSE debes hacer lo siguiente:

rpm -i /cdrom/suse/zq1/pcmcia-3.1.?.spm
cd /usr/src/packages
rpm -bb ./SPECS/pcmcia-3.1.?.spec
cd /RPMS/i386/
rpm -i --force ./pcmcia-3.1.?.rpm
SuSEconfig

En la primera línea asumo que instalarás los drivers pcmcia desde el sexto o séptimo CD y que el lector de CD ya está montado en /cdrom. El comando 'rpm -i' instala el código fuente y el comando 'rpm -bb' compila el fichero rpm pcmcia. Después instala este fichero en particular como haces con todos los ficheros rpm. Fíjate que tienes que usar la opción '--force' porque de otra manera el programa rpm te dirá (correctamente) que 'pcmcia' ya está instalado, y por lo tanto ignorará el nuevo fichero. Como siempre, tienes que ejecutar el programa SuSEconfig (ten en cuenta las MAYÚSCULAS y las minúsculas) cuando has instalado ficheros rpm a mano en SuSE, para activar los cambios de la configuración. Lo último lo realizan automaticamente los programas de configuración de SuSE YaST o YaST2 después de haber instalado o modificado nuevos paquetes. Entonces, ya no es necesario hacer la activación a mano.

Para poder usar el soporte pcmcia correctamente debes activar ñetwork support' durante la compilación, pero debes desactivar todos los otros drivers para tarjetas de red. Y, como ya ha sido comentado con la figura 11, debes, por supuesto, activar también 'TCP/IP support' si quieres usar Internet.

 

Instalando 'modutils'

Como ya he mencionado el núcleo usa los pequeños programas de 'modutils' para gestionar los módulos del núcleo. Estos programas incluyen:
insmod (que instala un módulo),
rmmod  (que borra un módulo, y)
lsmod  (mostar todos los módulos en uso),

entre muchos otros. Con comandos como 'man lsmod' puedes averiguar cómo funcionan los distintos comandos, algo que no voy a tratar aquí.

Compilar e instalar 'modutils' es algo sencillo. Simplemente haz:

cd /usr/src
cp ~/modutils-2.4.6.tar.bz2 . ( asumiendo que el fichero está en tu )
                              ( directorio personal, '~'            )
bzip2 -d modutils-2.4.6.tar.bz2 ( unzip: puede tardar un poco       )
tar -xvf modutils-2.4.6.tar
cd modutils-2.4.6 ( ir al directorio en el que 'modutils' ha        )
                  ( sido desempaquetado                             )
./configure (encontrar la configuración específica del sistema      )
make ( compilar 'modutils': puesto que es pequeño la compilación    )
     ( puede ser sorprendentemente rápida                           )
make install (instalar 'modutils' en el directorio '/sbin/'         )

Esto es todo lo que tienes que hacer para tener 'modutils' listo. Fíjate de nuevo que en este ejemplo 'modutils' tiene el mismo número de versión que el número del núcleo, pero esto no siempre es el caso.

 

¿Funciona el núcleo correctamente?

Ya has configurado, compilado, y probablemente instalado a través de lilo el nuevo núcleo. Reinicias el sistema y te preguntas: ¿cómo puedo averiguar si el nuevo núcleo funcionará correctamente? Encontrarás con facilidad hardware que no funciona cuando lo pruebas, pero además el núcleo muestra muchísima información útil en la pantalla durante el arranque, incluso antes de que se inicie el modo gráfico. Esta información contiene cosas como las configuraciones que se detectan automaticamente (puertos, IRQs, etc.), pero también mensajes de error en caso de que determinado driver con haya podido ser inicializado directamente, ni como módulo ni como parte del núcleo. Ver estos mensajes nos permite estar avisados sobre ciertos problemas. En SuSE linux esto es muy fácil: cada parte del núcleo que arranca pone en el lado derecho de la pantalla un mensaje (verde) de 'hecho' si todo funcionó correctamente, o 'falló' si algo fue mal. Ya que los mensajes puede que aparezcan por pantalla a gran velocidad, cualquier mensaje de error se muestra en un resumen encima del login prompt. El login prompt aparece pulsando '<Ctrl>+<Alt>+F1' si en tu caso aparece la pantalla de login gráfico automaticamente. De esta manera tienes al menos una pista sobre dónde ocurren los problemas si verdaderamente el mensaje de error es relevante para tí. Los mensajes de error que son parecidos a 'Cannot find module' o 'Cannot load module' normalmente indican que no has incluido ciertas partes que deberían estar. Arreglar la configuración del núcleo y recompilar suele solucionar el problema. Ten en cuenta que no es necesario recompilar el núcleo entero. Si simplemente te olvidaste de algunos módulos es suficiente con reejecutar 'make modules' y 'make modules_install'. Incluso no es un problema si tienes que recompilar todo el núcleo. La mayoría del código del núcleo ya está compilado, y las únicas partes que necesitan ser recompiladas son las que faltaban. En resumen, simplemente modificar el núcleo un poquito y recompilarlo es algo muy rápido, en contraste con la compilación inicial del núcleo. En este caso, puedes irte a hacerte un café tranquilamente.

Otra forma de inspeccionar los mensajes de arranque del núcleo es con el comando 'dmesg'. Simplemente ejecutando este comando se muestran los mensajes que aparecieron (y desaparecieron) por pantalla anteriormente. Enviarlos a un fichero, con 'dmesg > temp', te permite leer los mensajes de error a tu ritmo (con 'more temp', o tu editor favorito).

 

Conclusión

Con esta guía en tus manos puedes empezar tu experimentación con el núcleo de una forma razonablemente sensata. Afortunadamente el umbral para empezar a jugar con el núcleo se reduce lo suficiente para que estés impaciente por comenzar. La mayoría del tiempo lo dedicarás a decidir la configuración correcta del núcleo, mientras que durante la compilación puedes jugar sin problemas al 'freecell' o hacer otra cosa con el ordenador.

Si todavía tuvieses problemas y no supieses como solucionarlos, podrías usar varias de las listas y sitios web sobre linux donde puedes realizar preguntas. Estos existen en diferentes idiomas, no solo en inglés. Después de un tiempo razonablemente corto normalmente obtienes una respuesta que te permite solucionar tu problema. La mejor manera de encontrar estas listas y sitios web es con un buscador.

 

Formulario de "talkback" para este artículo

Cada artículo tiene su propia página de "talkback". A través de esa página puedes enviar un comentario o consultar los comentarios de otros lectores
 Ir a la página de "talkback" 

Contactar con el equipo de LinuFocus
© Philip de Groot, FDL
LinuxFocus.org
Información sobre la traducción:
nl --> -- : Philip de Groot <philipg(at)authors.linuxfocus.org>
nl --> en: Nino R. Pereira <pereira(at)speakeasy.org>
en --> es: Javier Gómez Sierras <jgomsi(at)obelix.umh.es>

2003-03-17, generated by lfparser version 2.34