Manual de FreeBSD
Anterior | Capítulo 12. El proceso de arranque en FreeBSD | Siguiente

# 12.3. El RMA y las etapas de arranque uno, dos y tres

## 12.3.1. RMA, `/boot/boot0`

El RMA de FreeBSD, se localiza en `/boot/boot0`. Este es una copia del RMA, ya que el RMA real debe localizarse en una parte especial del disco duro, fuera de la área de FreeBSD.

El fichero `boot0` es muy simple, dado que el programa en el RMA sólo puede ser de 512 bytes. Si usted ha instalado el RMA de FreeBSD y ha instalado varios sistemas operativos en sus discos duros, entonces al momento de arrancar el sistema, visualizará una pantalla similar a la siguiente.

Ejemplo 12-1. Pantalla `boot0`

    F1 DOS
    F2 FreeBSD
    F3 Linux
    F4 ??
    F5 Drive 1

    Default: F2

Es sabido que otros sistemas, en particular Windows 95, sobreescriben el RMA con el suyo. Si esto le sucede, o bien desea reemplazar su RMA actual con el RMA de FreeBSD, entonces puede utilizar las siguientes órdenes.

    # fdisk -B -b /boot/boot0 dispositivo

Donde `dispositivo` es aquel, desde el cual usted pretende arrancar el sistema, tal como `ad0` para el disco conectado al primer IDE, `ad2` para el disco maestro conectado al IDE secundario, `da0` para el primer disco SCSI, y así sucesivamente.

Por otro lado, si usted es un usuario de Linux, y prefiere que la aplicación LILO controle el proceso de arranque, puede editar el fichero `/etc/lilo.conf` para incluir a FreeBSD, o bien seleccionar la opción `Leave The Master Boot Record Untouched` durante el proceso de instalación. Si ha instalado el gestor de arranque de FreeBSD, puede arrancar Linux y modificar el fichero de configuración de LILO, `/etc/lilo.conf`, añadiendo la siguiente opción:

    other=/dev/hdXY
    table=/dev/hdb
    loader=/boot/chain.b
    label=FreeBSD

lo que permitirá el arranque de FreeBSD y Linux, por medio de LILO. En nuestro ejemplo hemos utilizado `XY` para especificar el disco utilizado y su partición. Si usted utiliza un sistema SCSI, deberá cambiar `/dev/hdXY` por algo similar a `/dev/sdXY`, que nuevamente utiliza la sintáxis `XY`. La opción `loader=/boot/chain.b` puede omitirse si usted cuenta con ambos sistemas operativos en el mismo disco. Una vez que esto se ha completado, puede ejecutar `/sbin/lilo -v` para que se actualicen los cambios en el sistema, lo cual deberá verificarse con los mensajes que aparezcan en pantalla.

> Nota: N de T: La opción mencionada como; `Leave The Master Boot Record Untouched`, se mostrará tal cual aparece en este documento, una vez que ha terminado la fase de partición del disco duro.

## 12.3.2. Etapa uno, `/boot/boot1`, y etapa dos, `/boot/boot2`

Conceptualmente las estapas uno y dos, son parte del mismo programa, en la misma área del disco. Por cuestiones de espacio se han dividido en dos, pero estas siempre se instalaran de manera conjunta.

Estas son localizadas en el sector de arranque, de la partición de arranque, que es donde boot0, o cualquier otro programa del RMA espera encontrar el programa que dará continuación al proceso de arranque. Los ficheros localizados bajo el directorio `/boot` son copias de los ficheros reales, que se localizan fuera del sistema de ficheros de FreeBSD.

El fichero `boot1` es muy simple, en virtud de que sólo puede tener un tamaño de 512 bytes, y conocer simplemente del etiquetador de discos de FreeBSD (disklabel), el cual almacena la información de las particiones, para efecto de localizar y ejecutar `boot2`.

El fichero `boot2` es un poco más sofisticado, y comprende lo suficiente del sistema de ficheros de FreeBSD como para localizar ficheros en el, y puede proveer una interfaz simple, para seleccionar el kernel o cargador que deberá ejecutarse.

En virtud de que el cargador (loader) es mucho más sofisticado, y provee una configuración de arranque más sencilla de utilizar, `boot2` la ejecuta normalmente, una vez que ha terminado de solicitar el arranque del kernel directamente.

Ejemplo 12-2. Pantalla de `boot2`

    >> FreeBSD/i386 BOOT
    Default: 0:ad(0,a)/kernel
    boot:

Si alguna vez requiere reemplazar los ficheros `boot1` y `boot2` instalados, utilice disklabel(8).

    # disklabel -B partición

Donde `partición` es el disco y partición del cual pretende arrancar el sistema, tal como `ad0s1` para la primer partición del disco Mastro--Primario.

> Modo peligrosamente dedicadoSi sólo utiliza el nombre del disco, tal como `ad0`, al usar disklabel(8) creará un disco peligrosamente dedicado, sin partición alguna. Seguramente esto no es lo que desea hacer, así que asegurese dos veces antes de presionar la tecla Return cuando utilice disklabel(8).

## 12.3.3. Etapa tres, `/boot/loader` (cargador de arranque)

El cargador es la etapa final de las tres etapas del mecanismo de arranque, y esta localizado en el sistema de ficheros, normalmente como `/boot/loader`.

El cargador pretende ser un metodo amistoso de configuración, utilizando una serie de órdenes integradas de fácil uso, respaldado por un intérprete más poderoso, con una serie de órdenes de mayor complejidad.

### 12.3.3.1. Flujo del programa cargador

Durante la inicialización del sistema, el cargador hará una comprobación en busca de una consola y discos, y sabra de que disco se encuentra arrancando. Establecerá las variables necesarias, y posteriormente es iniciado el intérprete donde se pueden introducir órdenes desde un script o de manera interactiva.

Posteriormente el cargador leerá el fichero `/boot/loader.rc`, que por default lee la información del fichero `/boot/defaults/loader.conf` que a su vez, establece las variables correspondientes y verifica en el fichero `/boot/loader.conf` los cambios locales que se hayan hecho, para establecer valores de las variables modificadas. Una vez llevado a cabo esto, `loader.rc` actua sobre estas variables, cargando cualquier módulo y kernel seleccionado.

Finalmente, y por default, el cargador hace una pausa contando 10 segundos y en espera de que al presionar una tecla se interrumpa el proceso, de no ser así, procederá a arrancar el kernel. En el caso de que al hacer esta pausa, se haya presionado una tecla (diferente de Return), el proceso será interrumpido y se nos mostrará un prompt, que entiende el conjunto de órdenes de fácil-uso, y donde el usuario puede ajustar ciertas variables, cargar y descargar todos los módulos, y también arrancar o reiniciar el sistema.

### 12.3.3.2. Órdenes internas del cargador

A continuación se presentan las órdenes más comunes del cargador. Para ver una descripción detallada de los mismos, por favor consulte la página de manual de loader(8)

autoboot `segundos`

  Procede a iniciar el arranque del sistema, si es que no es interrumpido el periodo dado, en segundos. Despliega una cuenta regresiva, y el tiempo dado es de 10 segundos.

boot [`-opciones`] [`nombre_del_kernel`]

  Procede a iniciar el kernel de manera inmediata, con las opciones dadas, si es que fuera el caso y el kernel especificado, si es que se especifica alguno.

boot-conf

  Rehace la configuración automática de modulos en función a las variables definidas, como sucede al arrancar. Esta opción sólo tiene sentido utilizarla, si en primer lugar hemos usado `unload`, y hemos modificado alguna variable, siendo lo más común el `kernel`.

help [`tema`]

  Muestra la ayuda de un tema específico, que lee del fichero `/boot/loader.help`. Si el tema que se indica es `index`, entonces se mostrará una lista de todos los temas disponibles.

include `fichero` ...

  Procesa el fichero que se ha especificado. El fichero se lee e interpreta línea por línea. Cualquier error detendrá inmediatamente a include.

load [`-t` `tipo`] `fichero`

  Carga el kernel, modulo del kernel, o el fichero del tipo dado, en base al fichero especificado. Cualquier argumento que se añada, será pasado al fichero.

ls [`-l`] [`ruta`]

  Despliega un listado de todos los ficheros que se localizan en la ruta especificada, o en el directorio raíz, si es que no se le especifica ruta alguna. Si se utiliza la opción `-l`, también se mostrara el tamaño de los ficheros.

lsdev [`-v`]

  Nos muestra una lista de todos los dispositivos desde los cuales puede ser posible cargar modulos. Si se incluye la opción `-v`, el listado que se obtiene cuenta con más detalle.

lsmod [`-v`]

  Despliega los módulos cargados. Si se utiliza la opción `-v`, se mostraran más detalles.

more `fichero`

  Despliega el contenido del fichero especificado, haciendo una pausa a cada numero determinado de `LINEAS` mostradas.

reboot

  Reinicia el sistema de forma inmediata.

set `variable`, set `variable`=`valor`

  Especifica los valores de las variables de entorno del cargador.

unload

  Remueve todos los módulos cargados.

### 12.3.3.3. Ejemplos de uso del cargador

He aqui unos ejemplos prácticos sobre el uso correcto del cargador.

- Para arrancar simplemente su kernel usual, pero en modo mono-usuario, deberá hacer lo siguiente:

      boot -s

- Para descargar su kernel usual y sus módulos correspondientes, y posteriormente cargar su kernel anterior (o cualquier otro):

      unload
      load kernel.old

  Puede utilizar `kernel.GENERIC` para referirse al kernel generico actual que viene con la instalación, o bien puede utilizar `kernel.old` para hacer referencia al kernel anterior (por ejemplo, cuando ha actualizado su sistema o ha recompilado su propio kernel).

  > Nota: Utilice lo siguiente para cargar sus módulos actuales con otro kernel:

  >     unload
  >     set kernel="kernel.old"
  >     boot-conf

- Para cargar un escrito de configuración (script que de forma automática hará todo lo que normalmente hace usted de forma manual al momento de ejecutarse el configurador de arranque):

      load -t escrito_de_configuración /boot/kernel.conf

Anterior | Inicio | Siguiente
El problema que representa arrancar el sistema | Subir | Interacción con el kernel durante el arranque

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