Arranque y apagado
en Linux
Índice

Introducción

Secuencia de arranque

initrd y linuxrc

Niveles de ejecución (runlevels)

Detención del sistema: shutdown

Apéndice: Bootchart
Los pasos en el arranque son los siguientes:
1.- La CPU se inicializa y ejecuta una instrucción en una
dirección fija de memoria.
 2.- La instrucción salta a la BIOS.
 3.- La BIOS encuentra un dispositivo de arranque y
accede a su MBR, que apunta al GRUB.
 4.- La BIOS carga y transfiere el control al GRUB.
 5.- GRUB carga el núcleo comprimido.
 6.- El núcleo comprimido se descomprime y transfiere el
control al núcleo previamente descomprimido.
 7.- Inicializado el núcleo se ejecuta el programa init,
para que inicie las aplicaciones y el resto del sistema.

initrd y linuxrc





El cargador de arranque carga el kernel e initrd
en la memoria.
El contenido de initrd es un sistema Linux
mínimo que contiene un ejecutable llamado
linuxrc.
Linuxrc carga los módulos adicionales
necesarios para el arranque del núcleo y monta
el sistema de archivos raíz.
Desde que se monte el FS raíz real, Linuxrc se
detiene y continua el proceso de arranque.
Finalizado el arranque del núcleo se desmonta
initrd y se lanza init.
initrd y linuxrc
Varios de los mensajes que el núcleo produce
durante esta etapa de arranque pueden ser
revisados en el archivo /var/log/dmesg
 con el programa dmesg.

Secuencia de arranque
BIOS
Comprueba
periféricos
HD
MBR + Tabla
de particiones
Gestor Arranque
Localizar /boot
Cargar kernel
Cargar initrd
Kernel
Configurar sistema
Montar imagen initrd
Montar /root
Liberar memoria
Iniciar init
Secuencia de arranque
ubicación
placa base
Power ON
CPU
test e inicializa registros
salta a la BIOS 0xfffffff0
ROM
1er sector físico
512 bytes de
BIOS
Master Boot Record
Pequeño programa de
arranque
disco
disco duro
CDROM
1 er sector de
una partición
sistema de
ficheros root
memoria del
núcleo
test de la placa base, reconoce el
hardware, almacena valores, salta al 1
er sector del dispositivo boot
elije una partición
de arranque
Tabla de particiones
Boot sector
LILO - GRUB
contiene el comienzo del cargador, carga
el resto del cargador
inicializa parámetros
carga el núcleo
start_kernel
se descomprime, inicializa
el sistema
Distribución del GRUB
init programa
getty
login
shell
primer proceso
PID=1
trozo pequeño en el 1er
sector físico
trozo en el 1er sector de
la partición Linux
resto en el sistema
de ficheros /
LILO -GRUB
NO
SÍ
/sbin/init Finalizando el arranque…
Padre de todos los procesos, arranca todos los
procesos o servicios básicos que están en la
capa de usuario.
Ejecuta el escript /etc/inittab que define como el
sistema debe ser inicializado.
1. define un nivel de ejecución o arranque
2. Ejecuta /etc/rc.d/rc.sysinit establece la
variable PATH o ruta del entorno, activa el
swap, verifica los sistemas de archivos,…
3. Ejecución de servicios: /etc/rc.d/rcX.d/
define la acción por defecto al pulsar las teclas
CTRL+ALT+DELETE (shutdow por defecto,
se puede cambiar o comentar).
5. ejecuta el proceso /sbin/mingetty para cada
consola virtual
6. acepta el nombre de usuario y su contraseña
e inicializa el proceso login.
4.
Niveles de ejecución (runlevels)
/etc/inittab establece el nivel de arranque
id:5:initdefault:
 Localizados en /etc/rc.d/
 Formato: rcX.d (X = 0…6)

rc0.d
Apagado del sistema
rc1.d
Modo monousuario
rc2.d
Modo multiusuario
rc3.d
Modo multiusuario con red
rc4.d
No usado definible por usuario
rc5.d
Modo gráfico rc3.d + GUI
rc6.d
Reinicio del sistema
Scripts [ /etc/rc.d ]
Scripts [ /etc/rc.d/init.d ]







por cada servicio ha de existir un script.
deben admitir estas “acciones”: start, stop,
restart, try-restart, reload, force-reload y status.
[ S | K ] [ 0 – 99] <nombre_script>.
‘S’ (start) le indica al sistema que lo inicie.
‘K’ (kill) que lo detenga.
0 a 99 proporciona un orden único de inicio.
en /etc/rc.d/rcX.d/ hay enlaces a los scripts
localizados en el directorio /etc/rc.d/init.d/
Scripts on/off

Estructura:
[ K | S ] [ 0 – 99 ] nombre

Iniciar script:
mv K55sshd S55sshd

Apagar script:
mv S55sshd K55sshd
Scripts [ /etc/rc.d/init.d ]
El comando init primero para todos los
procesos cuyo enlace comienza por K
/etc/rc.d/init.d/<command> stop
 arranca todos los procesos que tienen un
enlace que comienza con S
/etc/rc.d/init.d/<command> start
 el root del sistema puede parar, arrancar o
reiniciar un servicio
 service <nombre del servicio> stop, start,
restart

Scripts: rc.local
Configurar programas de inicio manualmente
por el usuario
 Fácilmente editable

Scripts: utilidades

service:
service <nombre> [stop | start | restart]

chkconfig
chkconfig --list
chkconfig <nombre> [on/off]
chkconfig --level [0.. 6] <nombre> [on/off]

/usr/sbin/ntsysv – interfase basada en ncurses
login

Finalmente se ejecuta el proceso
/sbin/mingetty para cada consola virtual.

El proceso /sbin/mingetty establece un
camino de comunicación con el dispositivo
tty, inicializa sus modos, imprime el login,
acepta el nombre de usuario y su
contraseña e inicializa el proceso login.
Detención del sistema

Importante realizarlo correctamente para
evitar archivos corruptos.

Órdenes: shutdown, halt, reboot, poweroff
Detención del sistema

shutdown envía señal a init para cambiar
el nivel de ejecución.
 Apagar: shutdown –h now
 Reiniciar: shutdown –r now
Descargar

ASO-02-06-Arranque y apagado en Linux