Kernel/Gentoo Kernel Configuration Guide/es

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.

En este punto asumiremos que se dispone de las fuentes del núcleo Linux desempaquetadas en el disco duro (usualmente en algún lugar bajo ) y se supone que se debe saber como entrar en la configuración menuconfig y cómo navegar a través de su sistema de menús basado en ncurses. Si el usuario no tiene estos conocimiento, hay otros documentos disponibles que le pueden ayudar. Se deben leer los siguientes artículos antes de volver a esta guía:


 * El artículo resumen del núcleo contiene información sobre los distintos paquetes fuente del núcleo que están disponibles en el árbol Portage.
 * El artículo sobre la actualización del núcleo explica como actualizar un núcleo o cambiar de un núcleo a otro.
 * El Manual de Gentoo en su sección de configuración se cubren algunos aspectos sobre la instalación del núcleo. Seleccione la arquitectura apropiada y luego navegue a la sección titulada "Configurar el núcleo Linux".

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, se pueden construir para formar parte integral del núcleo   o construidas como un módulo. 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.

Hay una diferencia importante entre opciones incluidas y modulares: con pocas excepciones, el núcleo no hace ningún intento de cargar módulos externos cuando el sistema los necesita, esto se deja por cuenta del usuario para que decida cuándo a cuándo no se debe cargar un módulo. Mientras que otras partes del sistema puedan cargar módulos bajo demanda, se recomienda que construya las opciones de soporte de hardware y características del núcleo incluidas. El núcleo puede entonces asegurar que la funcionalidad y soporte de hardware estén disponibles cuando hagan falta. Esto se hace activando todas las características del sistema (Y). Para que esta configuración sea coherente también es necesario incluir soporte para el firmware en el núcleo. Esto se hace definiendo  y   en el fichero   del núcleo o mediante:

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.

Existen algunas herramientas disponibles para ayudar a los usuarios a determinar qué opciones de configuración del núcleo utilizar. La orden lspci (parte del paquete ) identificará su hardware PCI y AGP, incluyendo componentes construidos en la propia placa base. La orden lsusb (del paquete ) identificará varios de los dispositivos conectados a los puertos USB del sistema.

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!

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á y el primer disco CD/DVD SATA se denominará.

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.

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.

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:

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

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:


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

Un excelente truco es utilizar lspci (del paquete ) que hace que sea relativamente sencillo detectar los HCDs que están disponibles en el sistema. Sin tener en cuenta el controlador SATA que también aparece, es sencillo determinar que este sistema requiere soporte EHCI y XHCI:

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:

En la versión 3.12.13 de núcleo y posteriores, se tiene que habilitar OHCI support for PCI-bus USB controllers si el controlador es un OHCI y se utiliza un ratón o teclado USB.

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:

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:

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.

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

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 con los ajustes USE apropiados antes de construir un núcleo con módulos comprimidos:

Haga emerge de nuevo de :

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

Normalmente make modules_install lanza depmod. Si no tiene definidos los ajustes USE apropiados (lea el paso concerniente a  de arriba), la primera línea se lanzó, entonces las lista de dependencias estará vacía. El sistema por tanto, no podrá cargar ningún módulo que que se construyera como módulo comprimido.

Una vez se haya recompilado kmod, lance de nuevo depmod como solución a este problema:

Introducción
Cuando se lee sobre la configuración del núcleo, a menudo los ajustes se describen como. Esta notación corta es lo que realmente utiliza internamente el núcleo, y es lo que se encuentra en el fichero de configuración del núcleo (bien esté en o en el fichero autogenerado ). Desde luego, el hecho de utilizar la notación corta no sería muy útil si no se puede traducir a la localización real en la configuración del núcleo. La herramienta make menuconfig permite hacer precisamente esto.

Traducir CONFIG_FOO a la localización real de la configuración
Supongamos que se necesita habilitar la característica. Lance el menú de configuración del núcleo (make menuconfig</tt>) y pulse la tecla. Esto abrirá una caja de búsqueda. Teclee.

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

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

Con esta información, se debería poder traducir de forma fácil cualquier requerimiento que se encuentre. Resumiendo, esto significa que un usuario debe:


 * 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
So far only general concepts and specific problems related to kernel configuration has been discussed; precise details have been left up to the user to discover. However, other parts of the Gentoo documentation collection provide specialized details for the topics at hand.

Such documents may be helpful while configuring specific areas of the kernel. Although this warning was mentioned previously in this guide, remember: users who are new to kernel configuration should not be adventurous when attempting to configure their kernels. Start by getting a basic system up and running, support for your audio, printing, etc., can always be added at a later date.

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.


 * El artículo sobre Bluetooth muestra los detalles de las opciones necesarias para utilizar dispositivos Bluetooth.


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


 * If the closed-source nVidia graphics drivers will be used for improved 3D graphics performance, the nVidia Guide lists the options that should and should not be selected on such a system.


 * Amongst other things, the Power Management guide explains how to configure the kernel for CPU frequency scaling, and for suspend and hibernate functionality.

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.

Cambios de configuración que no tienen efecto
It is very common for users to make a configuration change, but then make a small mistake in the process of actually booting to their newly configured kernel. They reboot into a kernel image that is not the one they just reconfigured, observe that whatever problem they were trying to solve is still present, and conclude that the configuration change does not solve the problem.

The process of compiling and installing kernels is outside the scope of this document; refer to the Kernel Upgrade Guide for general guidance. In short, the process to get a modified kernel is the following: 1) configure, 2) compile, 3) mount (if not already mounted), 4) copy new kernel image to, 5) Make sure the bootloader will reference the new kernel, 6) reboot. If one of those final stages has been missed, then the changes will not properly take effect.

It is possible to verify if the kernel that has booted matches the newly kernel compiled on the hard disk. This is performed by examining the date and time of the kernel's compilation. Assuming the system architecture is x86 and the kernel sources are installed at, the following command can be used:

The above command will display the date and time the currently booted kernel was compiled.

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.

If the time stamps from the above commands differ by more than 2 minutes, it indicates a mistake was made during kernel reinstallation and the system has not booted from the newly modified kernel image.

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. Una herramienta para automatizar el proceso de construcción del núcleo y del initramfs.