Guía de configuración del núcleo en Gentoo

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Kernel/Gentoo Kernel Configuration Guide and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎日本語 • ‎한국어 • ‎русский

Este documento tiene la finalidad de presentar conceptos sobre la configuración manual del núcleo y detallar algunos de los problemas de configuración más comunes.

Introducción

Gentoo ofrece dos formas para que los usuarios puedan gestionar la instalación, configuración y actualización del núcleo: la automática (con genkernel) y la manual. Aunque el método se puede verse como más fácil para la mayoría de los usuarios, hay un gran número de razones por las cuales una gran proporción de usuarios Gentoo escogen configurar sus núcleos manualmente:

  1. Mayor flexibilidad
  2. Menores tamaños (del núcleo)
  3. Menores tiempos de compilación
  4. La experiencia del aprendizaje
  5. Aburrimiento severo
  6. Conocimiento absoluto de la configuración del núcleo, o
  7. Completo control

Esta guía no cubre el método automático (genkerne). Si se prefiere utilizar genkernel para gestionar las cuestiones relacionadas con el núcleo, eche un vistazo al artículo sobre Genkernel para más detalles.

Esta guía no persigue documentar el proceso de configuración manual desde el principio hasta el final. El proceso de configuración depende en mayor medida del sentido común y un grado de conocimiento técnico relativamente alto acerca del sistema que se está utilizando. En lugar de esto, se presentan los conceptos de la configuración manual y detallan los problemas más comunes a los que se enfrentan los usuarios.

Nota
Esta guía documento está escrito tomando en cuenta las versiones más recientes del núcleo, para las arquitecturas de computadora más comunes. Algunos detalles pueden ser distintos para núcleos más antiguos o para arquitecturas más exóticas, sin embargo, la mayor parte del contenido seguirá siendo relevante.

At this point, the user is presumed to have Linux kernel sources unpacked on the hard disk (usually somewhere under /usr/src), and is expected to know how to enter the menuconfig configuration utility with knowledge to navigate through the ncursers-based menu system. If the user is not at this stage, other documentation is available to help. Read the following articles, then return to this guide:

Conceptos de configuración

Lo básico

El proceso general es realmente simple: se presentan una serie de opciones categorizadas en menús individuales y submenús y se selecciona el soporte hardware deseado y las características relevantes del núcleo aplicadas al sistema.

El núcleo incluye una configuración por defecto que se presenta la primera vez que se lanza menuconfig en un conjunto particular de fuentes. Los valores por defecto normalmente son amplios y adecuados, lo que significa que la mayoría de los usuarios tendrán que realizar pocos cambios a la configuración base. Si se decide deshabilitar una opción que estaba habilitada por defecto, se debe asegurar que se tiene una buena comprensión relativamente bien lo que hace la opción y las consecuencias que pueden acarrear su deshabilitación.

La primera vez que se se configura el núcleo Linux, se debe ser conservador, no muy aventurero, y en la medida de los posible, realizar las menor cantidad de modificaciones a los ajustes por defecto. Recuerde también que hay ciertas partes en el ajuste de un sistema que deben ser personalizadas para que el sistema arranque.

Incluidas frente a modulares

La mayoría de las opciones de configuración tienen tres estados: se puede evitar su construcción (N), se pueden construir para formar parte integral del núcleo (Y) o construidas como un módulo (M). Los módulos se almacenan externamente en el sistema de ficheros, mientras que las opciones incluidas forman parte de la propia imagen del núcleo.

There is an important difference between built-in and modular: with a few exceptions, the kernel makes no attempt whatsoever to load any external modules when the system might need them; it is left up to the user to decide when, or when to not, load a module. While certain other parts of the system may have load-on-demand facilities, and there are some automatic module loading utilities available, it is recommended to build hardware support and kernel features directly into the kernel. The kernel can then ensure the functionality and hardware support is available whenever needed. This is done by setting each kernel feature to (Y). For this setup to be coherent it is also necessary to include firmware support in the kernel. This is done setting FW_LOADER=y and CONFIG_FIRMWARE_IN_KERNEL=y in the kernel's .config or by the following:

KERNEL Habilitar firmware en el núcleo
Device Drivers  --->
   Generic Driver Options  --->
       -*- Userspace firmware loading support
       [*] Include in-kernel firmware blobs in kernel binary

Para otras partes de la configuración, la construcción integral es un requisito absoluto. Por ejemplo, si la partición raíz era un sistema de ficheros btrfs, el sistema no podría arrancar si se construye btrfs como un módulo. El sistema debería buscar en la partición raíz para cargar el módulo btrfs (ya que los módulos se almacenan en la partición raíz), sin embargo no puede buscar en la partición raíz ¡A menos que se haya cargado el soporte para btrfs!. Si no se ha construido btrfs integrado en el núcleo, entonces el proceso de inicio no podrá encontrar el dispositivo raíz.

Soporte del hardware

Aparte de detectar el tipo de arquitectura del sistema, la herramienta de configuración no hace ningún intento para identificar qué hardware está presente en el sistema. Aunque hay una configuración por defecto con algo de soporte para el hardware, los usuarios seguramente tendrán que encontrar y seleccionar las opciones de configuración relevantes para la configuración de hardware de cada sistema.

Para seleccionar las opciones de configuración apropiadas se requiere conocer los componentes internos del equipo y de los conectados al mismo. En la mayoría de los casos, estos componentes se pueden identificar sin tener que abrir la caja del equipo. Para identificar la mayoría de componentes, el usuario necesita conocer el chipset utilizado por cada dispositivo en lugar del nombre que le ha dado el fabricante a su producto. Muchas tarjetas de expansión se venden con cierto nombre de marca sin embargo utilizan un chipset de otro fabricante.

There are some utilities available to help users determine what kernel configuration options to use. lspci (part of the sys-apps/pciutils package) will identify PCI-based and AGP-based hardware, this includes components built onto the motherboard itself. lsusb (from the sys-apps/usbutils package) will identify various devices connected to the system's USB ports.

La situación es algo confusa por la variación de grados de estandarización en el mundo del hardware. A menos que el usuario seleccione una desviación extrema de la configuración por defecto, los discos IDE deberían "sencillamente funcionar" al igual que el teclado y ratón PS/2 o USB. También se ofrece soporte básico para una pantalla VGA. Sin embargo, algunos dispositivos, tales como adaptadores Ethernet prácticamente no tienen estandarización. Para estos adaptadores los usuarios tendrán que identificar el chipset Ethernet y seleccionar el soporte apropiado de hardware para la tarjeta específica para poder obtener acceso a la red.

Además, debido a que algunas cosas apenas funcionan con la configuración por defecto, tal vez se necesite seleccionar opciones más especializadas para obtener el potencial pleno del sistema. Por ejemplo, si no se ha habilitado el soporte para el chipset IDE apropiado, los discos IDE funcionarán muy lentamente.

Características del núcleo

Además del soporte de hardware, los usuarios deben considerar la características del software que se necesitarán en el núcleo. Un ejemplo importante de este tipo de característica es el soporte para sistemas de ficheros: los usuarios deberán seleccionar soporte para los sistemas de ficheros que utilizan en sus discos duros así como cualquier otro sistema de ficheros que vayan a utilizar en dispositivos de almacenamiento externo (por ejemplo VFAT en discos USB).

Otro ejemplo de característica común del software es la funcionalidad avanzada de redes. Para hacer algún tipo de enrutamiento o trabajar con un cortafuegos, se deben incluir las opciones relevantes en la configuración del núcleo.

¿Preparado?

Ahora que se han presentado los conceptos, debería ser sencillo comenzar a identificar el hardware del sistema echando un vistazo a la interfaz de menuconfig y seleccionar las opciones requeridas para el núcleo del sistema.

El resto de esta guía debería clarificar algunas áreas comunes de confusión y proporcionar consejos para evitar problemas comunes que los usuarios encuentran a menudo. ¡Nuestros mejores deseos!

Problemas comunes y áreas de confusión

Los discos SATA son SCSI

La mayoría de sistemas de escritorio modernos incorporan dispositivos de almacenamiento (discos duros y discos CD/DVD) en un bus Serial ATA, en lugar del más antiguo tipo de bus IDE (cable plano).

El soporte SATA en Linux está implementado en una capa llamada libata, la cual se asienta debajo del subsistema SCSI. Debido a esto, los controladores SATA se encuentran en la sección de configuración de controladores SCSI. Además, los dispositivos de almacenamiento del sistema se tratan como dispositivos SCSI, lo cual significa que también se requerirá soporte para discos y cdroms SCSI. El primer disco duro SATA se denominará /dev/sda y el primer disco CD/DVD SATA se denominará /dev/sr0.

Aunque la mayoría de estos controladores son para dispositivos SATA, libata no diseñó para ser específica de SATA. Todos los controladores IDE comunes también se migrarán a libata en un futuro cercano y en ese momento, las consideraciones mencionadas anteriormente se podrán aplicar también a los usuarios de dispositivos IDE.

KERNEL Opciones de configuración para libata
Device Drivers  --->
   SCSI device support  --->
      <*> SCSI device support
      <*> SCSI disk support
      <*> SCSI CDROM support
 
      [ ] SCSI low-level drivers  --->
 
   <*> Serial ATA and Parallel ATA drivers (libata)  --->
Nota
Los chipsets no estándar se listan debajo de "SCSI low-level drivers" en la caja del núcleo Configuration options for libata mostrada arriba.

Chipsets IDE y DMA

A pesar de la introducción de SATA, los dispositivos IDE todavía son muy comunes y muchos sistemas dependen de ellos. IDE es una tecnología bastante genérica y como tal, Linux soporta casi todos los controladores IDE por defecto sin seleccionar opciones específicas de determinados controladores.

Sin embargo, IDE es una tecnología antigua y en su encarnación original Programmed Input/Output (Entrada/Salida Programada), no logra proporcionar las tasas de transferencia requeridas para acceso rápido a dispositivos modernos de almacenamiento. El controlador genérico IDE está limitado a usar el modo de transferencia PIO, lo cual resulta en bajas tasas de transferencia y un uso significativamente alto de la CPU mientras se transfieren los datos desde y hacia el disco.

A menos que un usuario esté tratando con un sistema anterior a 1995, el controlador IDE también ofrecerá soporte de un modo alternativo de transferencia conocido como Direct Memory Access (Acceso Directo a Memoria o DMA). El modo DMA es mucho más rápido y el uso de la CPU es prácticamente nulo mientras se efectúan las transferencias. Si el sistema sufre de un rendimiento general realmente pobre cuando está utilizando un disco IDE, es muy posible que no esté usando DMA y éste se debe habilitar.

Nota
Tal y como se ha mencionado anteriormente, libata está también disponible para discos IDE. Si se está utilizando libata, entonces todos los discos, incluyendo los discos IDE, deberán usar DMA. Para hacer esto no se necesita realizar más comprobaciones ni configuraciones.

Cuando no se está utilizando libdata para los discos IDE, se debe comprobar la utilización de DMA y habilitarla. La siguiente orden se puede utilizar para averiguar si se está utilizando DMA:

root #hdparm -d /dev/hda
/dev/hda:
  using_dma = 0 (off)

Para habilitar DMA en dispositivos IDE antiguos (lo cual es un ajuste obsoleto), se deben habilitar las siguientes características del núcleo.

Advertencia
Enabling CONFIG_BLK_DEV_IDE_SATA will create a conflict with the libata SATA driver. Normally support for SATA is disabled on IDE controllers because it is handled better by the actively maintained SCSI subsystem. Enabling CONFIG_BLK_DEV_IDE_SATA will cause this driver to conflict with libata's support for SATA, which is generally a bad idea. This driver exists to handle old IDE drives, leave the handling of SATA to libata if possible!
KERNEL Opciones de configuración para los controladores IDE obsoletos
Device Drivers  --->
   <*> ATA/ATAPI/MFM/RLL support (DEPRECATED)  --->
      <*> ATA/ATAPI/MFM/RLL support
      <*>   Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
      [*]     PCI IDE chipset support
Nota
Seleccione el chipset o chipsets correctos entre las opciones listadas bajo "PCI IDE chipset support" en la caja del núcleo Configuration options for IDE controllers de arriba.

Controladores de anfitrión USB

USB es un bus ampliamente adoptado para conectar periféricos externos a una computadora. Una de las razones del éxito de USB es que es un protocolo estandarizado. Sin embargo, los dispositivos controladores de anfitrión (HCDs) implementados en la computadora anfitriona varían un poco. Hay cuantro tipos principales:

The information in this article is probably outdated. You can help the Gentoo Wiki by verifying and updating this article.
  1. UHCI es el Interfaz Universal Controlador de Anfitriones (Universal Host Controller Interface). Ofrece soporte para USB 1.1 y normalmente se encuentra en placas base con un chipset VIA o Intel.
  2. OHCI es el Interfaz Abierto Controlador de Anfitriones (Open Host Controller Interface). Ofrece soporte para USB 1.1 y normalmente se encuentra en placas base con un chipset Nvidia o SiS.
  3. EHCI es el Interfaz Controlador de Anfitriones Extendido (Extended Host Controller Interface). Es el único controlador de anfitriones común que soporta USB 2.0 y se puede encontrar normalmente en cualquier computador que soporte USB 2.0.
  4. XHCI es el Interfaz eXtensible Controlador de Anfitriones (eXtensible Host Controller Interface). Se trata del controlador para USB 3.0 y es compatible con USB 1.0, 1.1, 2.0, 3.0 y tasas de transferencia futuras. Habilite esta característica cuando la placa base ofrezca soporte para USB 3.0.

La mayoría de los sistemas incorporan dos de los tipos de interfaz arriba indicados: XHCI (USB 3.0) y EHCI (USB 2.0). Para utilizar dispositivos USB no es necesario seleccionar ambas opciones ya que XHCI es compatible con controladores USB más lentos. Los usuarios también pueden habilitar EHCI para tener una configuración segura "extra", ya que no tiene ningún impacto si no se dispone de los controladores USB 2.0.

Si no se seleccionan las opciones relevantes que correspondan a los tipos HCD USB que se disponen en el sistema, se puede experimentar el caso de puertos 'muertos'. Este caso se puede detectar si se enchufa un dispositivo USB que funciona sin embargo se observa que no está recibiendo energía o no responde de ninguna forma.

A neat lspci trick (from the sys-apps/pciutils package) makes it relatively easy to detect which HCDs are present on system. Ignoring the SATA controller which was also matched, it is easy to spot that this system requires EHCI and XHCI support:

root #lspci -v | grep HCI
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 04) (prog-if 30 [XHCI])
00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 04) (prog-if 20 [EHCI])
00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 04) (prog-if 20 [EHCI])
00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 04) (prog-if 01 [AHCI 1.0])

Seleccione los HCDs presentes en el sistema. En general, se pueden seleccionar las tres opciones para un soporte máximo o en caso de que no se esté seguro de cuál es la opción correcta:

Device Drivers  --->
   USB support  --->
      <*> Support for Host-side USB
      ---   USB Host Controller Drivers
      <*>   xHCI HCD (USB 3.0) support
      <*>   EHCI HCD (USB 2.0) support
      < >   OHCI HCD  (USB 1.1) support
      < >   UHCI HCD (most Intel and VIA) support

In Linux kernel 3.12.13 and later, OHCI support for PCI-bus USB controllers (USB_OHCI_HCD_PCI) has to be enabled if the USB controller is OHCI and a USB keyboard or mouse is used.

Sistemas Multiprocesador, Hyper-Threading y de Múltiples Núcleos de Procesamiento

Muchos sistemas de computación están basados en múltiples procesadores pero no siempre de una forma inmediatamente obvia.

  • Muchas CPUs de Intel soportan una tecnología que ellos llaman hyper-threading. Esta tecnología habilita el hecho de que el sistema vea una sola CPU como si fuesen dos procesadores lógicos.
  • La mayoría de las CPUs Intel/AMD contienen varios procesadores físicos dentro del mismo chip. Se conocen como procesadores multinúcleo.
  • Algunos sistema de alto rendimiento tienen de hecho múltiples procesadores físicos instalados en placas base especializadas para proporcionar un aumento significativo del rendimiento sobre un sistema uniprocesador. Los usuarios del ssitema probablemente sabrán si tienen uno de estos sistemas, ya que no son nada baratos.

En todos estos casos se deben seleccionar las opciones apropiadas del núcleo para obtener el rendimiento óptimo con estas configuraciones:

KERNEL Configuración para soporte de multiprocesamiento
Processor type and features  --->
 [*] Symmetric multi-processing support
 [*]   SMT (Hyperthreading) scheduler support
 [*]   Multi-core scheduler support (NEW)

La siguiente opción únicamente habilita las características de gestión de la energía, sin embargo, puede ser también un requisito para que todas las CPUs estén disponibles en el sistema:

KERNEL Gestión de la energía en sistemas multiprocesador
Power management and ACPI options  --->
 [*] ACPI (Advanced Configuration and Power Interface) Support

Soporte para memoria alta en x86

Debido a limitaciones en el espacio de direcciones de 32 bits de la arquitectura x86, un núcleo con la configuración por defecto solo puede soportar hasta 896MB RAM. Si el sistema tiene más memoria, solo serán visibles los primeros 896MB, a menos que se haya habilitado el soporte para memoria alta.

Nota
Esta limitación es específica a la arquitectura x86 (IA32). Las demás arquitecturas soportan naturalmente grandes cantidades de memoria, sin requerir afinamientos en la configuración.

El soporte para la memoria alta no está activado por defecto porque introduce un pequeño costo en términos de rendimiento. No se distraiga por esto, ¡Esta carga es insignificante en comparación con el aumento del rendimiento por disponer de la memoria adicional!

Elija la opción de 4GB a menos que su sistema tenga instalados más de 4GB de RAM

KERNEL Habilitar el soporte de memoria alta en x86
Processor type and features  --->
 High Memory Support  --->
  (X) 4GB
  ( ) 64GB

Módulos del núcleo comprimidos

A partir de la versión 3.18.x (y posteriores) es posible realizar la compresión de módulos del núcleo. Están disponibles Los formatos de compresión gzip y xz compression. Es importante hacer emerge de sys-apps/kmod con los ajustes USE apropiados antes de construir un núcleo con módulos comprimidos:

ARCHIVO /etc/portage/package.useHabilitar el soporte de compresión para kmod
sys-apps/kmod lzma zlib

Haga emerge de nuevo de sys-apps/kmod:

root #emerge --ask --oneshot --changed-use sys-apps/kmod

Habilite al compresión de módulos y seleccione un método de compresión preferido:

KERNEL Habilite la compresión de módulos
Enable loadable module support --->
  [*]   Compress modules on installation
  Compression algorithm ()  --->
    <X> GZIP
        XZ

Usually make modules_install runs depmod. If sys-apps/kmod did not have the proper USE flags set (see the package.use step above) the first time it was run, then the dependency list will be empty. The system will therefore be unable to load any modules that were built compressed.

After kmod has been recompiled, re-run depmod as a solution to this problem:

root #depmod -a
root #modprobe <module_name>

Notación corta para la configuración del núcleo

Introducción

When reading about kernel configuration, often times settings are described as CONFIG_<something>. This short-hand notation is what the kernel configuration actually uses internally, and is what will be found in the kernel configuration file (be it /usr/src/linux/.config or in the auto-generated /proc/config.gz file). Of course, using short-hand notation would not do much good if this cannot translate this to the real location in the kernel configuration. The make menuconfig tool makes this possible.

Traducir CONFIG_FOO a la localización real de la configuración

Suppose the CONFIG_TMPFS_XATTR feature needs to be enabled. Launch the kernel configuration menu (make menuconfig) and press the / key. This will open a search box. In the search box, type CONFIG_TMPFS_XATTR.

Lo siguiente es una salida del resultado de esta búsqueda:

KERNEL Result of searching menuconfig for "CONFIG_TMPFS_XATTR"
Symbol: TMPFS_XATTR [=n]
Type  : boolean
Prompt: Tmpfs extended attributes
  Defined at fs/Kconfig:138
  Depends on: TMPFS [=y]
  Location:
    -> File systems
      -> Pseudo filesystems
        -> Virtual memory file system support (former shm fs) (TMPFS [=y])
  Selected by: TMPFS_POSIX_ACL [=n] && TMPFS [=y]

Esta salida ofrece un montón de información interesante.

Entry Description
Symbol: TMPFS_XATTR [=n] This identifies the kernel configuration entry being searched for. It also shows that this setting is currently not enabled ([=n]).
Type: boolean The setting searched for is a boolean (which means it can be one of two options: enabled or disabled). Some settings are numbers or strings.
Prompt: Tmpfs extended attributes This is the text found in the make menuconfig entry that controls the variable (TMPFS_XATTR) in the .config file. It is essentially the variable name in a more human readable format.
Depends on: TMPFS [=y] Before this entry can be seen CONFIG_TMPFS must be enabled. In this case it is already done (hence the [=y]) but if this is not the case, first look for (and enable) CONFIG_TMPFS.
Location: ... This is the location in the make menuconfig structure where the setting can be found. Remember, the setting to look for is Tmpfs extended attributes.
Selected by: TMPFS_POSIX_ACL [=n] && TMPFS [=y] If the settings described here are both enabled (in this case the first one is not), then CONFIG_TMPFS_XATTR will be automatically enabled and will not be possible to be disabled until one of these settings is de-selected.

With this information, it should be possible to translate any CONFIG_* requirements fairly easily. In short, it means a user must

  1. Habilitar los ajustes en el campo Depends on
  2. Navegar a dónde indique Location:
  3. Activar el valor indicado por Prompt:

Otra documentación sobre la configuración del núcleo

Hasta ahora se han mostrado conceptos generales y problemas específicos relacionados con la configuración del núcleo, se dejan los detalles precisos para que sea el propio usuario el que los descrubra. Sin embargo, otras partes de la documentación Gentoo proporcionan detalles especializados para la materia que nos ocupa.

Estos documentos pueden ser de ayuda a la hora de configurar áreas específicas del núcleo. Aunque esta advertencia ya se ha mencionado en esta guía, se debe recordar que los usuarios que son noveles en la configuración del núcleo no deben arriesgarse cuando intenten configurar sus núcleos. Deben comenzar obteniendo un sistema básico funcionando. El soporte para el audio, la impresión, etc. siempre se puede añadir más tarde.

Tener un núcleo básico operativo ayudará a los usuarios en los pasos para realizar una configuración futura debido a que el usuario detectará qué está rompiendo el sistema y qué no. Es siempre recomendable guardar una configuración básica del núcleo (que funcione correctamente) en una carpeta distinta a la carpeta que contiene los fuentes del núcleo antes de intentar añadir nuevas características o hardware.

  • En el artículo sobre ALSA se detallan las opciones de configuración necesarias para dar soporte a una tarjeta de sonido. Observe que ALSA es una excepción al esquema de no construir las cosas como módulos: ALSA es de hecho más sencillo de configurar cuando los componentes son modulares.
  • La guía del enrutador IPv6 describe cómo configurar el núcleo para enrutar usando el esquema de direccionamiento de redes de próxima generación.
  • Si se van a usar los controladores gráficos de código cerrado de nVidia para obtener mejor rendimiento gráfico 3D, la Guía nVidia muestra las opciones que deben y no deben seleccionarse en el sistema.
  • Entre otras cosas, la guía de gestión de energía explica cómo configurar el núcleo para ajustar la frecuencia de la CPU y para activar la funcionalidad de suspensión e hibernación.

Si se está corriendo un sistema PowerPC, las Preguntas Frecuentes de PPC tiene algunas secciones sobre la configuración del núcleo para PPC.

  • La guía de impresión lista las opciones del núcleo necesarias para ofrecer soporte a la impresión en Linux.
  • La guía USB detalla los ajustes de configuración necesaria para utilizar dispositivos USB comunes como teclados, ratones, dispositivos de almacenamiento e impresoras USB.

Solución de problemas

Cambios de configuración que no tienen efecto

Es muy común que los usuarios hagan algún cambio de configuración, pero que comenten un pequeño error en el proceso de iniciar el nuevo núcleo que están configurando. Arrancan con una imagen del núcleo que no es la que se acaba de configurar, observan que el problema que intentaban solucionar todavía está ahí y concluyen que el cambio de configuración no era la solución del problema.

El proceso de compilar e instalar núcleos está fuera del alcance de este documento. Se puede consultar la guía de actualización para obtener unas directrices generales. Resumiendo: el proceso para obtener un núcleo modificado es el siguiente: 1&41; configurar, 2&41; compilar, 3&41; montar /boot (si no está aún montado), 4&41; copiar la nueva imagen del núcleo a /boot, 5&41; asegurarse de que el cargador de arranque hará referencia al nuevo núcleo y 6&41; reiniciar. Si se omite alguno de los últimos pasos, entonces los cambios realizados no tendrán efecto.

Es posible verificar que el núcleo con el que se ha arrancado es el mismo que el nuevo núcleo compilado en el disco duro. Esto se puede realizar examinando la fecha y hora de la compilación del núcleo. Asumiendo que la arquitectura del sistema es x86 y que los fuentes del núcleo están instaladas en /usr/src/linux, se puede utilizar la siguiente orden:

root #uname -v
#4 SMP PREEMPT Sáb Jul 15 08:49:26 BST 2006

La orden anterior mostrará la fecha y hora en que se compiló el núcleo que ha arrancado.

root #ls -l /usr/src/linux/arch/i386/boot/bzImage
-rw-r--r-- 1 dsd users 1504118 Jul 15 08:49 /usr/src/linux/arch/i386/boot/bzImage

La orden de arriba muestra la fecha y la hora en que se compiló por última vez la imagen del núcleo en el disco duro.

Si las marcas de tiempo de las dos órdenes anteriores difieren en más de dos minutos, indica que se ha cometido un error en la reinstalación del núcleo y que el sistema no se ha iniciado desde la nueva imagen modificada del núcleo.

Los módulos no se cargan automáticamente

Como se ha mencionado anteriormente en este documento, el sistema de configuración del núcleo experimenta un gran cambio en su comportamiento cuando se selecciona la compilación de un componente como módulo (M) en vez de integrarlo (Y). Vale la pena repetir esto porque muchos usuarios caen en esta trampa.

Cuando se selecciona un componente como integrado, el código forma parte de la imagen del núcleo (bzImage). Cuando el núcleo necesita utilizar ese componente se puede inicializar y cargar automáticamente sin intervención por parte del usuario.

Cuando se selecciona un componente como módulo, el código se construye como un archivo de módulo del núcleo aparte instalado en el sistema de ficheros. En general, cuando el núcleo necesita usar ese componente, no podrá encontrarlo. Con algunas excepciones, el núcleo no hace esfuerzo alguno para cargar estos módulos. Esa tarea queda en manos del usuario.

Si se está construyendo soporte para una tarjeta de red como un módulo y se observa que no es accesible, es probablemente debido a que el módulo no se ha cargado. Esto se debe hacer manualmente o se debe configurar el sistema para cargar el módulo de forma automática durante el inicio.

A menos que un usuario tenga razones para hacerlo de otra manera, se puede ahorrar algo de tiempo construyendo estos componentes de manera integrada en la imagen del núcleo, de modo que éste pueda configurar estos pequeños ajustes por si mismo.

Ver también

  • genkernel - A tool used to automate the build process of the kernel and initramfs.
  • proc filesystem (Security Handbook) - Dynamically change kernel parameters and variables on the fly.
    This article is based on a document formerly found on our main website gentoo.org.
    The following people contributed to the original document: Daniel Drake, Curtis Napier, Justin Robinson, Lukasz Damentko, Jonathan Smith, nightmorph
    They are listed here as the Wiki history does not allow for any external attribution. If you edit the Wiki article, please do not add yourself here; your contributions are recorded on the history page.