Está en la página 1de 48

Administración de Sistemas

Operativos

TEMA 4.
Inicio y cierre del sistema

Ing. Julio César González Moreno


E-Mail: julcgmoreno@gmail.com
Web site: www.it.comp.unanleon.edu.ni/jgonzalez
Índice


¿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

inicio o de cierre de servicios



Obliga a mantener una ordenación en las secuencias de comandos cuando
se ejecutan

Secuencias de comandos con números más bajos se ejecutan antes que
secuencias de comandos con números más altos

servicio

Se corresponde con el nombre de un servicio del sistema

K

Indica que estos archivos deberán ser ejecutados de primero y su función
es cerrar en secuencia cualquier servicio existente
40
Fases del arranque en GNU/Linux (XXXVIII)
Fase 4: Init (XV) – Archivos rc (III)

SNNservicio

NN
Igual al anterior


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