El proceso de arranque en &os;Sinopsisiniciomecanismo de arranque (bootstrap)Al proceso de inicio del sistema y carga del sistema operativo
se le conoce como mecanismo de arranque (bootstrap),
o simplemente
arranque (booting). El proceso de arranque de FreeBSD
provee de gran flexibilidad al configurar lo que ocurre cuando se
inicia el sistema, permitiendole seleccionar de diferentes sistemas
operativos instalados en el mismo ordenador, o inclusive diferentes
versiones del mismo sistema oprativo o kernels instalados.Este capítulo detalla las opciones de configuración
que puede manejar y como personalizar el proceso de arranque de
FreeBSD. Esto incluye todo lo que sucede hasta que el kernel de
FreeBSD comienza con la comprobación de dispositivos y se
inicializa &man.init.8;. En caso de que usted desconozca cuando ocurre
todo esto, esto sucede cuando el color del texto que aparece al iniciar
el sistema, cambia de blanco a gris.Una vez que concluya con la lectura de este capítulo, usted
sabrá:Cuales son los componentes del mecanismo de arranque de FreeBSD,
y como es que interactuan entre sí.Las opciones que puede manejar con los componentes del mecanismo
de arranque de FreeBSD, para controlar el proceso de inicio
del sistema.Sólo x86El presente capítulo describe únicamente el
proceso de inicio, para sistemas FreeBSD que corren en plataformas
Intel x86.El problema que representa arrancar el sistemaEl encender una computadora e iniciar el sistema operativo, trae
consigo un dilema interesante. Por definición, la computadora
no sabe hacer nada, hasta que el sistema operativo ha sido cargado. Esto
incluye la ejecución de programas desde el disco duro. Así
que este es el dilema; si la computadora no sabe hacer nada hasta que se
cargue el sistema operativo, y el sistema operativo es un conjunto de
programas que residen en el disco duro, ¿Cómo es que
arranca el sistema operativo?Este problema se asemeja a un problema del libro Las
Aventuras del Barón Munchausen. Donde un personaje ha
caido parcialmente en un hoyo, y ha podido salir al tomarse de las cintas
de sus botas y jalarse hacia fuera. En los años mozos de la
computación, el término utilizado para hablar sobre el
proceso de carga del sistema operativo era mecanismo de
arranque (bootstrap), que por efectos de simplificación
ahora conocemos como arranque (booting).En equipos con arquitectura x86, el Sistema Básico de
Entrada/Salida (BIOS) es el responsable de cargar el sistema
operativo. Para hacer esto, el BIOS busca en el disco duro el Registro
Maestro de Arranque (RMA) (N de T. Conocido como MBR—Master Boot
Record), el cual debe localizarse en un lugar específico del disco.
El BIOS cuenta con suficiente información, para cargar y ejecutar
el RMA, y asumir que el RMA puede encargarse del resto de las tareas
necesarias en la carga del sistema operativo.BIOSSistema Básico de Entrada/SalidaSi usted sólo cuenta con un sistema operativo instalado en
su disco duro, el RMA estándar será suficiente. Este RMA
buscará la primer partición del disco que pueda arrancar, y
posteriormente ejecutará el código restante de dicha
partición, para efecto de completar la carga del sistema
operativo.Si usted cuenta con varios sistemas operativos instalados en su
disco, entonces puede hacer uso de un RMA diferente, uno que despliegue
una lista de los diferentes sistemas operativos, y le permita escoger
cual de ellos desea que se cargue. FreeBSD cuenta con un RMA de este
tipo que puede ser instalado, así como otros distribuidores de
sistemas operativos cuentan con RMAs alternativos.En el caso de FreeBSD, el resto del mecanismo de arranque, está
dividido en tres etapas. La primer etapa es ejecutada por al RMA, que
sabe lo suficiente como para poner a la computadora en un estado
específico y ejecutar la segunda etapa. La segunda etapa puede
hacer un poco más que esto, antes de ejecutar la tercer etapa. La
tercer etapa finaliza el trabajo de carga del sistema operativo. El
trabajo es dividido en tres etapas, debido a las limitantes que tiene
una PC, en cuanto al tamaño de los programas a ejecutar, durante
las etapas uno y dos. El encadenar estas tareas, le permiten a FreeBSD
contar con un arrancador más flexible.kernelinitPosteriormente el kernel es inicializado y comienza con la
comprobación de dispositivos, y prepararlos para su uso. Una
vez que el proceso de arranque del kernel ha finalizado, el kernel
transfiere el control al proceso de usuario &man.init.8;, quien se
asegura de que los discos se encuentren en buen estado para su
uso. Posteriormente &man.init.8; inicia la configuración
fuente a nivel de usuario, que monta los sistemas de ficheros,
configura las tarjetas de red para que pueden comunicarse en la red,
y comunmente inicia todos los procesos que normalmente son ejecutados
en un sistema FreeBSD al arrancar el mismo.El RMA y las etapas de arranque uno, dos y tresRMA, /boot/boot0Registro Maestro de Arranque (RMA)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.Pantalla boot0F1 DOS
F2 FreeBSD
F3 Linux
F4 ??
F5 Drive 1
Default: F2Es 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.&prompt.root; fdisk -B -b /boot/boot0 dispositivoDonde 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
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=FreeBSDlo 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
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.N de T: La opción mencionada como;
, se
mostrará tal cual aparece en este
documento, una vez que ha terminado la fase de
partición del disco duro.Etapa uno, /boot/boot1, y etapa dos,
/boot/boot2Conceptualmente 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.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 &man.disklabel.8;.&prompt.root; disklabel -B particiónDonde 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 &man.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 &man.disklabel.8;.Etapa tres, /boot/loader (cargador de arranque)cargador-de-arranque (boot-loader)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.Flujo del programa cargadorDurante 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.cargadorconfiguración del cargadorPosteriormente 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.Órdenes internas del cargadorA 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
&man.loader.8;autoboot segundosProcede 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
-opcionesnombre_del_kernelProcede 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-confRehace 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
temaMuestra 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 tipoficheroCarga 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 rutaDespliega 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 , también
se mostrara el tamaño de los ficheros.lsdev Nos muestra una lista de todos los dispositivos desde
los cuales puede ser posible cargar modulos. Si se
incluye la opción , el listado
que se obtiene cuenta con más detalle.lsmod Despliega los módulos cargados. Si se utiliza la
opción , se mostraran más
detalles.more ficheroDespliega el contenido del fichero especificado, haciendo
una pausa a cada numero determinado de LINEAS
mostradas.rebootReinicia el sistema de forma inmediata.set variableset
variable=valorEspecifica los valores de las variables de entorno del
cargador.unloadRemueve todos los módulos cargados.Ejemplos de uso del cargadorHe aqui unos ejemplos prácticos sobre el uso
correcto del cargador.modo de arranque mono-usuarioPara arrancar simplemente su kernel usual, pero en modo
mono-usuario, deberá hacer lo siguiente:boot -sPara descargar su kernel usual y sus módulos
correspondientes, y posteriormente cargar su kernel anterior
(o cualquier otro):kernel.oldunloadload kernel.oldPuede 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).Utilice lo siguiente para cargar sus módulos
actuales con otro kernel:unloadset kernel="kernel.old"boot-confPara 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.confInteracción con el kernel durante el arranquekernelinteracción de arranqueUna vez que el kernel ha sido iniciado, ya sea por
el cargador (que es lo
común) o bien por boot2 (sobrepasando el cargador),
examinará las opciones de arranque, en busca de cambios,
y ajustar su comportamiento en caso de ser necesario.kernelopciones de arranqueOpciones de arranque del kernelHe aqui las opciones de arranque más comunes:durante la inicialización del kernel, pregunta por
los dispositivos a utilizar, para montar el sistema de ficheros
raíz.arranque desde una unidad de CDROM.ejecuta UserConfig, la utilidad de configuración
de arranque del kernel.arranca el sistem en modo mono-usuario.imprime mensajes informativos durante el arranque del kernelExisten otras opciones de arranque, por favor vea la página
de ayuda &man.boot.8; para más información al respecto.
TomRhodesEscrito por device.hintsDevice HintsPendiente de TraduccióninitInit: inicialización del proceso de controlYa que el kernel ha finalizado de arrancar, pasará el
control a un proceso de usuario llamado init,
el cual se localiza en /sbin/init, o bien
en la ruta especificada por la variable de entorno
init_path del cargador.Secuencia automática de reinicioLa secuencia automática de reinicio se asegura
de que los sistemas de ficheros disponibles en el sistema
sean consistentes. Si no lo son, y el programa
fsck no puede arreglar estas
inconsistencias, init envia el sistema
a modo monousuario, de
tal forma que el administrador pueda ingresar en él y
arreglar los problemas directamente.Modo monousuariomodo mono-usuarioconsolaA este modo se puede llegar por medio de la secuencia automática de reinicio,
o por medio de la opción en el
arranque de usuario o al establecer la variable
boot_single en el cargador.También desde el modo multi-usuario se puede acceder,
al utilizar shutdown sin la
opción de reinicio () o la de
apagado () del sistema.Si la consola del sistema esta configurada de modo
inseguro en el fichero
/etc/ttys, entonces el sistema
solicitará la contraseña del
superusuario (root), antes de ingresar
al sistema en modo mono-usuario.Una consola insegura en /etc/ttys# name getty type status comments
#
# If console is marked "insecure", then init will ask for the root password
# when going to single-user mode.
console none unknown off insecureUna consola insegura significa que usted
considera como insegura físicamente su consola, por lo
que desea asegurarse de que sólo quien conoce la
contraseña del superusuario puede
ingresar al sistema en modo mono-usuario, y no que desea ejecutar
la consola inseguramente. Esto es, si desea contar con seguridad
escoja la opción insecure, y no
secure.Modo multiusuariomodo multi-usuarioEn el caso de que init encuentre en
buen estado al sistema de ficheros, o una vez que el usuario
ha terminado del modo mono-usuario, el sistema
entrará al modo multi-usuario, en donde comienzan
los ficheros de configuración-fuente del sistema.ficheros rcConfiguración-Fuente(rc)La configuración fuente lee la configuración
por default del fichero
/etc/defaults/rc.conf, y detalles
específicos del sistema desde el fichero
/etc/rc.conf, y posteriormente procede
a montar los sistemas de ficheros del sistema, descritos en
/etc/fstab, iniciar servicios de red,
así como varios demonios del sistema, para finalmente
ejecutar los escritos (scripts) de configuración
instalados por paquetes, localmente.La página de ayuda &man.rc.8; es una buena referencia
para conocer más de este tipo de ficheros, así como
examinar los mismos ficheros.Secuencia de apagadoapagadoUna vez que el apagado sea controlado, por medio de
shutdown, init
ejecutará el escrito /etc/rc.shutdown,
para posteriormente enviar a todos los procesos la señal
TERM, y subsecuentemente la señal
KILL a cualquiera que no haya terminado en
tiempo.