Capítulo 10. Añadiendo Opciones a la Configuración de un Nuevo Kernel

Tabla de contenidos
10.1. ¿Qué son las Opciones del Kernel?
10.2. Ahora, ¿Qué Debo Hacer?
Contribuido por Jörg Wunsch.

Nota: Es importante que antes de leer este documento, usted este familiarizado con la sección de configuració del kernel.

10.1. ¿Qué son las Opciones del Kernel?

Básicamente el uso de las opciones del kernel se encuentran descritas en la sección de configuración del kernel. También existe una explicación de opciones “históricas” y de “nuevo-estilo”. La meta final es que eventualmente todas las opciones soportadas por el kernel sean del nuevo-estilo, de tal forma que para las personas que acertadamente ejecutan make depend en el directorio de compilación de su kernel, después de ejecutar config(8), el proceso de compilación detectará automáticamente las opciones modificadas, y sólo recompilará los ficheros donde sea necesario. Eliminando el anterior directorio de compilación en cada ocasión que se ejecute config(8) como es llevado a cabo ahora.

Básicamente, una opción del kernel no es otra cosa que la definición de un macro del preprocesador C para el proceso de compilación del kernel. Para efecto de hacer que la compilación sea realmente opcional, la parte que corresponde a la fuente del kernel (o bien el fichero kernel.h), debe ser escrita teniendo en mente, el uso de las opciones del kernel, por ejemplo, las opciones por omisión pueden modificarse con la opción config. Esto normalmente se lleva a cabo con algo como esto:

#ifndef ESTA_OPCION
#define ESTA_OPCION (algun_valor_por_default)
#endif /* ESTA_OPCION */

De esta forma cuando un administrador indica otro valor en su fichero de configuración, deja sin efecto el valor que se tiene originalmente por default, y lo substituye con este nuevo valor. Claramente el nuevo valor será utilizado como substituto en el código fuente, cuando el preprocesador se ejecute, por lo que debe de tratarse de una expresión válida para el lenguaje C, sin importar el contexto en el que se haya estado usando el valor por default.

También es posible crear opciones de menor valor, que simplemente habilitan o deshabilitan una parte particular del código, al encerrarlo en él

#ifdef ESTA_OPCION

[su código aqui]

#endif

Simplemente al incluir ESTA_OPCION en su fichero de configuración (con o sin valor alguno), activará la parte del código que haya ingresado.

Para la gente que este familiarizada con el lenguaje C, inmediatamente podrá darse cuenta de que todo pudiera ser tratado como una “opción de configuración”, donde cuando menos se tiene una simple referencia del tipo #ifdef... Por otro lado, es poco probable que alguien especifique

options        aunno,nodefinida

en su fichero de configuración, y que posteriormente se pregunten por que fallo la compilación del kernel.

Es claro que, el uso de nombres arbitrarios para las opciones, hacen muy difícil el poder rastrear su uso en el código del kernel. Lo anterior es el razonamiento detrás del esquema de opciones de nuevo-estilo, donde cada opción se localiza en un fichero .h diferente dentro del directorio de compilación del kernel, los cuales por convicción son llamados opt_foo.h. De esta manera se pueden crear las dependencias dispuestas por Makefile, y el comando make puede determinar que debe ser recompilado, cuando una opción ha cambiado.

Aun con esto los mecanismos del estilo-viejo, tienen una ventaja para las opciones locales o quizás para las opciones de experimentación, que cuentan con un periodo de vida corto: en virtud de que es fácil añadir un nuevo #ifdef al código fuente del kernel, lo cual ya lo ha hecho una opción de configuración del kernel. En este caso, al utilizar esta opción, el administrador, es responsable por completo, al tener conocimiento de las implicaciones que tiene usarla (y probablemente el forzar la recompilación de ciertas partes del kernel). Una vez que la transición de todas las opciones soportadas por el kernel ha finalizado, config(8) advertirá cuando una opción no soportada aparezca en el fichero de configuración, y no procederá a incluirlo en el fichero Makefile del kernel.

Éste y otros documentos pueden obtenerse en ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para preguntas acerca de FreeBSD, leer la documentación antes de contactar con la lista <questions@FreeBSD.org>.
Para preguntas acerca de esta documentación, e-mail a <doc@FreeBSD.org>.