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 gestionar la instalació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 el usuario, hay un gran número de razones por las cuales una gran proporción de usuarios Gentoo escogen configurar su núcleo manualmente: mayor flexibilidad, menor tamaño del núcleo, tiempos de compilación más cortos, mejor experiencia didáctica, aburrimiento severo, etc.


 * 1) greater flexibility,
 * 2) smaller (kernel) sizes,
 * 3) shorter compilation times,
 * 4) the learning experience,
 * 5) severe boredom,
 * 6) absolute knowledge of kernel configuration, and/or
 * 7) complete control.

Esta guía no cubre el método automático (genkerne). Si prefiere utilizar genkernel para compilar e instalar su núcleo, eche un vistazo a la documentación de Genkernel.

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 de su sistema. En lugar de esto, el documento introduce los conceptos de la configuración manual y detalla los problemas más comunes a los que se enfrentan los usuarios.

Este 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, pero la mayor parte del contenido seguirá siendo relevante.

En este punto asumiremos que tiene las fuentes del núcleo Linux desempaquetadas en el disco duro (usualmente en algún lugar bajo ) y se supone que debe saber como entrar en la configuración  y navegar a través de su sistema de menús. Si no se encuentra ya en esta etapa, hay otros documentos disponibles que le pueden ayudar.


 * La Guía del núcleo ofrece los distintos paquetes fuente de los que disponemos.
 * La Guía de actualización del núcleo le explica cómo actualizar su núcleo o cambiar de uno a otro.
 * El Manual de Gentoo cubre también algunos aspectos de la instalació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 entonces se selecciona el soporte de hardware y características relevantes del núcleo para su sistema.

El núcleo incluye una configuración por defecto que se presenta la primera vez que 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 decide deshabilitar una opción que estaba habilitada por defecto, asegúrese de que comprende relativamente bien lo que hace la opción y las consecuencias que pueden acarrear su deshabilitación.

Si es la primera vez que configura un núcleo Linux, debe ser algo conservador: no sea demasiado aventuroso y mientras sea posible, trate de no hacer demasiadas modificaciones a los valores por defecto. También tenga en cuenta que hay ciertas partes de la configuración que debe afinar en su sistema ¡Solo para arrancar!

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.

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 haga falta (esto se deja por cuenta del usuario). 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.

Desde luego, para algunas partes de la configuración, la construcción integral es un requerimiento absoluto. Por ejemplo, si su partición raíz es un sistema de archivos, el sistema no va a arrancar si el soporte para  ext2 se construyó como un módulo (ya que el sistema tendría que buscar en la misma partición raíz para encontrar el módulo ext2, pero no puede ver la partición raíz ¡hasta que tenga cargado el módulo de soporte ext2!).

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 su sistema. Aunque hay una configuración por defecto con algo de soporte para el hardware, es obligatorio encontrar y seleccionar las opciones de configuración relevantes para la configuración de hardware del sistema.

Esto simplemente requiere conocimiento de los componentes interiores y los conectados a su computadora, o que se identifiquen adecuadamente estos componentes. Para la mayoría de los componentes internos, necesita identificar el chipset usado por cada uno, en lugar del nombre de mercado del producto.

Existen algunas herramientas disponibles que pueden ser de ayuda. (parte del paquete ) identificará su hardware PCI y AGP, incluyendo componentes construidos en la propia placa base. La herramienta  (del paquete ) identificará los dispositivos conectados a los puertos USB.

La situación es algo confusa por la variación de grados de estandarización en el mundo del hardware. A no ser que haya una verdadera desviación de las normas, los discos IDE "sencillamente funcionarán". al igual que los teclados y ratón PS/2 o USB. Obtendrá soporte para una pantalla básica VGA. Sin embargo, algunos dispositivos, tales como adaptadores ethernet prácticamente no tienen estandarización, así que tendrá 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 tenga que seleccionar opciones más especializadas para obtener el potencial pleno de su sistema. Por ejemplo, si no activa el soporte para el chipset IDE apropiado, los discos IDE funcionarán muy lentamente.

Características del núcleo
Al igual que el soporte de hardware, también hace falta pensar en términos de las características del software requeridos del núcleo. Un ejemplo importante de este tipo de característica es el soporte para sistemas de ficheros: necesitará seleccionar soporte para los sistemas de ficheros que utiliza en su disco duro al igual que cualquier otro sistema de ficheros utilizado en almacenamiento externo (por ejemplo, VFAT en discos flash USB).

Otro ejemplo común es la funcionalidad avanzada de redes. Si desea hacer algún tipo de enrutamiento o trabajar con un cortafuegos, debe asegurarse de que se incluyen las opciones relevantes de la configuración del núcleo.

¿Preparado?
Ahora que hemos introducido los conceptos, podremos empezar a identificar el hardware y navegar a través de los menús de configuración, seleccionando las opciones requeridas para el núcleo de su sistema.

El resto de esta página tratará de clarificar algunas áreas comunes de confusión y proporcionar consejos para evitar problemas comunes que los usuarios encuentran a menudo. ¡Buena suerte!

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 se tratan como dispositivos SCSI, lo cual significa que también se requiere soporte para discos y cdroms SCSI. El disco duro SATA se nombra (por ejemplo) y el disco CD/DVD SATA se nombra (por ejemplo).

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.

Opciones de configuración para libata

Chipsets IDE y DMA
A pesar de la introducción de SATA, los dispositivos IDE todavía son muy comunes y otros 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 o hacia el disco.

A menos que esté tratando con un sistema anterior a 1995, su 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 sufre de un rendimiento general realmente pobre y está utilizando un disco IDE, es muy posible que no esté usando DMA.

Si no está utilizando libdata para sus discos IDE, entonces necesitará comprobar que se puede utilzar DMA y activarlo.

Para activar DMA en dispositivos IDE, debe activar la opción de configuración del controlador IDE.

Controladores de anfitrión USB
USB es un bus ampliamente adoptado para conectar periféricos externos a la 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 tres tipos:


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

La mayoría de los sistemas tendrán uno de los dos tipos de interfaz: EHCI (USB 2.0) además de UHCI o OHCI (USB 1.1). Es importante que selecciones ambos tipos presentes en su sistema. Mientras que todos los dispositivos USB 2.0 son compatibles con USB 1.1, una gran proporción de dispositivos USB (aún los que se fabrican actualmente) están basados en el interfaz USB 1.1 - ¿Porqué un ratón USB podría necesitar más que 1,5Mb/s?

If the relevant options corresponding to the USB HCD types present on the system are not selected, then 'dead' USB ports may be experienced. This case can be determined if a working USB device is plugged in, but it does not get power or respond in any way.

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

In Linux kernel 3.12.13 and later, OHCI support for PCI-bus USB controllers 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 formas inmediatamente obvias.


 * Muchas CPUs de Intel soportan una tecnología que ellos llaman hyper-threading, en la que el sistema ve la CPU como si fueran 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. Probablemente sabrá si tiene uno de estos sistemas, ya que no son nada baratos.

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

The next option not only enables power management features, but might also be a requirement for making all CPUs available to the system:

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 su sistema tiene más memoria, solo serán visibles los primeros 896MB, a no ser que active 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!

Compressed kernel modules
From kernel version 3.18.x (and up) compression of kernel modules has been possible. gzip and xz compression are available. It is important to emerge with the proper USE flags before compiling a kernel with compressed modules:

Re-emerge :

Enable module compression and select a preferred compression method:

Usually make modules_install runs depmod. If did not have the proper USE flags set (see the  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:

Introducción
Cuando lea sobre las configuraciones del núcleo, verá a menudo que los ajustes se describen como. Esta notación corta es lo que realmente utiliza internamente el núcleo, y es lo que se indica 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. Afortunadamente, la herramienta  le permite hacer precisamente esto.

Traducir CONFIG_FOO a la localización real de la configuración
Suponga que necesita habilitar, lance el menú de configuración del núcleo  y teclee. Esto abrirá la caja de búsqueda. En esta caja, escriba (puede incluso omitir la parte ). El siguiente listado de código muestra el resultado de esta búsqueda.

The following is an output of the result of this search:

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

Con esta información, debería poder traducir cualquier requerimiento que se encuentre. Resumiendo, esto significa que:


 * 1) necesita habilitar los ajustes en el campo Depends on
 * 2) navegar a dónde le indique Location:
 * 3) activar el valor indicado por Prompt:

Otra documentación sobre la configuración del núcleo
Hasta ahora solamente hemos discutido conceptos generales y problemas específicos relacionados con la configuración del núcleo, sin entrar en detalles precisos (¡Estos detalles están para que los descubra!). Sin embargo, otras partes de la documentación Gentoo proporcionan detalles especializados para la materia que nos ocupa.

Puede encontrar estos documentos útiles a la hora de configurar áreas específicas, pero si es un principiante en la configuración del núcleo, no sea demasiado aventurado. Comience echando a andar un sistema básico ya que siempre puede volver más tarde para agregar soporte para audio, impresión, etc.

Getting the basics of a kernel operational will help users in later configuration steps because the user will know what is breaking their system and what is not. It is always wise to save the base (working) kernel configuration in a folder other than the kernel's sources folder before attempting to add new features or 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 Bluetooth detalla las opciones que necesita para utilizar dispositivos bluetooth en su sistema.


 * 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 va 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 Administración de Energía explica la configuración del núcleo para ajustar la frecuencia de la CPU y para activar la funcionalidad de suspensión e hibernación.

Si trabaja con un sistema PowerPC, las Preguntas Frecuentes de PPC tiene algunas secciones sobre la configuración del núcleo.

El Cómo imprimir lista las opciones del núcleo necesarias para ofrecer soporte a la impresión en Linux.

La Guía USB detalla la configuración necesaria para utilizar dispositivos USB comunes como teclados y ratones, dispositivos de almacenamiento e impresoras.

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 a partir de este punto. 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, debe echar un vistazo a la Guía de Actualización del Núcleo para orientación general. En pocas palabras, el proceso consiste en configurar, compilar, montar (si no está montada ya), copiar la nueva imagen del núcleo y reiniciar el sistema. Si se salta algunos de estos pasos finales, ¡Los cambios realizados no tendrán efecto!

Es posible verificar que el núcleo con el que arrancó es el mismo que el núcleo compilado en el disco duro examinando la fecha y hora de la compilación. Asumiendo que su arquitectura es x86 y las fuentes del núcleo están instaladas en :

La orden anterior muestra 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 su disco duro.

Si las horas de las dos órdenes anteriores difieren en más de dos minutos, indica que ha ocurrido un error en la reinstalación del núcleo y que ¡No ha arrancado con la imagen del núcleo que creía!

Los módulos no se cargan automáticamente
Como mencionamos antes 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 lo 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 puede!. Con algunas excepciones, el núcleo no hace esfuerzo alguno para cargar estos módulos. Esa tarea queda en manos del usuario.

De manera que si construye el soporte para la tarjeta de red como un módulo y no tiene acceso a la red, es probable que el módulo no se haya cargado. Debe hacerlo manualmente o configurar su sistema para cargarlo automáticamente al arrancar.

A menos que tenga razones para hacerlo de otra manera, ahórrese algo de tiempo construyendo estos componentes de manera integrada en la imagen del núcleo, para que éste pueda hacer todo de forma automática.