Beruflich Dokumente
Kultur Dokumente
Operativos
TEMA 4.
Inicio y cierre del sistema
¿Qué es el boot?
Fases del arranque en GNU/Linux
Modo de un solo usuario
Cierre del sistema
Bibliografía
2
¿Qué es el boot?
En informática, el término se utiliza para cualquier proceso en el que un sistema
simple activa a otro más complejo
Es el concepto de arrancar un sistema a partir de una parte pequeña del mismo
Algunos ejemplos:
En informática general se utiliza como sinónimo de boot o booting, para
expresar el proceso de arranque de un ordenador (GRUB, LILO, NTLDR, etc)
Se utiliza en compiladores para definir aquellos compiladores que están
desarrollados con el mismo lenguaje que compilan (gcc, Ocaml, PL/I)
3
Fases del arranque en GNU/Linux (I)
Fase 1: Hardware
Fase 2: BootLoader
Fase 3: Kernel
Fase 4: Init
4
Fases del arranque en GNU/Linux (II)
Fase 1: Hardware (I)
En esta fase el sistema se inicia pasando el control a la BIOS
BIOS – Basic Input/Output System
Pequeño programa que se encuentra grabado en una memoria dentro de la
placa madre
Es alimentado continuamente a través de una batería
Guarda la configuración del sistema
Realiza el POST (Power On Self Test)
5
Fases del arranque en GNU/Linux (III)
Fase 1: Hardware (II)
POST – Power On Self Test
También llamado IPL en otras arquitecturas no PC
Realiza las siguientes tareas:
Verifica la integridad del código de la BIOS
Determina porqué se ejecuta el POST (Arranque en frío, Soft reset, error, stand-by,
hibernación, etc.)
Busca, dimensiona y verifica la memoria del sistema (RAM y ROM)
Busca, inicializa y cataloga los buses y dispositivos del sistema
(Opcional) Pasa el control a otras BIOS especializadas para otros dispositivos (Red, RAID,
etc.)
Proporciona la interfaz de usuario para configurar parámetros del sistema (Velocidad de
CPU, orden de arranque, “Tunning” del sistema, etc.)
Identifica, organiza y selecciona los dispositivos de arranque disponibles
Comienza el proceso de arranque del sistema, llamando al BootLoader
6
Fases del arranque en GNU/Linux (IV)
Fase 2: BootLoader (I)
El objetivo del BootLoader es cargar parte del núcleo (kernel) del Sistema
Operativo en memoria y ejecutarlo
Un vez que se ha cargado, el BootLoader toma el control y se encarga de cargar
el resto del Sistema Operativo
7
Fases del arranque en GNU/Linux (V)
Fase 2: BootLoader (II) – Ubicaciones
En un disquete
El primer sector de un disquete está reservado como sector de arranque
(boot)
En el disco duro
Puede ubicarse en el primer sector de cada una de las particiones del disco
También puede ubicarse en el primer sector del disco
Ahí existe un sector de arranque global denominado MBR
Esta es la ubicación más común para el BootLoader
8
Fases del arranque en GNU/Linux (VI)
Fase 2: BootLoader (III) – BootLoaders en GNU/Linux
LILO – The LInux LOader
GRUB – GRand Unifying Bootloader
Ambos son gestores de arranque de propósitos generales capaces de cargar
tanto sistemas GNU/Linux como otros Sistemas Operativos
Ambos se suelen ubicar en el sector de arranque de disquetes o en el MBR del
disco duro
9
Fases del arranque en GNU/Linux (VII)
Fase 2: BootLoader (IV) – GRUB
Características
Más avanzado y más moderno que LILO
Utilizado más frecuentemente en las distribuciones actuales
Trabaja en dos o tres etapas (stages)
Tiene capacidad para arrancar un kernel vía red
Entiende de sistemas de archivos
Permite especificar parámetros de forma dinámica en el arranque (No utiliza
valores estáticos)
10
Fases del arranque en GNU/Linux (VIII)
Fase 2: BootLoader (V) – Fases del GRUB
Etapa 1
El firmware carga el sector de arranque de GRUB en memoria principal
En él están los números de bloque del disco donde se encuentra la siguiente etapa
Etapa 1.5
Se denomina así porque esta etapa podría ser opcional
Tiene como objetivo cargar el código que reconoce sistemas de archivos y a partir de ahí cargar la
etapa 2 como un archivo
Etapa 2
GRUB muestra el menú con las opciones de boot definidas y un prompt donde se pueden especificar
algunas opciones de arranque extra
GRUB ejecuta los comandos introducidos
Definidos en el archivo de configuración (menu.lst)
Comienza a cargar el kernel
11
Fases del arranque en GNU/Linux (IX)
Fase 2: BootLoader (VI) – El archivo menu.lst (I)
El siguiente ejemplo muestra el contenido del archivo /boot/grub/menu.lst que
carga dos configuraciones de GNU/Linux y una de MS-Windows diferentes,
presentado en un menú conveniente
12
Fases del arranque en GNU/Linux (X)
Fase 2: BootLoader (VII) – El archivo menu.lst (II)
Las 2 primeras líneas indican que cuando se presente el menú de inicio, el usuario tendrá 10
segundos (timeout) para realizar una elección; en caso contrario, se cargará la 1 era entrada de la
lista
Tras estas 2 líneas iniciales, hay 3 secciones que empiezan cada una de ellas por la clausula title
Tras title, se especifica una cadena que se va a mostrar en el menú de inicio en el momento
del arranque
El comando kernel
Indica desde donde se va a cargar la imagen del núcleo en memoria principal
El resto de opciones pasan directamente al núcleo como parámetros de arranque
El comando kernel no se encarga de arrancar el núcleo
El comando boot ejecuta el proceso real de arranque
En el ejemplo el comando boot está implícito
13
Fases del arranque en GNU/Linux (XI)
Fase 2: BootLoader (VIII) – El archivo menu.lst (III)
La carga de sistemas Windows funcionan de forma diferente
GRUB no puede cargar directamente otros Sistemas Operativos que no sean
GNU/Linux
Para dichos sistemas GRUB llama en su lugar al gestor de arranque incluido
en cada sistema
Acción que es denominada “carga en cadena” (chainloader)
La opción +1 significa que GRUB puede encontrar el gestor de arranque en la
partición especificada con el comando root
En algún sector de esa partición
14
Fases del arranque en GNU/Linux (XII)
Fase 2: BootLoader (IX) – Instalando el GRUB
Esta tarea se lleva a cabo mediante el comando grub-install
Dicho comando recibe como parámetros el directorio en el que se encuentran
los archivos de fase y la imagen del núcleo
Así como también el dispositivo en el que tiene que instalar el gestor de
arranque
Ejemplo:
$> sudo grub-install --root-directory=/boot /dev/hda
Este ejemplo instala el gestor de arranque en el primer disco duro IDE
(/dev/hda)
15
Fases del arranque en GNU/Linux (XIII)
Fase 2: BootLoader (X) – Especificar a GRUB opciones de arranque (I)
Las opciones de arranque GRUB pueden ser introducidas manualmente en
el indicador de comandos de inicio
O pueden ser especificadas en la línea kernel en el archivo de configuración del GRUB
Algunas opciones que podemos indicar a GRUB durante el inicio del sistema son:
hd=cylinders,heads,sectors
Permite especificar la geometría del disco duro
single
Arranca el sistema en modo de un solo usuario e inicia una shell de root en la
consola
root=partición
Monta la partición especificada como sistema de archivos raíz
ro
Monta el sistema de archivos en modo de sólo lectura. Normalmente se utiliza
para ejecutar la utilidad fsck
16
Fases del arranque en GNU/Linux (XIV)
Fase 2: BootLoader (XI) – Especificar a GRUB opciones de arranque (II)
ramdisk=size
Especifica un tamaño, en bytes, para el dispositivo de disco de memoria
RAM virtual; principalmente es útil para la instalación
vga=mode
Establece el modo de pantalla VGA. Los modos válidos son: normal,
extended, ask, etc.
mem=size
Le indica al núcleo la cantidad de RAM que tenemos
Si se dispone de 64MB o menos, el núcleo puede obtener esta
información del BIOS
Si se utiliza un núcleo más antiguo y se dispone de más memoria, hay
que indicarle al núcleo la cantidad exacta de memoria o sólo utilizará los
primeros 64MB
Por ejemplo, si tenemos 128MB, debemos especificar mem=128m
17
Fases del arranque en GNU/Linux (XV)
Fase 2: BootLoader (XII) – Eliminar GRUB
Si decidimos dejar de usar GNU/Linux y por ende desinstalarlo totalmente del
ordenador
Podemos dejar de querer utilizar el gestor de arranque GRUB
La forma más fácil de eliminarlo es desde MS Windows utilizando el comando
fdisk en el símbolo del sistema
C:\> fdisk /MBR
Con esto conseguiremos ejecutar fdisk y sobrescribir el MBR con un
registro de inicio de MS Windows válido
18
Fases del arranque en GNU/Linux (XVI)
Fase 3: Kernel (I)
En esta fase comienza la ejecución del kernel, descomprimiéndose a sí mismo
Código ubicado al principio de la propia imagen del kernel
Comienza la inicialización del kernel y el chequeo y puesta en marcha de algunos de los dispositivos
para los que se ha dado soporte
Detecta la CPU y su velocidad
Inicializa el Display para mostrar información por pantalla
Comprueba el bus PCI e identifica y crea una tabla con los periféricos conectados
Muestra por pantalla los mismos y su estado
Inicializa el sistema de gestión de memoria virtual, incluyendo el swapper
Inicializa todos los periféricos compilados dentro del kernel (no como módulos)
Normalmente solo se configuran así los periféricos necesarios para esta fase del arranque
El resto de periféricos se configuran como módulos
Monta el sistema de archivos raíz (“/”)
A partir de aquí llama al proceso init que se ejecuta con uid 0 y será el padre de todos los
demás procesos
19
Fases del arranque en GNU/Linux (XVII)
Fase 3: Kernel (II) – Ramdisks
Características
Son discos virtuales creados utilizando la memoria RAM del sistema
Son discos muy rápidos y de tamaño normalmente pequeño
Son volátiles, lo que quiere decir que sus datos no persisten tras un apagado
o reinicio del sistema
Sirven para varias utilidades:
Como cachés en Servidores Web
Como cualquier disco con datos de alta velocidad
Útiles para descomprimir el kernel de forma rápida y cargar los módulos en
un sistema montado
20
Fases del arranque en GNU/Linux (XVIII)
Fase 3: Kernel (III) – Proceso de arranque (I)
GNU/Linux generalmente inicia mediante un registro de arranque GRUB el cual apunta a un núcleo
ubicado en alguna parte del disco duro
Normalmente la imagen del núcleo esta comprimida (con gzip o bzip2)
Parte del código del núcleo no está comprimido
Esta parte contiene las rutinas necesarias para descomprimir el núcleo desde la imagen del
disco y cargarlo en memoria principal
El núcleo se inicia asimismo en el momento del arranque mediante su descompresión en memoria
principal
En la imagen del núcleo se guardan diversos parámetros
Ejemplo:
El nombre del dispositivo a utilizar como sistema de archivos raíz o principal cuando se inicia
el núcleo
Modo de texto a utilizar para la consola del sistema
Estos y otros parámetros se pueden modificar utilizando el comando rdev
21
Fases del arranque en GNU/Linux (XIX)
Fase 3: Kernel (IV) – Proceso de arranque (II)
Iniciado el núcleo, éste intenta montar un sistema de archivos en el dispositivo principal incrustado en la
propia imagen del núcleo
Este servirá como sistema de archivos principal (La raíz /)
Si no se puede montar un sistema de archivos en ese dispositivo, el núcleo desiste de ejecutar la acción
y emite el mensaje: kernel panic
Un mensaje kernel panic es un error fatal señalado por el propio núcleo
Este mensaje se producirá siempre que el núcleo este confundido y no pueda continuar con la ejecución
normal
Ejemplo:
Un fallo en el propio núcleo: Intentar acceder a un espacio de memoria que no existe
El dispositivo principal guardado en la imagen del núcleo será el sistema de archivos principal en el disco
duro
Cuando se inicie el núcleo, montará una partición de disco duro como sistema de archivos principal y
todo el control se transferirá al disco duro
Una vez cargado el núcleo en memoria este permanecerá ahí
22
Fases del arranque en GNU/Linux (XX)
Fase 3: Kernel (V) – Proceso de arranque (III)
En muchos sistemas GNU/Linux, el propio núcleo se guarda en el archivo
/boot/vmlinuz
¿Por qué este nombre de archivo tan extraño?
En muchos sistemas UNIX, el núcleo se guardaba en un archivo denominado
/vmunix
Siendo vm un acrónimo de las palabras inglesas utilizadas para referirse a la
memoria virtual (virtual memory)
El nombre vmlinuz se adoptó para diferenciar las imágenes del núcleo
comprimidas de las imágenes del núcleo sin comprimir
La denominación vmlinuz no es ningún convenio universal
Otros sistemas GNU/Linux guardan el núcleo en /vmlinuz o en /vmlinux,
e incluso otros en un archivo denominado /Image
23
Fases del arranque en GNU/Linux (XXI)
Fase 3: Kernel (VI) – Crear disquete de arranque para montar un núcleo (I)
Suponer que existe una imagen del núcleo en el archivo /boot/vmlinuz
Primero: Utilizar rdev para establecer el dispositivo principal en el sistema de archivos
principal de GNU/Linux
$> rdev -h
Imprime un mensaje sobre la forma de utilización del comando
$> sudo rdev /boot/vmlinuz
Imprime el dispositivo principal codificado en el núcleo que se encuentra en
/boot/vmlinuz
Si la información obtenida anteriormente no es la correcta ya que (por ejemplo)
nuestro sistema de archivos se encuentra en /dev/hda3 debemos utilizar:
$> sudo rdev /boot/vmlinuz /dev/hda3
rdev no imprime nada al establecer el dispositivo principal
Para comprobar que los cambios se han establecido correctamente
ejecutamos:
$> sudo rdev /boot/vmlinuz
24
Fases del arranque en GNU/Linux (XXII)
Fase 3: Kernel (VII) – Crear disquete de arranque para montar un núcleo (II)
Segundo: Crear el disquete de arranque
Utilizar dd para copiar en el disquete la imagen del núcleo
$> sudo dd if=/boot/vmlinuz of=/dev/fd0 bs=8192
Podríamos haber utilizado cp para realizar esta tarea
Tercero: Cerrar el sistema y arrancar desde el disquete
Si toda va bien, GNU/Linux debería arrancar como lo hace normalmente
NOTA: Es recomendable crear un disquete de arranque de repuesto por si alguna
vez las cosas nos llegan a fallar
25
Fases del arranque en GNU/Linux (XXIII)
Fase 3: Kernel (VIII) – Mensajes de inicio del núcleo
El primer paso durante la carga del sistema es iniciar el núcleo
A medida que el núcleo se carga en memoria, enviará mensajes a la consola del
sistema, pero normalmente también guardará dichos mensajes en archivos de
registro del sistema (logs)
Para ello podemos visualizar el contenido del archivo /var/log/messages que
contiene mensajes del núcleo emitidos durante el tiempo de ejecución
El comando dmesg imprime las últimas líneas del buffer de anillos de
mensajes de núcleo; naturalmente, justo tras el arranque, obtendremos los
mensajes de inicio mediante dicho comando
26
Fases del arranque en GNU/Linux (XXIV)
Fase 4: Init (I)
En esta fase el kernel ya está cargado, hay gestión de memoria, una parte del
hardware esta inicializado y existe un sistema de archivos raíz
A partir de ahora el resto de operaciones se van a realizar directa o
indirectamente por el proceso init
El proceso init lee del fichero /etc/inittab la configuración a utilizar
Ejecuta el comando /etc/rc.sysinit el cual realiza una inicialización básica del
sistema
En función del runlevel ejecuta los comandos establecidos
27
Fases del arranque en GNU/Linux (XXV)
Fase 4: Init (II)
Inicializados los controladores de dispositivo, el núcleo ejecuta el programa init, que
se encuentra en /etc, /bin o /sbin
init es un programa de propósito general que produce nuevos procesos y reinicia
determinados programas al salir de ellos
Ejemplo:
Cada consola tiene un proceso getty ejecutándose en ella, iniciada por init
Tras iniciar la sesión, el proceso getty se reemplaza con otro
Tras salir de la sesión, init inicia un nuevo proceso getty, permitiéndonos
volver a iniciar la sesión de nuevo
init también es el responsable de ejecutar diversos programas y secuencias de
comandos cuando se inicia el sistema
Todo lo que hace init se controla a través del archivo /etc/inittab
28
Fases del arranque en GNU/Linux (XXVI)
Fase 4: Init (III) – Estructura del inittab
Las líneas dentro del archivo inittab siguen la siguiente estructura , separada por dos puntos
Identificador:Nivel_Ejecución:Acción:Proceso
Identificador
Un identificar arbitrario (No importa lo que sea siempre que sea único en el archivo)
Formado por hasta cuatro dígitos de longitud
Generalmente se limita a dos por costumbre
Nivel de ejecución
Indica para que nivel o niveles de ejecución es válida dicha línea
Si este campo aparece vacío entonces indica que es válido para todos los niveles de
ejecución
Acción
Indica que acción debe llevar a cabo init respecto al proceso
La más común es respawn, pero puede ser cualquiera de las siguientes: once, sysinit,
boot, bootwait, wait, off, ondemand, initdefault, powerwait, powerfail, powerokwait,
ctrlaltdel, kbrequest
Proceso
El proceso o programa especifico a ejecutar
29
Fases del arranque en GNU/Linux (XXVII)
Fase 4: Init (IV) – Ejemplo de inittab (I)
30
Fases del arranque en GNU/Linux (XXVIII)
Fase 4: Init (V) – Ejemplo de inittab (II)
Primera línea:
# Establecer a tres el nivel de ejecución por defecto para el sistema
id:3:initdefault:
El nivel de ejecución predeterminado esta establecido a tres
El campo action para esta entrada es initdefault
Hace que el nivel de ejecución dado se establezca como predeterminado
Éste será el nivel de ejecución utilizado cuando se inicie el sistema
La orden init permite modificar en cualquier momento el nivel de ejecución de la
máquina
Ejemplo:
$> sudo init 5
Se cierran todos los servicios que pertenecen al nivel de ejecución actual,
pero no los del nivel de ejecución cinco
31
Fases del arranque en GNU/Linux (XXIX)
Fase 4: Init (VI) – Ejemplo de inittab (III)
Segunda línea:
# Primera secuencia de comandos a ejecutar
si::sysinit:/etc/init.d/boot
Le indica a init que ejecute la secuencia de comandos almacenada en
/etc/init.d/boot cuando se inicie el sistema
El campo action es sysinit, que especifica que esta entrada debe ejecutarse
cuando se inicie por primera vez init en el arranque del sistema
El archivo /etc/init.d/boot es una secuencia de comandos de shell que
contiene órdenes para controlar la inicialización básica del sistema
Ejemplo:
Se habilita el espacio de intercambio
Revisan y se montan los archivos del sistema
Se sincroniza el reloj con el reloj CMOS
32
Fases del arranque en GNU/Linux (XXX)
Fase 4: Init (VII) – Ejemplo de inittab (IV)
Siguientes lineas:
# Ejecutar /etc/init.d/rc con un nivel de ejecución como argumento
l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
El sistema ejecuta el archivo almacenado en /etc/init.d/rc con un nivel de ejecución
apropiado pasado como argumento (del 0 al 6)
El archivo rc es una secuencia de comandos de inicio genérica que ejecuta otras
secuencias de comandos apropiadas para dicho nivel de ejecución
El campo action es wait e indica a init que ejecute el comando dado y espere a que
termine su ejecución antes de hacer algo más
33
Fases del arranque en GNU/Linux (XXXI)
Fase 4: Init (VIII) – Ejemplo de inittab (V)
Siguientes lineas:
# Ejecutar al presionar Ctrl+Alt+Supr
ca::ctrlaltdel:/sbin/shutdown –t3 –rf now
Se ejecuta cuando se presiona simultáneamente la combinación de las
teclas Ctrl+Alt+Supr
Esta combinación de teclas proporciona una interrupción que reinicia el
sistema
Esta combinación de teclas genera una interrupción que es captada y
enviada a init, el cual ejecuta la entrada con el campo action de ctrlaltdel
34
Fases del arranque en GNU/Linux (XXXII)
Fase 4: Init (IX) – Ejemplo de inittab (VI)
Siguientes líneas:
# Iniciar agetty para la consolas virtuales desde la uno a la seis
1:2345:respawn:/sbin/mingetty --noclear tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
Estas entradas ejecutan /sbin/mingetty para las primeras seis consolas
virtuales
mingetty es una de las diversas variantes de getty
Permite iniciar sesión en terminales; sin ellos, el terminal estaría
deshabilitado
35
Fases del arranque en GNU/Linux (XXXIII)
Fase 4: Init (X) – runlevel o niveles de ejecución (I)
¿Qué es un nivel de ejecución o runlevel?
Es un número o una letra que especifica un estado actual del sistema
Son una serie de scripts de arranque y cierre de servicios o demonios, que nos permiten
operar el sistema de distintas maneras según las necesidades del administrador
Ejemplo:
Cambiando el nivel de ejecución es posible que el Sistema Operativo entre en
modo mantenimiento y posteriormente vuelva al modo multiusuario
Niveles de ejecución en GNU/Linux
Nivel Denominación Descripción
0 Apagado Cierre del sistema (Apagado)
Sin interfaz de red y sin demonios de inicio, no permite que
1 Monousuario ingresen otros usuarios (Solo a root). Permite reparar
problemas o hacer pruebas en el sistema
2 Multiusuario Multiusuario sin soporte de red
3 Multiusuario Multiusuario con soporte de red (Inicio normal)
4 Definible Definible por el usuario
5 Multiusuario gráfico Similar al nivel de ejecución 3 + Manejador de ventanas
6 Reinicio Se reinicia el sistema
36
Fases del arranque en GNU/Linux (XXXIV)
Fase 4: Init (XI) – runlevel o niveles de ejecución (II)
Los niveles de ejecución constituyen una manera de agrupar entradas en el
archivo /etc/inittab
Ejemplo:
Podemos indicar que el nivel de ejecución uno ejecute sólo las
secuencias de comandos de configuración mínima
El nivel de ejecución dos todo lo que ejecuta el nivel de ejecución uno
más la configuración de red
El nivel de ejecución tres todo lo que ejecutan los niveles uno y dos más
un acceso de conexión por marcación telefónica
Y así sucesivamente ...
37
Fases del arranque en GNU/Linux (XXXV)
Fase 4: Init (XII) – runlevel o niveles de ejecución (III)
Comandos útiles para trabajar con los niveles de ejecución:
$> sudo runlevel
Comprueba el nivel de ejecución actual
$> who -r
Lo mismo que el comando anterior
$> sudo telinit <nuevo_nivel>
Cambia inmediatamente el nivel de ejecución actual al nivel de ejecución
especificado como parámetro
38
Fases del arranque en GNU/Linux (XXXVI)
Fase 4: Init (XIII) – Archivos rc (I)
Los sistemas GNU/Linux guardan los comandos de inicio en directorios con rc en el nombre
Antiguo convenio de UNIX
El script rc ejecuta los scripts de arranque que se encuentran en el directorio
correspondiente al runlevel en el que se ha iniciado el sistema
Las secuencias de comandos para cada nivel de ejecución se guardan en el siguiente
directorio
/etc/rcN.d, donde N es el runlevel que se va a iniciar
Ejemplo:
Para el runlevel 3, se utilizarán las secuencias de comandos almacenadas en
/etc/rc3.d
Los comandos hacen lo necesario para que un sistema funcione
Inician los servicios o los demonios correspondientes
39
Fases del arranque en GNU/Linux (XXXVII)
Fase 4: Init (XIV) – Archivos rc (II)
El modo de operación y la nomenclatura de los diversos archivos almacenados en
/etc/rcN.d es la siguiente:
KNNservicio
NN
Es un número comprendido entre 00 y 99 y permite llevar una secuencia de
servicio
Igual al anterior
S
Indican que estos archivos deberán ser ejecutados después de los
KNNservicio y su función es arrancar en orden secuencial nuevos
servicios
Para personalizar secuencias de comandos de inicio, es muy cómodo utilizar un editor
gráfico de niveles de ejecución
KsysV → Para entornos de escritorio KDE
BUM → Para entornos de escritorio GNOME
41
Fases del arranque en GNU/Linux (XXXIX)
Fase 4: Init (XVI) – Archivos rc (IV)
Generalmente, los mismos servicios se inician o se detienen en niveles de
ejecución diferentes
Por ello, se suelen utilizar vínculos simbólicos en lugar de repetir la misma
secuencia de comandos en múltiples sitios
Cada archivo KNNservico o SNNservicio es un vínculo simbólico apuntando a
un directorio central que almacena las secuencias de comandos de inicio o
de cierre reales para todos los servicios, normalmente este directorio es:
/etc/init.d
/etc/init.d contiene una secuencia de comandos denominada skeleton que permite
adaptar los demonios escritos por nosotros mismos para que estos sean iniciados
o detenidos
Ejemplo:
$> sudo /etc/init.d/pinging { start | stop | restart | reload | status }
42
Modo de un solo usuario
El modo de múltiples usuarios permite que varios usuarios puedan iniciar sesiones simultáneamente
En el modo de un solo usuario se está ejecutando el sistema pero no el indicador de comandos de inicio
Básicamente el usuario existente es el súper usuario (root)
¿Cuando utilizar este modo?
Cuando necesitemos hacer una administración de algo que este mal
Revisar un sistema de archivos dañado
Recuperarnos frente a ciertos tipos de problemas
Aún en modo de un solo usuario el sistema sigue siendo multiproceso
Podemos ejecutar múltiples programas simultáneamente
Si el sistema admite más de un terminal
Sólo se podrá utilizar la consola
No se podrá ejecutar el sistema X Windows
43
Cierre del sistema (I)
Cerrar el sistema es mucho más simple que arrancarlo e iniciarlo
Pero, no es solo cuestión de apretar el botón de apagado del ordenador
Los sistemas GNU/Linux:
Almacenan temporalmente en buffers de memoria las lecturas y escrituras del disco
Las escrituras se retrasan todo lo necesario
Se sirven múltiples lecturas en el mismo bloque del disco directamente desde RAM
Esto produce un incremento extraordinario del rendimiento (Los HDD son lentos con
relación a la CPU)
Problema:
Cerrar o reiniciar repentinamente el sistema
Los buffers en memoria no se escribirían en disco y se podrían perder o dañar los
datos
44
Cierre del sistema (II)
Solución:
El núcleo vacía los buffers modificados (Los que han cambiado desde que
fueron leídos desde el disco)
Los copia de nuevo al disco cada cinco segundos aproximadamente para
evitar un daño serio si el sistema se detiene repentinamente
Cierre limpio o seguro:
Asegura que los buffers del disco se sincronicen correctamente
Permite que todo el proceso de salida se realice limpiamente
45
Cierre del sistema (III)
Comando para cerrar limpiamente el sistema (I)
El comando shutdown es el comando utilizado para detener o reiniciar el sistema
limpiamente
Ejemplos de uso:
$> sudo shutdown -r +10
El sistema se reiniciará en 10 minutos
-r: indica que el sistema se debe reiniciar tras su cierre
+10: cantidad de tiempo expresada en minutos que se tiene que esperar
hasta el cierre
$> sudo shutdown -r +10 “Reinicio seguro en 10 minutos para
mantenimiento”
Igual que el anterior pero añade un mensaje personalizado de aviso que
será mostrado por la línea de órdenes
46
Cierre del sistema (IV)
Comando para cerrar limpiamente el sistema (II)
$> sudo shutdown -r 13:00
Reinicia el sistema especificando un tiempo absoluto (01:00 PM)
$> sudo shutdown -r now
Reinicia el sistema inmediatamente tras el proceso del cierre seguro
-h en lugar de -r: Detiene el sistema tras el cierre seguro
$> sudo shutdown -c
Cancela el cierre que se esté ejecutando actualmente
Esto se puede conseguir con:
$> sudo kill -9 `ps aux | grep 'shutdown' | tr -s ' ' | cut -f2 -d' ' |
head -n 1`
47
Bibliografía
Guía de referencia y aprendizaje LINUX
Segunda edición actualizada y ampliada
Matthias Kalle Dalheimer y Matt Welsh
Editorial Anaya Multimedia, 2006
Sistema operativo GNU/Linux básico
Primera Edición
Roger Baig Viñas, Francesc Aulí Llinàs
UOC Formación de Posgrado, Software libre, noviembre 2003
Administración avanzada de GNU/Linux
Primera Edición
Josep Jorba Esteve, Remo Suppi Boldrito
UOC Formación de Posgrado, Software libre, 2004
48