En primer lugar, hagamos un breve recorrido por el directorio
donde se lleva a cabo la compilación del kernel. Todos los
directorios mencionados hacen referencia al directorio principal,
que es /usr/src/sys
, al que también
podemos acceder desde /sys
. Existen gran
cantidad de subdirectorios que representan diferentes partes del
kernel, pero el más importante para lo que deseamos hacer son
arch
y
/conf
, que es donde se llevara a cabo la
edición del fichero de configuración y la
compilación propiamente dicha del mismo,
el punto de partida para la personalización del kernel. El
directorio arch
representa la arquitectura del sistema, por lo que puede ser
i386
, alpha
,
amd64
, ia64
,
powerpc
, sparc64
o
pc98
(una arquitectura alternativa, similar a PC
y muy popular en Japón). Todo lo que existe dentro de un
directorio de una arquitectura en particular, es específico
para dicha arquitectura; el resto del código es común
para todas las plataformas en las que FreeBSD puede funcionar.
Observe la organización lógica de la estructura
de los directorios, con cada dispositivo utilizable en el sistema,
sistema de ficheros y opciones, cada cosa en su propio
subdirectorio.
A lo largo de este capítulo asumiremos que está utilizando la arquitectura i386, puesto que sobre ella son los ejemplos que vamos a ir exponiendo. Si no es este su caso debe hacer los cambios adecuados a su arquitectura de hardware en las rutas que vayamos utilizando.
Si no existe el directorio
/usr/src/sys
en su sistema quiere
decir que no están instaladas las fuentes del
kernel. La forma más sencilla de tenerlas es
mediante /stand/sysinstall
. Como
usuario root
seleccione
Configure
, luego
Distributions
, después
src
y finalmente sys
.
Si no le gusta mucho
sysinstall y tiene acceso a un
CDROM “oficial” de FreeBSD puede
instalar las fuentes por medio de la siguiente línea
de órdenes:
#
mount
/cdrom#
mkdir -p
/usr/src/sys
#
ln -s
/usr/src/sys /sys#
cat /cdrom/sys/ssys.[a-d]* | tar -xzvf
Ahora vaya al al directorio
arch/conf
y copie el fichero de configuración GENERIC
con el nombre que desee. Por ejemplo:
#
cd /usr/src/sys/i386/conf
#
cp GENERIC MIKERNEL
Por tradición el nombre se escribe con mayúsuculas y
si tiene varias maquinas FreeBSD, con diferente hardware es recomendable
darle a cada kernel el mismo nombre que la máquina en la que va
a ejecutarse. En este ejemplo usaremos el nombre de
MIKERNEL
.
Guardar su fichero de configuración directamente bajo
el directorio /usr/src
, puede que no sea una
idea muy astuta. Si empieza a tener problemas puede ser muy tentador
borrar /usr/src
y comenzar desde cero.
Cinco segundos después de haber hecho esto se dará
cuenta de que ha eliminado el fichero de configuración de
su kernel, en el que quizás llevaba horas trabajando.
Le proponemos una alternativa: guardar su fichero de configuración
cualquier otro sitio y crear un enlace simbólico al fichero
que hay en el directorio i386
.
Por ejemplo:
#
cd /usr/src/sys/i386/conf
#
mkdir /root/kernels
#
cp GENERIC /root/kernels/MIKERNEL
#
ln -s /root/kernels/MIKERNEL
Ahora edite el fichero de configuración
MIKERNEL
con su editor de textos favorito.
Si se trata de una instalación reciente probablemente el
único editor disponible sea vi,
del cual es complicado explicar su uso detallado en este
documento, pero existen bastantes libros que detallan su uso; puede
ver algunos en la bibliografía.
FreeBSD dispone de un editor de uso muy sencillo, llamado
ee; si es usted principiante le será
de mucha ayuda. Cambie los comentarios al principio del fichero
con algo que refleje los cambios realizados o al menos para
diferenciarlo del fichero GENERIC
.
Si ha compilado un kernel en SunOS™ o algún otro sistema operativo
BSD seguramente la mayor parte de fichero le será muy
familiar. Si viene usted de otros sistemas
operativos como DOS, el fichero GENERIC
puede
parecerle intimidante, así que siga las instrucciones descritas
en El Fichero de Configuración
detenidamente y con sumo cuidado.
Asegúrese siempre de verificar el fichero
/usr/src/UPDATING
antes de realizar cualquier
actualización del sistema si ha
sincronizado sus fuentes
para disponer de la última versión de los mismos.
En el fichero /usr/src/UPDATING
está toda
la información importante sobre las actualizaciones.
Al distribuirse con FreeBSD dicha información deberá
estar más actualizada que la que hay en este mismo
texto.
Ahora es momento de llevar a cabo la compilación del código fuente del kernel.
Vaya al directorio /usr/src
:
#
cd /usr/src
Compile el kernel:
#
make buildkernel KERNCONF=MIKERNEL
Instale el nuevo kernel:
#
make installkernel KERNCONF=MIKERNEL
Es imprescindible que disponga del código fuente completo de FreeBSD para poder compilar el kernel.
Por omisión, si compila un kernel personalizado
todos los módulos del kernel
serán recompilados también. Si quiere
que la actualización de su kernel sea mucho más
rápida o compilar solamente ciertos módulos
personalizados, edite kernel modules will be rebuilt as well.
/etc/make.conf
antes de compilar el
kernel:
MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfs
Esta variable crea una lista de módulos listos para ser compilados, sin tocar los demás.
WITHOUT_MODULES = linux acpi sound/sound sound/driver/ds1 ntfs
Esta variable crea una lista de módulos que serán excluidos del proceso de compilación. Hay otras variables que pueden resultarle útiles durante este proceso; consulte la página de manual de make.conf(5).
El nuevo kernel se copiará al directorio raíz
como /kernel
y el kernel viejo tendrá
el nombre de /kernel.old
. Ahora
reinicie su sistema para poder probar su nuevo kernel. En caso de que se
presente algun problema hay algunos consejos para la resolución de problemas al
final de este capítulo. Asegúrese de leer la sección
que explica cómo recuperar el sistema en caso de que su kernel no quiera arrancar.
Ciertos ficheros relacionados con el proceso de
arranque, como loader(8)y su configuración,
se guardan en /boot
. Los módulos
personalizados o de terceros se suelen guardar en
/boot/kernel
,
aunque debe tener presente que es muy importante que
los módulos y el kernel estén
sincronizados. Si intenta usar módulos con un
kernel para el que no están destinados puede
haber errores o incluso producirse intesatabilidades.
Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Si tiene dudas sobre FreeBSD consulte la
documentación antes de escribir a la lista
<questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a
<doc@FreeBSD.org>.