Vous êtes sur la page 1sur 10

Prof.

Jorge Ludeña
* Gestor de arranque
Un gestor de arranque (en inglés «bootloader») es un
programa sencillo que no tiene la totalidad de las
funcionalidades de un sistema operativo, y que está
diseñado exclusivamente para preparar todo lo que
necesita el sistema operativo para funcionar. Normalmente
se utilizan los cargadores de arranque multietapas, en los
que varios programas pequeños se suman los unos a los
otros, hasta que el último de ellos carga el sistema
operativo.
En los ordenadores modernos, el proceso de arranque
comienza cuando la unidad central de procesamiento
ejecuta los programas contenidos en una memoria de sólo
lectura en una dirección predefinida y se configura la
unidad central para ejecutar este programa, sin ayuda
externa, al encender el ordenador.
* Lilo ("Linux Loader") es un gestor de arranque que permite elegir,
entre sistemas operativos Linux y otras plataformas, con cual se ha
de trabajar al momento de iniciar un equipo con mas de un sistema
operativo disponible. Fue desarrollado inicialmente por Werner
Almesberger, actualmente está a cargo de John Coffman.
* LILO funciona en una variedad de sistemas de archivos y puede
arrancar un sistema operativo desde el disco duro o desde un disco
flexible externo . LILO permite seleccionar entre 16 imágenes en el
arranque. LILO puede instalarse también en el master boot record
(MBR).
* Al iniciar el sistema LILO solamente puede acceder a los drivers de
la BIOS para acceder al disco duro. Por esta razón en BIOS antiguas
el área de acceso está limitado a los cilindros numerados de 0 a
1023 de los dos primeros discos duros. En BIOS posteriores LILO
puede utilizar sistemas de acceso de 32 bits permitiéndole acceder
a toda el área del disco duro.
* En las primeras distribuciones de Linux, LILO era el gestor de facto
utilizado para arrancar el sistema. En la actualidad es una segunda
opción en favor del gestor de arranque GRUB.
* GNU GRUB (GNU GRand Unified Bootloader) es un
gestor de arranque múltiple, desarrollado por el
proyecto GNU que se usa comúnmente para iniciar uno,
dos o más sistemas operativos instalados en un mismo
equipo.
* Se usa principalmente en sistemas operativos
GNU/Linux. El sistema operativo Solaris ha usado GRUB
como gestor de arranque en sistemas x86 desde la
revisión 10 1/06.
* GRUB fue inicialmente diseñado e implementado por el
programador Erich Stefan Boleyn como parte del trabajo
en el arranque del sistema operativo GNU Hurd
desarrollado por la Free Software Foundation. En 1999,
Gordon Matzigkeit y Yoshinori Okuji convirtieron a GRUB
en un paquete de software oficial del Proyecto GNU y
abrieron el desarrollo del mismo al público.
* En Linux., el flujo de control durante el arranque es desde el BIOS, al gestor de arranque y al
núcleo (kernel). El núcleo inicia el planificador (para permitir la multitarea) y ejecuta el primer
espacio de usuario (es decir, fuera del espacio del núcleo) y el programa de inicialización (que
establece el entorno de usuario y permite la interacción del usuario y el inicio de sesión),
momento en el que el núcleo se inactiva hasta que sea llamado externamente.
* La etapa del cargador de arranque no es totalmente necesaria. Determinadas BIOS pueden cargar y
pasar el control a Linux sin hacer uso del cargador. Cada proceso de arranque será diferente
dependiendo de la arquitectura del procesador y el BIOS.
* El BIOS realiza las tareas de inicio específicas de la plataforma de hardware.
* Una vez que el hardware es reconocido y se inicia correctamente, el BIOS carga y ejecuta el
código de la partición de arranque del dispositivo de arranque designado, que contiene la fase 1 de
un gestor de arranque Linux. La fase 1 carga la fase 2 (la mayor parte del código del gestor de
arranque). Algunos cargadores pueden utilizar una fase intermedia (conocida como la fase 1.5)
para lograr esto, ya que los modernos discos de gran tamaño no pueden ser totalmente leídos sin
código adicional.
* El gestor de arranque a menudo presenta al usuario un menú de opciones posibles de arranque. A
continuación, carga el sistema operativo, que descomprime en la memoria, y establece las
funciones del sistema como del hardware esencial y la paginación de memoria, antes de llamar a
la función start_kernel().
* La función start_kernel() a continuación realiza la mayor parte de la configuración del sistema
(interrupciones, el resto de la gestión de memoria, la inicialización del dispositivo, controladores,
etc), antes de continuar por separado el proceso inactivo y planificador, y el proceso de Init (que
se ejecuta en el espacio de usuario).
* El planificador toma control efectivo de la gestión del sistema, y el núcleo queda dormido
(inactivo).
* El proceso Init ejecuta secuencias de comandos (Scripts) necesarios para configurar todos los
servicios y estructuras que no sean del sistema operativo, a fin de permitir que el entorno de
usuario sea creado y pueda presentarse al usuario con una pantalla de inicio de sesión.
* El trabajo de Init es "conseguir que todo funcione como debe ser" una vez
que el kernel está totalmente en funcionamiento. En esencia, establece y
opera todo el espacio de usuario. Esto incluye la comprobación y montaje
de sistemas de archivos, la puesta en marcha los servicios de usuario
necesarios y, en última instancia, cambiar al entorno de usuario cuando el
inicio del sistema se ha completado. Es similar a los procesos Init de Unix y
BSD, de la que deriva, pero en algunos casos se ha apartado o se hicieron a
la medida. En un sistema Linux estándar, Init se ejecuta con un parámetro,
conocido como nivel de ejecución, que tiene un valor entre 1 y 6, y que
determina que subsistemas pueden ser operacionales. Cada nivel de
ejecución tiene sus propios scripts que codifican los diferentes procesos
involucrados en la creación o salida del nivel de ejecución determinado, y
son estas secuencias de comandos los necesarios en el proceso de
arranque. Los scripts de Init se localizan normalmente en directorios con
nombres como "/etc/rc...". El archivo de configuración de más alto nivel
para Init es /etc/inittab.
* Durante el arranque del sistema, se verifica si existe un nivel de ejecución
predeterminado en el archivo /etc/inittab, si no, se debe introducir por
medio de la consola del sistema. Después se procede a ejecutar todos los
scripts relativos al nivel de ejecución especificado.
* Después de que se han dado lugar todos los procesos especificados, Init se
aletarga, y espera a que uno de estos tres eventos sucedan:- que procesos
comenzados finalicen o mueran; un fallo de la señal de potencia (energía);
o una petición a través de /sbin/telinit para cambiar el nivel de ejecución.
* El fichero inittab describe qué procesos se inician en la carga y durante la operación normal
(por ejemplo, /etc/init.d/boot, /etc/init.d/rc, gettys...). Init(8) distingue múltiples niveles
de ejecución, cada uno de los cuales puede tener su propio conjunto de procesos que se
inician. Los niveles de ejecución válidos son 0-6 más A, B y C para entradas bajo demanda.
Una entrada del fichero inittab tiene el siguiente formato:
* id:niveles_ejecución:acción:proceso
* Las líneas que comienzan con `#' se ignoran.
* id es una secuencia única de 1 a 4 caracteres que identifican una entrada de inittab (para
las versiones de sysvinit compiladas con bibliotecas < 5.2.18 o bibliotecas a.out el límite es
de 2 caracteres). Nota: Para gettys u otros procesos de presentación al sistema, el campo id
debería de ser el sufijo tty de la correspondiente tty, por ejemplo, 1 para tty1. En otro caso,
las contabilidades de conexiones puede que no funcionen correctamente
* niveles_ejecución es la lista de niveles de ejecución para lo cuales se llevarán a cabo las
acciones especificadas. acción describe qué acción se debería llevar a cabo. proceso
especifica el proceso a ejecutar. Si el campo proceso comienza con un carácter `+', init no
registrará utmp y wtmp para ese proceso. Esto es necesario para gettys que insisten en hacer
sus propias labores de utmp/wtmp. Esto es también un fallo histórico. El campo
niveles_ejecución tiene que contener múltiples caracteres para diferente niveles de
ejecución. Por ejemplo, 123 especifica que el proceso se debería iniciar en los niveles de
ejecución 1, 2 y 3. Las entrada de niveles de ejecución bajo demanda pueden contener una
A, B, o C. Las entradas de campos de nivel_ejecución de sysinit, boot y bootwait se
ignoran.
* Cuando se cambia un nivel de ejecución, cualesquiera procesos en ejecución que no estén
especificados en el nuevo nivel de ejecución se matan, primero con SIGTERM y después con
SIGKILL.
* Acciones válidas para el campo acción son:
* respawn El proceso se reiniciará cuando termine (v.g. getty). wait El proceso se iniciará una
vez cuando se entre en el nivel de ejecución específico e init esperará a su terminación.
once El proceso se ejecutará una vez cuando se entre en el nivel de ejecución especificado.
boot El proceso se ejecutará durante el arranque del sistema. El campo The
niveles_ejecución se ignora. bootwait El proceso se ejecutará durante el arranque del
sistema, mientras init espera su terminación (v.g. /etc/rc). El campo niveles_ejección se
ignora. off Esto no hace nada. ondemand Un proceso marcado con un nivel de ejecución
ondemand se ejecutará cuando se llame al nivel de ejecución especificado ondemand. Sin
embargo, no se produce cambio de nivel de ejecución (los niveles de ejecución ondemand
son `a', `b', y `c'). initdefault Una entrada initdefault especifica el nivel de ejecución en el
cual se entrará tras el arranque del sistema. Si no existe ninguno, init pedirá un nivel de
ejecución en la consola. El campo proceso se ignora. sysinit El proceso se ejecutará durante
el arranque del sistema. Se ejecutará antes de cualquier entrada boot o bootwait. El campo
niveles_ejecución se ignora. powerwait El proceso se ejecutará cuando init reciba la señal
SIGPWR, indicando que hay algún problema con la alimentación eléctrica. Init esperará que
el proceso termine antes de continuar. powerfail Como en powerwait, excepto que init no
espera que el proceso se complete. powerokwait El proceso se ejecutará cuando init reciba
la señal SIGPWR, con la condición de que haya un fichero llamado /etc/powerstatus que
contenga la palabra OK. Esto significa que la alimentación eléctrica ha vuelto. ctrlaltdel El
proceso se ejecutará cuando init reciba la señal SIGINT. Esto significa que alguien en la
consola del sistema ha pulsado la combinación de teclas CTRL-ALT-DEL . Normalmente uno
quiere ejecutar algún tipo de shutdown bien para entrar en modo monousuario o reiniciar la
máquina. kbrequest El proceso se ejecutará cuando init reciba una señal del gestor de
teclado que se ha pulsado una combinación especial de teclas en el teclado de la consola. La
documentación para esta función no está completa aun; se puede encontrar más
documentación en los paquetes kbd-x.xx (el mas reciente era kbd-0.94 en el momento de
escribir esto). Básicamente quiere aplicar alguna combinación de teclado a la acción
"KeyboardSignal". Por ejemplo, para aplicar Alt-FlechaArriba para este propósito use lo
siguiente en su fichero keymap:
* alt keycode 103 = KeyboardSignal

Vous aimerez peut-être aussi