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

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  and   in the kernel's  or by the following:

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 (parte del paquete ) identificará su hardware PCI y AGP, incluyendo componentes construidos en la propia placa base. La orden (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 cuatro 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 (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:

In Linux kernel 3.12.13 and later,   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:

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, 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 lanza. 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 como solución a este problema:

Introducción
When reading about kernel configuration, often times settings are described as CONFIG_. 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 or in the auto-generated  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 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 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:

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


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


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

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 (si no está aún montado), 4&41; copiar la nueva imagen del núcleo a, 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 y que los fuentes del núcleo están instaladas en, se puede utilizar la siguiente orden:

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

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.