Gentoo Logo

Guía Genkernel de Gentoo Linux

Contenido:

1.  Introducción

Fundamentos

Genkernel está diseñado para permitir a los usuarios que no suelen compilar un núcleo propio utilizar una configuración similar a la del CD de Instalación Gentoo que auto-detecta su hardware. Algunos usuarios también pueden estar interesados en utilizar genkernel para aquél hardware que precisa de un núcleo operativo e inicialización antes de que arranque el sistema. Genkernel también compila automáticamente los módulos de su núcleo, lo que permite usar el hardware que requiere la carga de estos módulos con parámetros personalizados.

Público objetivo

Genkernel a menudo es una buena elección para aquellos que no están acostumbrados a compilar su propio núcleo o para los que no están seguros de su configuración de hardware. Genkernel está diseñado para aliviar el proceso de compilación del núcleo y debería dar soporte por defecto a la mayoría de su hardware.

Sin embargo, si conoce los drivers que requiere su sistema, puede reducir aún más el tiempo de compilación del núcleo. Esto es posible debido a que puede indicarle a genkernel que sólo construya los drivers relevantes a su hardware. Con frecuencia el número de drivers que requiere su sistema será menor (implicando un tiempo de compilación más corto) que los que provee la configuración por defecto.

Instalando genkernel

Puede obtener genkernel ejecutando simplemente el comando emerge genkernel. Si está usando la Plataforma de Referencia de Gentoo (GRP) recuerde instalar los paquetes binarios usando la opción -k de emerge. Ya que algunos paquetes de genkernel en GRP pueden ser anticuados, ese parámetro puede no ser el mismo. Se recomienda consultar siempre genkernel --help para obtener ayuda sobre cómo usar la versión de genkernel instalada en su sistema.

2.  Trabajando con genkernel

Cómo usar genkernel

Aunque hay varias formas de ejecutar genkernel, el enfoque menos inapropiado es mediante genkernel all. Con este se usa una configuración genérica que funciona bien en la mayoría de los sistemas. Tal como se mencionaba antes, este enfoque presenta ciertas desventajas pues la mayor parte de los módulos creados no son útiles para el usuario promedio y puede incrementar el tiempo de compilación. Abajo se muestra una ilustración de un enfoque más eficiente el cual se logra al pasar ciertos parámetros a genkernel como el usuario root:

Listado de Código 2.1: Ejecutando genkernel (con parámetros)

# genkernel --bootsplash --no-install --no-clean --menuconfig all

La línea descrita arriba provoca que genkernel construya un núcleo con la pantalla de presentación de arranque activada (--bootsplash) el cual tendrá que ser instalado manualmente (--no-install). Mientras se esté preparando el árbol de fuentes del núcleo, genkernel se abstendrá de borrar cualquiera de los archivos objeto preexistentes en el árbol de las fuentes (--no-clean). Se desplegará al usuario una herramienta de configuración basada en menús para seleccionar qué módulos se construirán en el sistema (--menuconfig).

Existen otros parámetros que alteran el resultado de genkernel. Por ejemplo, reemplazar --no install con el parámetro --install permite a genkernel instalar automáticamente el nuevo núcleo en el directorio /boot. Al usar el parámetro --mountboot permite que genkernel monte su partición /boot automáticamente si es necesario.

Recuerde, genkernel está diseñado para que la compilación del núcleo sea fácil y sin mayores inconvenientes. Por esta razón, genkernel ofrece diversos parámetros para facilitar el esfuerzo que involucra la compilación del núcleo. Por ejemplo, hay algunos parámetros que ayudan con la configuración del núcleo, mientras que hay otros que afectan la compilación actual. Algunos por su parte incluso pueden servir de ayuda en la depuración del proceso de compilación. Aquellos que estén interesados en optimizaciones adicionales tengan en cuenta que existen parámetros que afectan el ensamblado del núcleo, el empaquetamiento e incluso la inicialización del núcleo.

El resto de este capítulo examina la funcionalidad de varios parámetros y las acciones disponibles de genkernel. Algunos de los parámetros tienen variantes que llevan a cabo la operación contraria. Dichas variantes tienen antepuesto el prefijo no- y sus efectos se encierran dentro de paréntesis cuadrados, [].

Parámetros de Configuración

Los parámetros de configuración listados abajo le ayudan a decidir qué características deberían estar activadas o no en el núcleo previo a su compilación. Incluso puede elegir si el archivo de configuración creado en el proceso debería ser o no guardado. Los siguientes son los parámetros principales de configuración:

  • --no-menuconfig: Activa [o desactiva] el comando make menuconfig (que invoca a la utilidad de configuración interactiva del núcleo basada en menús de pantalla) antes de compilar el núcleo.
  • --gconfig: Provee la utilidad de configuración del núcleo que depende de las bibliotecas GTK+-. La ventaja de esta opción es que la mayoría de los usuarios encuentran que usar esta herramienta hace más fácil y clara la configuración del núcleo ya que se basa en el sistema X-Window. Su desventaja es que necesita el sistema X-Window para usarla, así que no funcionará en la línea de comandos.
  • --xconfig: Provee la utilidad de configuración del núcleo que depende de las bibliotecas QT. La ventaja de esta opción es que la mayoría de los usuarios encuentran que usar esta herramienta hace más fácil y clara la configuración del núcleo ya que se base en el sistema X-Window. Su desventaja es que necesita el sistema X-Window para usarla, así que no funcionará en la línea de comandos.
  • --no-save-config: Guarda [o no] el archivo de configuración delnúcleo a un archivo en el directorio /etc/kernels/ para uso posterior.

Parámetros de Compilación

Los siguientes parámetros normalmente hacen efecto durante la compilación actual:

  • --kerneldir=/ruta/a/las/fuentes/: Especifica una ubicación alternativa a las fuentes del núcleo en vez de la ubicación por defecto /usr/src/linux/.
  • --kernel-config=/ruta/al/archivo/de/configuración: Especifica qué archivo alternativo de configuración del núcleo será usado en vez del archivo por defecto /ruta/a/las/fuentes/.config.
  • --module-prefix=/ruta/al/directorio/de/prefijo: Especifica un prefijo al directorio donde serán instalados los módulos del núcleo (la ruta por defecto es el directorio /lib/modules/).
  • --no-clean: Activa [o desactiva] el comando make clean antes de compilar su núcleo. El comando make clean elimina todos los archivos objeto y dependencias del árbol de fuentes del núcleo.
  • --no-mrproper: Activa [o desactiva] el comando make mrproper antes de compilar su núcleo. Tal como el comando make clean, make mrproper elimina todos los archivos objeto y dependencias del árbol de fuentes del núcleo. Sin embargo, los archivos de configuración anteriores (en /ruta/a/las/fuentes/.config o /ruta/a/las/fuentes/config.old) también serán borrados del árbol de fuentes del núcleo.
  • --oldconfig: Ejecuta el comando make oldconfig, el cual intenta reunir información de configuración de la arquitectura del sistema a partir del guión genérico ubicado en /usr/share/genkernel/. Este es un proceso no-interactivo; no se requiere el usuario dé información. También, si se usa --oldconfig junto con --clean, este último parámetro es negado lo que resulta en la activación del parámetro --no-clean.
  • --callback="echo Hola": Realiza una llamada a los argumentos especificados (echo Hola, en este caso) luego de que se hayan compilado el núcleo y los módulos relevantes, pero antes de compilar la imagen de initrd. Esto puede ser útil si quiere instalar módulos externos en la imagen initrd invocándolos a través de la llamada "callback" y redefiniendo el grupo de módulos de genkernel.
  • --no-install: Activa [o desactiva] el comando make install, que instala su nueva imagen del núcleo, el archivo de configuración, la imagen initrd y el mapa de símbolos del sistema en su partición boot ya montada. Así mismo se instalarán los módulos compilados.
  • --no-initrdmodules: Esta opción no copia ningún módulo al initrd creado por genkernel. Este parámetro es una excepción a la regla del prefijo no-; al omitir este prefijo crea un parámetro inválido de genkernel.
  • --genzimage: Crea la imagen initrd previo a la imagen del núcleo. (Este hack actualmente sólo es válido en los sistemas Pegasos PPC).

Parámetros del Compilador

Genkernel soporta los siguientes parámetros que pueden ser pasados a aplicaciones relevantes mientras está siendo ensamblado el núcleo. Dichos parámetros hacen efecto sobre el compilador usado para el proceso de compilación del núcleo aunque a un nivel mucho más bajo.

  • --kernel-cc=algúnCompilador: Especifica qué compilador utilizar para compilar el núcleo.
  • --kernel-ld=algúnEnlazador: Define el enlazador que debe ser utilizado durante el proceso de compilación de su núcleo.
  • --kernel-as=algúnEnsamblador: Especifica qué ensamblador utilizar para ensamblar el núcleo.
  • --kernel-make=algúnMake: Define una alternativa para GNU Make a utilizar durante la compilación del núcleo.
  • --utils-cc=algúnCompilador: Especifica que compilador utilizar para compilar las utilidades auxiliares.
  • --utils-ld=algúnEnlazador: Define el enlazador que debe ser utilizado durante el proceso de compilación de las utilidades auxiliares.
  • --utils-as=algúnEnsamblador: Especifica qué ensamblador utilizar para ensamblar las utilidades auxiliares.
  • --utils-make=algúnMake: Define una alternativa para GNU Make a usar durante la compilación de las utilidades auxiliares.
  • --makeopts=-jX: Define el número de hebras concurrentes que puede implementar la utilidad make mientras está siendo compilado el núcleo (y sus utilitarios). La variable 'X' es un número que se obtiene al sumar uno (1) al número de procesadores usados por el sistema. Así, para un sistema que tenga una CPU, el parámetro apropiado es -j2; un sistema con 2 procesadores usará el parámetro -j3 y así sucesivamente. (Un sistema con un sólo procesador que soporte la tecnología Hyper-Threading™ (HT) puede usar el parámetro -j3 toda vez que se haya activado el soporte de Procesamiento Múltiple Simétrico (SMP) en el núcleo).

Parámetros de Depuración

El uso de parámetros de depuración durante el proceso de compilación del núcleo controla la cantidad de información que se reporta, así como la presentación de dicha información.

  • --debuglevel=NivelDeVerbosidad: Controla el nivel de verbosidad de la información que entrega genkernel. La variable NivelDeVerbosidad es un entero cuyo valor está entre 0 y 5. El nivel '0' representa la mínima cantidad de información de salida mientras que '5' entrega tanta información como es posible acerca de las actividades de genkernel durante el proceso de compilación del núcleo.
  • --debugfile=/ruta/al/archivo/de/salida: Ignora el valor ajustado por el parámetro --debuglevel y envía todos los datos de depuración generados por genkernel al archivo de salida especificado, el cual se ubica por defecto en /var/log/genkernel.log.
  • --no-color: Activa [o desactiva] la salida en colores de la información de depuración (generada por genkernel) usando secuencias de escape.

Parámetros de Inicialización

Los parámetros indicados aquí son usados para crear ciertos efectos durante el inicio del sistema. Algunos de estos parámetros son meramente para efectos de estética mientras que otros pueden ser esenciales para la activación de algunas características en el sistema.

  • --no-bootsplash: Activa [o desactiva] el soporte para la pantalla de presentación de arranque en el initrd que genkernel va a construir. Esta característica está soportada en un número limitado de arquitecturas y se requiere de un núcleo que también le dé soporte.
  • --no-gensplash: Activa [o desactiva] el soporte para gensplash en el initrd que genkernel va a construir. El utilitario gensplash tiene la intención de ser el reemplazo de bootsplash y está diseñado para su uso con núcleo de las series 2.6.X. Para anular el tema por defecto usado por gensplash use el parámetro --gensplash=TemaPreferido (donde TemaPreferido es el título de uno de los directorios ubicados dentro del directorio /etc/splash/.
  • --gensplash-res=ResoluciónPreferida: Este parámetro le permite seleccionar las resoluciones de pantalla de arranque soportadas en el initrd durante el inicio del sistema. Esto es útil por dos motivos: Primero, que puede seleccionar las resoluciones de pantalla de arranque que sólo son relevantes a su sistema. Segundo, evita hacer uso de mayor espacio en disco requerido por initrd (puesto que initrd no ofrece soporte para aquellas resoluciones irrelevantes a la configuración de su sistema). No obstante, puede que desee omitir este parámetro si el núcleo está siendo compilado para un CD de Instalación; esto permite soporte de gensplash para todas las resoluciones posibles.
  • --do-keymap-auto: Fuerza la selección del mapa de teclado durante la secuencia de arranque.
  • --lvm2: Incluye soporte de almacenamiento vía Administración Lógica de Volúmenes (LVM2) a partir de binarios estáticos, si están disponibles en el sistema. Los binarios (estáticos) de LVM2 se compilan en caso de no estar presentes. Asegúrese de instalar el paquete lvm2 en su sistema con emerge lvm2 antes de activar este parámetro y revise la Guía de Instalación de LVM2 en Gentoo.
  • --evms2: Incluye suporte de almacenamiento usando el Sistema de Administración Empresarial de Volúmenes (EVMS2), si está disponible. Asegúrese de instalar el paquete evms en su sistema con USE=static emerge evms2 antes de usar este parámetro de genkernel. (Al omitir el parámetro USE=static durante la instalación del paquete fallará al incluir los binarios estáticos necesarios).
  • --dmraid: Incluye suporte para DMRAID; la utilidad que crea mapeos RAID usando el subsistema de mapeo de dispositivos del núcleo. DMRAID descubre, activa, desactiva y muestra las propiedades de conjuntos de software RAID (por ejemplo, ATARAID) y particiones DOS contenidas.
  • --luks: Incluye soporte para el Sistema de Clave Unificada de Linux (en inglés, Linux Unified Key Setup o LUKS. Esto permitirá usar un dispositivo encriptado con LUKS que contenga el sistema raíz de archivos. En el gestor de arranque se coloca el dispositivo encriptado como el valor de crypt_root (y real_root será el dispositivo desencriptado que creará LUKS).
  • --linuxrc=/ruta/a/su/linuxrc: Especifica la ruta al archivo creado por el usuario y denominado linuxrc — un guión inicializado durante la etapa de inicio del núcleo previo al proceso de arranque. (La ubicación por defecto del guión linuxrc debería ser el directorio /usr/share/genkernel/) Este guión le permite iniciar el arranque de un pequeño y modular núcleo y cargar los drivers necesarios (como módulos) por el sistema.
  • --cachedir=/ruta/a/un/directorio/alternativo/: Anula la ubicación por defecto del caché usado mientras se compila el núcleo.
  • --tempdir=/ruta/al/nuevo/directorio/temporal: Especifica la ubicación del directorio temporal usado por genkernel mientras compila el núcleo.
  • --unionfs: Incluye soporte del Sistema de Unificación de Archivos en la imagen del initrd.

Parámetros misceláneos

Genkernel también soporta una serie de otros parámetros que no pueden clasificarse en las categorías descritas anteriormente:

  • --mountboot: Detecta si el directorio /boot/ necesita o no ser montado en una partición separada. Revisará el archivo /etc/fstab para ver cómo montar la partición boot en un sistema de archivos (si es necesario).
  • --kernname=Sobrenombre: Le permite modificar el nombre del núcleo y las imagenes initrd en el directorio /boot/, de manera que las imagenes producidas por el núcleo sean kernel-Sobrenombre-version e initramfs-Sobrenombre-version.

Acciones posibles

Una acción le dice a genkernel qué construir. Actualmente, se reconocen las siguientes acciones:

  • initrd: Construye solamente la imagen initrd
  • bzImage: Construye solamente la imagen del núcleo
  • kernel: Construye solamente la imagen del núcleo y los módulos
  • all: Construye todas las etapas — initrd, imagen del núcleo y módulos

La última acción, all, es la que se recomienda para la mayoría de los usuarios pues construye las etapas requeridas para tener un núcleo funcional. Recuerde, una acción simplemente le dice a genkernel qué construir y no qué instalar.

Configuración del Gestor de Arranque

Para configurar genkernel de modo que funcione con su gestor de arranque, se deberían hacer tres o cuatros cambios al archivo de configuración del gestor:

  1. Añada los parámetros del núcleo root=/dev/ram0 e init=/linuxrc para pasarles a la imagen del kernel.
  2. Añada por ejemplo real_root=/dev/hda3, a los parámetros de núcleo que pasamos a la imagen en caso que /dev/hda3 sea su partición de raíz.
  3. Si está utilizando la pantalla de presentación de arranque (bootsplash), añada un parámetro correcto para el modo de pantalla, por ejemplo vga=0x317, así como splash=verbose o splash=silent según el nivel de detalle que desee.
  4. Añada initrd a la configuración de su gestor de arranque; véase El Manual de Gentoo para aprender como hacerlo con el tipo de gestor de arranque que posee.

3.  Opciones de configuración

Editando /etc/genkernel.conf

Pasar parámetros a genkernel desde la línea de comandos puede ser engorroso, especialmente si tiene cerca de una docena de parámetros:

Listado de Código 3.1: Ejecutando genkernel (sobrecargado con parámetros)

# genkernel --debuglevel=5 --no-color --no-mrproper --clean --gensplash \
--kerneldir=/ruta/alternativa/a/las/fuentes/del/núcleo --install --menuconfig \
--kernel-config=/ruta/al/archivo/de/configuración --save-config --mountboot all

Afortunadamente existe un archivo de configuración donde se puede ajustar (o cambiar) la mayoría de las opciones básicas en la medida que sea necesario. Lo que sigue a continuación es un resumen de las opciones más relevantes:

  • MENUCONFIG=[yes|no]: Esta opción es equivalente al parámetro --menuconfig usado por genkernel, que a su vez usa el comando make menuconfig para invocar la utilidad de configuración del núcleo basada en línea de comandos. Para invocar la utilidad automáticamente durante la configuración del núcleo mediante este guión, ajuste aquí la opción 'yes', de lo contrario elija 'no'.
  • CLEAN=[yes|no]: Al ajustar esta opción a 'yes' equivale al parámetro --clean usado por genkernel e invoca el comando make clean para eliminar todos los archivos objeto y dependencias del árbol de fuentes del núcleo. Por el contrario, al ajustar esta opción a 'no' crea un efecto de cascada — que es equivalente al parámetro --no-clean de genkernel y que inhabilita el comando make clean e implica el parámetro --no-mrproper de genkernel — lo que esencialmente anula el comando make mrproper.
  • MRPROPER=[yes|no]: Ajustar esta opción a 'yes' equivale al parámetro --mrproper usado por genkernel e invoca el comando make mrproper, el cual elimina por completo los archivos de configuración presentes en el árbol de fuentes del núcleo. Seleccionar 'no' es equivalente al parámetro --no-mrproper, que desactiva el comando make mrproper.
  • MOUNTBOOT=[yes|no]: Ajustar esta opción a 'yes' equivale al parámetro --mountboot y monta automáticamente el directorio /boot/ (de ser necesario) en tiempo de compilación. Si el directorio /boot/ está en una partición separada considere activar esta opción puesto que es esencial más tarde y no tendrá que recordarlo en ese momento.
  • SAVE_CONFIG=[yes|no]: Luego de configurar el núcleo, las opciones seleccionadas se almacenan en .config en el árbol de fuentes del núcleo. Este guión puede ser sobreescrito durante la próxima compilación del núcleo o incluso eliminado del árbol de fuentes del núcleo. Eligiendo 'yes' equivale al parámetro --save-config y guarda todas las opciones seleccionadas durante la configuración del núcleo en un guión en el directorio /etc/kernels/. Si elige 'no' mantiene el status quo.
  • USECOLOR=[yes|no]: Ajustar esta opción a 'yes' es equivalente al parámetro --color que muestra la salida de genkernel en colores para facilitar la depuración (cuando es necesario).
  • DEBUGLEVEL=[0|1|2|3|4|5]: Esta opción es para ajustar el nivel de verbosidad de la salida que genera genkernel — Si ajusta esta opción a '0' con --debuglevel=0 hará que se suprima toda la salida generada por genkernel; mientras que ajustándola a '5' con --debuglevel=5 tendrá el efecto contrario, es decir, mostrará al usuario toda la salida generada por genkernel.

Al elegir las opciones apropiadas en /etc/genkernel.conf, puede reducir hasta la mitad del número de parámetros pasados a genkernel en la línea de comandos.

Listado de Código 3.2: Ejecutando genkernel (con parámetros) luego de usar genkernel.conf

# genkernel --gensplash --kerneldir=/ruta/alternativa/a/las/fuentes/del/núcleo \
--kernel-config=/ruta/al/archivo/de/configuración --install all

Los resultados obtenidos por ambos métodos son idénticos pero el último tiene la mayor parte de las opciones almacenadas en un guión que puede ser modificado después.

4.  Arranque por Red con genkernel

Arranque por Red a partir de un CD de Instalación

El utilitario genkernel puede construir el núcleo y las imagenes initrd que dan soporte para arranque por red, o netbooting. Con suerte, debería ser capaz de hacer netboot en cualquier computador reciente en el ambiente ofrecido por el CD de Instalación.

La magia está en el guión linuxrc de genkernel: este intentará realizar un netmount (montaje vía red) del CD de Instalación usando NFS. A partir de allí los guiones de inicio del CD de Instalación pueden tomar el control como si el CD estuviera presente de forma local.

Construyendo el Núcleo y las Imagenes Initrd con Soporte para Arranque por Red

Para activar el soporte de arranque por red incluya las siguientes opciones mientras configura el núcleo:

Aviso: El soporte para arranque por red con genkernel es experimental y puede presentar bugs.

Primero, la imagen del núcleo debe incluir los drivers para sus tarjetas de interfaz de red (NIC). Normalmente, los drivers para tales dispositivos serán compilados como módulos. Sin embargo, es esencial (para el arranque por red) tener dichos drivers compilados directamente en la imagen del núcleo y no como módulos.

Listado de Código 4.1: Configurando un núcleo de la serie 2.6.x para dar soporte al driver de las tarjetas de red

Device Drivers --->
   Networking Support --->
      Ethernet (10 or 100Mbit)  --->
         [*] Ethernet (10 or 100Mbit)
         <*>   El driver para su tarjeta de red
(Asegúrese de seleccionar <*> y no <M>)

Segundo, sugerimos que active las opciones: IP: kernel level autoconfiguration y IP: DHCP support. Esto evita una capa innecesaria de complejidad ya que la dirección IP y la ruta NFS al CD de instalación pueden ser configuradas en un servidor DHCP. Por supuesto, esto significa que la línea de comandos del núcleo permanecerá constante para todas las máquinas — lo que es muy importante para realizar etherbooting (arranque vía ethernet).

Listado de Código 4.2: Configurando un núcleo de la serie 2.6.x para dar soporte a DHCP

Device Drivers --->
   Networking Support --->
      Networking options
         [*] TCP/IP networking--->
         [*]   IP: kernel level autoconfiguration
         [*]     IP: DHCP support
(Estas opciones le dicen al núcleo que envíe una petición DHCP al iniciar
el arranque)

Adicionalmente, debería activar SquashFS ya que la mayoría de los CD de Instalación modernos de Gentoo lo requieren. El soporte para SquashFS no se incluye en el árbol genérico de fuentes del núcleo. Para activar SquashFS, debe conseguir y aplicar los parches necesarios para las fuentes genéricas del núcleo o instalar gentoo-sources.

Listado de Código 4.3: Configurando el núcleo para dar soporte a SquashFS

File systems--->
   Miscellaneous filesystems --->
      [*] SquashFS 2.X - Squashed file system support

Una vez completado el proceso de compilación, cree un tarball (tar.gz) que contenga los módulos del núcleo. Este paso es solamente necesario si su versión del núcleo no concuerda con la versión de la imagen del núcleo del CD de Instalación.

Listado de Código 4.4: Creando un tarball comprimido que contenga los módulos del núcleo

(Crea un tar.gz que contiene todos los módulos)
# cd /
#  tar -cf /tmp/modules-X.Y.Z.tar.gz /lib/modules/X.Y.Z/

Dependiendo de su mecanismo de arranque por red necesitará hacer alguno de los siguientes pasos:

Listado de Código 4.5: Creando una imagen de arranque

(Crea una imagen de etherboot)
# emerge mknbi
# cd /boot
# mkelf-linux -params="root=/dev/ram0 init=/linuxrc ip=dhcp" núcleo... initrd... > etherboot.img

(Crea una imagen OpenBoot / SPARC64 TFTP)
# emerge sparc-utils
# cd /boot
# elftoaout kernel... -o kernel.aout
# piggyback64 kernel.aout System.map-... initrd-...
# mv kernel.aout openboot.img (Esta en la imagen de arranque)

(PXE no necesita de más pasos, el núcleo e initrd pueden ser usados tal cual)

Finalmente, copie este núcleo a su servidor TFTP. Los detalles dependen de la arquitectura y están más allá del alcance de esta guía. Por favor, consulte la documentación de su plataforma.

Configuración de NFS

Para configurar un recurso compartido de NFS que contenga el CD de Instalación, use el dispositivo loop para montar la imagen ISO y luego copie los contenidos del CD en el recurso NFS. Como característica extra, los guiones initrd de genkernel extraerán todos los archivos tar.gz ubicados en el directorio /nfs/livecd/add/. Todo lo que debe hacer aquí es copiar el archivo modules-X.Y.Z.tar.gz al directorio /nfs/livecd/add/.

Listado de Código 4.6: Preparando el recurso compartido NFS

(Esto asume que /nfs/livecd es un recurso NFS compartido)
# mount /tmp/gentoo-livecd.iso /mnt/cdrom -o loop
# cp -p /mnt/cdrom /nfs/livecd
# umount /mnt/cdrom

(Copie modules.tar.gz en /add)
# mkdir /nfs/livecd/add
# cp /tmp/modules-X.Y.Z.tar.gz /nfs/livecd/add

Configuración de DHCP

Las imagenes del arranque por red (netboot) le pedirán a su servidor DHCP una IP así como el parámetro de la ruta raíz. Ambos pueden ser especificados por máquina usando un dirección MAC para identificarlas:

Listado de Código 4.7: Configuración de ejemplo de cliente en dhcpd.conf

...

host netbootableMachine {
         hardware ethernet 11:22:33:44:55:66;
         fixed-address 192.168.1.10;
         option root-path "192.168.1.2:/nfs/livecd";
}
# Aquí, 192.168.1.2 el servidor NFS
# Mientras que 192.168.1.10 será la dirección IP de la máquina que arrancará por red
...

Instrucciones de Arranque por Red

El arranque por red es nuevamente muy dependiente de la plataforma. La parte importante es especificar los parámetros ip=dhcp y init=/linuxrc en la línea de comandos del núcleo pues esto activará la interfaz de red y le dirá a los guiones initrd que monten el CD de Instalación vía NFS. Aquí le mostramos algunos consejos dependientes de la plataforma:

Listado de Código 4.8: Instrucciones de Arranque por Red

# Etherboot - Inserte el disco de etherboot en la disquetera y reinicie
# La línea de comandos del núcleo fue especificada cuando se construyó la imagen

# Sparc64 - Presione Stop-A en el intérprete de arranque
ok boot net ip=dhcp init=/linuxrc

# PXE - Configure pxelinux (parte de syslinux),
luego cree un archivo pxelinux.cfg/default similar a:

DEFAULT gentoo
TIMEOUT 40
PROMPT 1

LABEL gentoo
    KERNEL kernel-X.Y.Z
    APPEND initrd=initrd-X.Y.Z root=/dev/ram0 init=/linuxrc ip=dhcp

5.  Conclusión

¿Automatizar o no automatizar?

El propósito de genkernel es otorgar un alternativa (más fácil) a la clásica y forma efectiva de compilar el núcleo. Como siempre, es libre de decidir si quiere o no automatizar el proceso de compilación del núcleo.



Imprimir

Actualizado 20 de junio, 2007

Sumario: Esta guía intenta proporcionar un marco de referencia para todas las funciones proporcionadas por genkernel.

Tim Yamin
Autor

Jimi Ayodele
Colaborador

Thomas Seiler
Soporte NFS

John Christian Stoddart
Traductor

José Luis Rivero
Traductor

Ervin Sarkisov
Traductor

Andrés Pereira
Traductor

Donate to support our development efforts.

Support OSL

Support OSL

Gentoo Centric Hosting: vr.org

VR Hosted

Tek Alchemy

Tek Alchemy

SevenL.net

SevenL.net

Global Netoptex Inc.

Global Netoptex Inc.

Linux World Expo

Linux World Expo

Copyright 2001-2008 Gentoo Foundation, Inc. Questions, Comments? Contact us.