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.

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,5mbit/sec?

Si no selecciona las opciones relevantes que corresponde a los tipos de HCD USB disponibles en su sistema, podría obtener puertos USB 'muertos': se enchufa un dispositivo, pero no recibe energía ni ni responde de forma alguna.

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:

En la versión 3.12.13 de núcleo y posteriores, se tiene que habilitar OHCI support for PCI-bus USB controllers se 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 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.

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!

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.

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.


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


 * The Bluetooth article details the options you need in order to use bluetooth devices on your system.


 * The IPv6 router guide describes how to configure your kernel for routing using the next generation network addressing scheme.


 * If you will be using the closed-source nVidia graphics drivers 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 your kernel for CPU frequency scaling, and for suspend and hibernate functionality.


 * If you are running a PowerPC system, the PPC FAQ has a few sections about kernel configuration.


 * The Printing HOWTO lists the kernel options needed to support printing in Linux.


 * The USB Guide details the configuration required to use common USB devices such as keyboards/mice, storage devices, and printers.

Configuration changes do not take effect
It is very common for users to make a configuration change, but then make a small mistake in the process following on from that point. 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, you should refer to the Kernel Upgrade Guide for general guidance. In short, the process is: configure, compile, mount (if not already mounted), copy new kernel image over, reboot. If you miss out any of those final stages, your changes will not take effect!

It is possible to verify if the kernel you are booted from matches the kernel compiled on your hard disk by examining the date and time of compilation. Assuming your architecture is x86 and your kernel sources are installed at :

The above command displays the date and time that the kernel you are currently booted from was compiled.

The above command displays the date and time that the kernel image on your hard disk was last compiled.

If the two times from the above commands differ by more than 2 minutes, it indicates that you have made a mistake during kernel reinstallation and you are not booted from the kernel image that you thought you were!

Modules do not get loaded automatically
As mentioned earlier in this document, the kernel configuration system hides a large behavioural change when selecting a kernel component as a module (M) rather than built-in (Y). It is worth repeating this again because so many users fall into this trap.

When you select a component as built-in, the code is built into the kernel image (bzImage). When the kernel needs to use that component, it can initialise and load it automatically, without any user intervention.

When you select a component as a module, the code is built into a kernel module file and installed on your filesystem. In general, when the kernel needs to use that component, it can't! With some exceptions, the kernel makes no effort to actually load these modules - this task is left up to the user.

So, if you build support for your network card as a module, and you then find that you cannot access your network, it is probably because the module is not loaded - you must either do this manually or configure your system to autoload it at boot time.

Unless you have reasons to do otherwise, save yourself some time by building these components directly into the kernel image, so that the kernel can automatically set these things up for you.

Agradecimientos
Nos gustaría dar las gracias a los siguientes autores y editores por sus contribuciones a esta guía:


 * Daniel Drake
 * Curtis Napier
 * Justin Robinson
 * Åukasz Damentko
 * Jonathan Smith
 * nightmorph