arranque y parada de sistemas linux · mario muñoz organero. aplicaciones avanzadas de telemática...

24
Arranque y parada de sistemas Linux Mario Muñoz Organero Departamento de Ingeniería Telemática http://www.it.uc3m.es/mario Aplicaciones Avanzadas de Telemática 2 Mario Muñoz Organero. Panorámica RED Comunicaciones DNS Clientes HTTP Administrador: arrancando y parando servidores Linux

Upload: others

Post on 23-Sep-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Arranque y parada de sistemas Linux

Mario Muñoz Organero

Departamento de Ingeniería Telemáticahttp://www.it.uc3m.es/mario

Aplicaciones Avanzadas de Telemática 2Mario Muñoz Organero.

Panorámica

RED Comunicaciones

DNS

Clientes

HTTP

Administrador: arrancando y parando

servidores Linux

Page 2: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 3Mario Muñoz Organero.

Arranque y Parada

Bibliografía: Capítulo 4 de “Essential System Administration”. AeleenFrisch.Programa de Arranque del Sistema.Carga y ejecución del Kernel.El proceso init.Niveles de arranque del sistema.Acciones previas al arranque de aplicaciones.El fichero de configuración inittab.Gestión de los scripts de arranque.Procedimiento para detener el sistema.Cuando el sistema cae.

Aplicaciones Avanzadas de Telemática 4Mario Muñoz Organero.

Proceso de arranque del PC

Encendido POSTCargaBIOS

LecturaCMOS

CargaMBR

Sector dearranque

partición activa

CargaSO

Page 3: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 5Mario Muñoz Organero.

Carga del SO LinuxLILO Kernel init

gettygetty getty xdm

login

bash

login

bash

login

bash

X

Aplicaciones Avanzadas de Telemática 6Mario Muñoz Organero.

Arranque o “Boot”

El proceso de arranque o “boot” (abreviatura de “bootstrapping”) es el mecanismo que pone en marcha el sistema operativo.Toda funcionalidad requiere el sistema operativo. El sistema operativo debe ponerse en marcha a él mismo.Primer Paso: Ejecución de instrucciones máquina almacenadas en memoria permanente o ROM.El dispositivo se denomina: ROM, BIOS, ROS, nvram, firmware, flash.La placa del equipo está diseñada para que en cuanto recibe tensión el procesador automáticamente carga las instrucciones de este dispositivo.Algunos equipos permiten mediante el posicionamiento de algún dispositivo físico (llave, mando, etc) seleccionar el tipo de arranque del sistema.

Page 4: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 7Mario Muñoz Organero.

Código Almacenado en ROM

La funcionalidad de este primer programa a grandes rasgos es:

1. Localizar los dispositivos necesarios para el arranque. Es posible tener múltiples dispositivos preparados para el arranque del sistema.2. Seleccionar el dispositivo del que obtener el programa de arranque (system’s boot program).3. Cargar el programa de arranque en memoria.4. Transferir la ejecución de código al programa de arranque.

Aplicaciones Avanzadas de Telemática 8Mario Muñoz Organero.

Localización del Programa de ArranqueEl programa de arranque del sistema, al ser cargado de forma automática, debe estar en un lugar perfectamente predecible.Un dispositivo, en general, suele ser específicamente preparado para almacenar el programa de arranque (Dispositivo de Arranque o “BootableDevice”).Ejemplos:

En un disco, el programa suele estar almacenado en el sector 0 de la partición raíz.En una cinta magnética, el programa está almacenado en una posición concreta de la cinta (segundo bloque).El programa puede estar almacenado en un servidor remoto, en una posición concreta (estaciones sin disco o “diskless”).

El programa que ejecuta el equipo al arrancar no dispone del código necesario para hacer una búsqueda del programa en los dispositivos.

Page 5: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 9Mario Muñoz Organero.

Selección del Dispositivo de ArranqueLos sistemas suelen tener disponibles varios dispositivos de arranque.El programa almacenado en ROM almacena estos dispositivos a modo de lista ordenada.El código realiza un recorrido de esta lista hasta detectar el primer dispositivo capaz de suministrar el programa de arranque.Es preciso que el programa almacenado en ROM sea capaz de reconocer los dispositivos conectados al equipo.Estos dispositivos pueden variar a lo largo de la vida de un equipo.Es posible que se precise un cambio del programa almacenado en ROM por una versión más reciente capaz de tratar con m´as dispositivos.Ejemplo: Detectar una llave de memoria (“memory key”) previamente configurada como dispositivo de arranque y conectada al equipo.

Aplicaciones Avanzadas de Telemática 10Mario Muñoz Organero.

Carga del Programa de Arranque

El programa almacenado en ROM debe ser capaz de leer y almacenar en memoria el código del programa de arranque.Esta lectura se debe hacer comprobando posibles errores.A mayor número de dispositivos que sea capaz de manipular, mayor complejidad del código.Algunos sistemas incluyen su propio intérprete de comandos en ROM que permite realizar diagnósticos previos antes del arranque.Estas herramientas son extremadamente útiles para detectar fallos del hardware.Ejemplo: La cadena de dispositivos de un bus SCSI está conectada correctamente.

Page 6: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 11Mario Muñoz Organero.

Programa de Arranque

Todavía no es el sistema operativo.Una vez cargado en memoria y transferido el control del programaen ROM a este programa, su principal cometido es cargar el “kernel” o núcleo del sistema operativo.El kernel de un sistema es aquella parte del sistema que es necesario que est´e ejecutándose en todo momento.El kernel es un ejecutable previamente creado y almacenado en un lugar concreto especificado en el programa de arranque.Como todo programa, está disponible en disco y puede ser examinado. Sus nombres suelen ser: Unix (System-V), vmunix(BSD), vmlinux, vmlinuz (Linux).El programa de arranque, además de cargar el kernel, realiza un conjunto de comprobaciones más detalladas sobre los dispositivos del sistema.

Aplicaciones Avanzadas de Telemática 12Mario Muñoz Organero.

Secuencia de Arranque en Ordenadores tipo PCParar ordenadores personales tipo PC, la secuencia de arranque tiene los siguientes pasos:

1. Equipo se enciende y se ejecuta el código almacenado en la memoria BIOS.

2. El programa en BIOS selecciona el dispositivo de arranque y lee el master boot record (MBR).

3. En sistemas Linux en el MBR se almacena un segundo programa que permite seleccionar el tipo de kernel a arrancar.

4. Ejemplos: lilo, Grub (Grand Unified Bootloader).

5. Esta estructura permite al usuario seleccionar entre un conjunto de sistemas cual de ellos arrancar.

Page 7: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 13Mario Muñoz Organero.

Gestor de arranque LILO

Linux necesita un cargador de arranque

LInux LOader permite:Cargar y ejecutar el kernel

Gestionar arranque de otros SO

LILO se puede instalar enMBR

Sector arranque partición

Disquete

Aplicaciones Avanzadas de Telemática 14Mario Muñoz Organero.

Gestor de arranque LILO (2)

LILO consta de:Instalador de mapas /sbin/lilo

Gestor de arranque /boot/boot.b

Mapa de arranque /boot/map

Gestor de arranque encadenado /boot/chain.b

Activador de partición /sbin/activate

Mensaje de arranque /boot/message

Page 8: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 15Mario Muñoz Organero.

Gestor de arranque LILO (3)

Se configura en /etc/lilo.conf

Estructura:Sección general

Sección de imágenes de kernel

Sección de otros SO

Después de cada cambio ejecutar /sbin/lilo

Aplicaciones Avanzadas de Telemática 16Mario Muñoz Organero.

/etc/lilo.conf

Sección generalboot=dispositivo de arranque

map=archivo de mapa

install=sector de arranque

default=imagen o SO

prompt

timeout=tiempo de espera (décimas de seg)

message=archivo de mensaje

Page 9: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 17Mario Muñoz Organero.

/etc/lilo.conf (2)

Sección de imágenes image=kernel

label=nombre

root=sistema de archivos raíz

initrd=sistema de archivos inicial (RAM)

read-only

password=contraseña

Aplicaciones Avanzadas de Telemática 18Mario Muñoz Organero.

/etc/lilo.conf (3)

Sección de otros SO other=dispositivo de arranque

label=nombre

table=tabla de particiones

unsafe (no comprobar tabla de particiones)

Más información sobre LILOman lilo

man lilo.conf

The LILO user guide

Page 10: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 19Mario Muñoz Organero.

/etc/lilo.conf (4)#Seccion general

boot=/dev/hda

map=/boot/map

install=/boot/boot.b

default=linux

prompt

timeout=100

#Seccion de linux

image=/boot/vmlinuz

label=linux

root=/dev/hda2

...

Aplicaciones Avanzadas de Telemática 20Mario Muñoz Organero.

/etc/lilo.conf (5)#Seccion de linux (continuacion)

initrd=/boot/initrd.img

read-only

#Seccion de win2000

other=/dev/hda1

label=win

table=/dev/hda

#Seccion de arranque desde diquete

other=/dev/fd0

label=floppy

unsafe

Page 11: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 21Mario Muñoz Organero.

Ejecución del Kernel

El comienzo de la ejecución del kernel todavía no provee ninguna funcionalidad típica del sistema operativo.Antes de realizar ninguna tarea se precisa inicializar todas las estructuras de datos necesarias.Se realizan todas las tareas de diagnóstico, detección y configuración de los dispositivos a bajo nivel.Ejemplo: En linux, el proceso de arranque del kernel muestra gran cantidad de información por pantalla.El comando dmesg muestra en conjunto de mensajes generados por el kernel al arrancar.

0MB HIGHMEM available.511MB LOWMEM available.Detected 599.605 MHz processor.Console: colour VGA+ 80x25isapnp: Scanning for PnP cards...isapnp: No Plug & Play device foundfloppy0: no floppy controllers foundhda: FUJITSU MHT2060AT, ATA DISK drivehdc: HL-DT-STCD-RW/DVD-ROM GCC-4240N, ATAPI CD/DVD-ROM driveide0 at 0x1f0-0x1f7,0x3f6 on irq 14ide1 at 0x170-0x177,0x376 on irq 15hda: attached ide-disk driver.

Aplicaciones Avanzadas de Telemática 22Mario Muñoz Organero.

Ejecución del proceso “init”

Una vez que el kernel ha realizado todas las tareas previas, realiza un fork y crea el proceso init que generalmente tiene identificador 1.Los procesos restantes del sistema serán creados a partir de este proceso.Init realiza las operaciones necesarias para desplegar toda la funcionalidad del sistema en su estado final.Las tareas principales del este proceso son:

1. Comprobar el correcto funcionamiento del sistema de ficheros a través del programa fsck.2. Montar los discos locales.3. Designar las áreas de paginación.4. Realizar tareas de limpieza en áreas de disco tales como el directorio /tmp.5. Arrancar los procesos servidores (demonios o “daemons”) de los servicios que el sistema ofrece: impresión, correo, cron, etc.6. Arrancar los demonios de red así como montar discos remotos (si procede).7. Permitir la ejecución de procesos de login.

Page 12: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 23Mario Muñoz Organero.

Arranque en Modo Usuario Único

El proceso normal de arranque culmina cuando los procesos que permiten loginestán ejecutando.Es posible que en el proceso de arranque se detecte alguna anomalía y sea preciso la intervención del administrador.Es posible que sea necesario administrar el equipo sin que haya ningún usuario conectado y con un subconjunto mínimo de funcionalidad disponible.Para este tipo de situaciones se puede arrancar el sistema en modo usuario único (“single user mode”).Para arrancar en este nuevo modo se deben modificar los ficheros de configuración de init. La próxima vez que arranque el sistema se ejecutará en modo usuario único.En este modo de ejecución la mayoría de las funciones del sistema están desactivadas.Esto es así para poder diagnosticar un amplio conjunto de anomalías posibles.El administrador debe ser capaz de trabajar a través de un intérprete y con un subconjunto mínimo de comandos.En algunos sistemas el modo usuario único provee un punto débil para el sistema de protección del equipo.

Aplicaciones Avanzadas de Telemática 24Mario Muñoz Organero.

Protección de la secuencia de arranqueLa mayoría de sistemas entran en modo usuario único automáticamente cuando se detecta una anomalía en el proceso de arranque.El intérprete de comandos que se arranca es del superusuario.Esta política provee una forma posible de acceso al sistema como administrador.Posibles medidas de protección consisten en asegurarse que el intérprete que se arranca en modo usuario único pida la contraseña del administrador.La secuencia de arranque sigue siendo vulnerable si se puede manipular el orden en la ROM de los dispositivos en los que buscar el programa de arranque.Algunos sistemas incluyen la posibilidad de proteger el contenido de la ROM con una contraseña que se requiere para poder modificar su contenido.

Page 13: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 25Mario Muñoz Organero.

Niveles de Ejecución

Hasta ahora se han considerado los siguientes estados posibles de un sistema: parado, modo usuario único, modo multiusuario (normal).Este concepto de estado de ejecución se ha ampliado hasta incluir múltiples niveles con diferentes configuraciones.Ejemplo: Los niveles de ejecución en Linux (Red Hat).

Nivel 0 - halt (procesador detenido).Nivel 1 - modo usuario único.Nivel 2 - modo multiusuario pero sin sistemas remotos de ficheros. En caso de no tener conexión a la red, idéntico al nivel 3.Nivel 3 - modo multiusuario sin entorno gráfico en consola.Nivel 4 - Sin utilizar.Nivel 5 - modo multiusuario con X11 ejecutando en la consola.Nivel 6 - modo reinicialización. El equipo se reinicializa.

Otras distribuciones incluyen un nivel S para monousuario (single user). SuSE usa el nivel 2 para multi-usuario con red y el 3 para entorno gráfico.En algunos sistemas el programa telinit (o init simplemente) permite el cambio de nivel de ejecución del sistema desde el intérprete de comandos.

Aplicaciones Avanzadas de Telemática 26Mario Muñoz Organero.

Los Scripts de Arranque de Unix

El proceso init es el encargado de arrancar sucesivamente todos los servicios que debe ser ejecutados en el sistema.Existen dos estilos para llevar a cabo esta función dependiendo del tipo de sistema Unix:

System V: Conjunto elevado de scripts organizados en diferentes directorios dependiendo del nivel de ejecución.BSD Unix: Conjunto limitado de scripts todos ellos almacenados en /etc.

Las diferencias derivan del código del propio proceso init.El arranque de las tareas se realiza mediante scripts escritos para Bash.Las tareas a realizar son esencialmente las mismas.

Page 14: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 27Mario Muñoz Organero.

Acciones Preliminares de Init

Antes de arrancar los servicios propios de un sistema, init realiza un conjunto de tareas orientadas a preparar el entorno de ejecución.Definición de variables de entorno: HOME, PATHLa variable PATH (conjunto de directorios en los que buscar un ejecutable cuando se necesita) debe ser lo más corta posible para evitar problemas de seguridad.Asignación del valor correcto al reloj del sistema.Asignar nombre al equipo (“hostname”).Inicializar el control del teclado y ratón.Operaciones de comprobación del sistema de ficheros.Montaje de discos y dispositivos de almacenamiento locales.

Aplicaciones Avanzadas de Telemática 28Mario Muñoz Organero.

Preparación del Sistema de FicherosEl programa utilizado para comprobar que el sistema de ficheros no tiene inconsistencias es fsck.Algunas de las inconsistencias detectadas son benignas y pueden ser solventadas automáticamente.En cuanto se detecta un error importante el sistema pasa a ejecutar en modo usuario único para que el administrador analice el problema.Existen diferentes políticas a la hora de ejecutar fsck. Se puede ejecutar automáticamente cada vez que se arranca el sistema, o sólo cuando éste se ha detenido de manera anómala (caída de tensión).Ejemplo:

En Red Hat, al arrancar se crea un fichero vacío con nombre /.autofsck.Este fichero se borra en el proceso de parada del sistema.La presencia de este fichero durante la secuencia de arranque denota que el sistema ha sido detenido de forma anómala, y se fuerza la ejecución de fsck.Tras un número determinado de arranques correctos, se fuerza igualmente la ejecución de fsck.

La implementación de estas políticas se plasma en los scripts preliminares que ejecuta init, por ejemplo, en Red Hat en /etc/rc.sysinit.

Page 15: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 29Mario Muñoz Organero.

Montaje de Dispositivos Locales

Una vez que el sistema de ficheros ha sido verificado se procede a montar su contenido.Si se gestiona los ficheros con un sistema de cuotas, se debe recalcular las cuotas si fsck ha sido ejecutado.La primera partición en montarse es la partición raíz o el dispositivo que contiene el directorio /.Esta partición, generalmente ha sido ya montada, pues el sistema está en pleno proceso de arranque, pero suele estar montada en modo sólo lectura. Se procede a montarla en modo lectura/escritura.Ejemplo: (Red Hat)

# Remount the root filesystem read-write.state=‘awk ’/ \/ / && ($3 !˜ /rootfs/) print $4 ’ /proc/mounts‘[ "$state" != "rw" ] && \mount -n -o remount,rw /# Mounting local filesystems:mount -a -t nonfs,smbfs,ncpfs -O no_netdev

Se montan los dispositivos declarados en el fichero /etc/fstab.

Aplicaciones Avanzadas de Telemática 30Mario Muñoz Organero.

Arranque de Servicios

Una vez que el sistema de ficheros está correctamente montado se procede a arrancar los diferentes servicios.La política seguida generalmente es arrancar los servicios locales, a continuación la interfaz de red, y finalmente los servicios que requieren la red.Los scripts de arranque de servicios tienen la siguiente estructura genérica:

El script contiene múltiples funcionalidades u órdenes que pueden ser seleccionadas a través del primer parámetro que recibe al ejecutarse. Por ejemplo: start, stop, restart, statusAl comienzo del script se cargan un conjunto de definiciones comunes.Se asignan valores a variables del entorno específicas para este servicio y comunes a todas las órdenes.A través de la construcción switch con respecto al primer parámetro se detecta la orden a ejecutar.Cada script debe comprobar exhaustivamente que existen todos los ficheros/recursos necesarios para una correcta ejecución.Se deben detectar todas las anomalías posibles.

Page 16: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 31Mario Muñoz Organero.

Arranque de la Interfaz de Red

Servicio especialmente complicado para arrancar.Se carga la definición de funciones auxiliares al script.Se buscan todas las tarjetas de red conectadas al sistema.Se deben considerar todos los escenarios posibles de dispositivos y protocolos (por ej. IPV6).La interfaz se arranca mediante el programa ifconfigEjemplo:ifconfig lo 127.0.0.1ifconfig eth0 inet 163.117.139.200 netmask 255.255.255.0

La primera línea arranca lo que se conoce como interfaz “loopback”

Aplicaciones Avanzadas de Telemática 32Mario Muñoz Organero.

Servicios que Utilizan la Red

Los servicios que se suelen arrancar tras el servicio de red son:inetd (xinetd): Servidor centralizador de un conjunto de aplicaciones que requieren de la conexión a la red.named, routed, gated: Servicios de encaminado y servicio de nombres. Proveen encaminado de paquetes y correspondencias entre nombres y direcciones de IP.timed: Sincroniza los relojes de diferentes equipos conectados a través de la red. Múltiples aplicaciones dependen en que los diferentes sistemas tengan sus relojes perfectamente sincronizados.portmap, rpc.statd, rpc.lock: Servicio de ejecución remota de procedimientos. Estos demonios se encargan de recibir peticiones de ejecución de servicios a través de ciertos puertos y devolver el resultado.nfsd, biod: Sistema de acceso a ficheros remotos. El sistema que ejecuta este servicio ofrece parte de su sistema de ficheros para que sea accedido desde otros equipos.automount: Similar al anterior, sólo que exporta los ficheros bajo demanda.sendmail: Servicio de transporte de mensajes. Recibe/Encamina mensajes entre máquinas.ypbind, ypserv: Servicios de base de datos distribuida. Dado un conjunto de tablas con datos, se ponen a disposición de un conjunto de sistemas a través de la red

Page 17: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 33Mario Muñoz Organero.

Arranque de Servicios estilo BSD

La actividad se concentra en un número muy reducido de scripts. Al arrancar se ejecutan los comandos en dichos scripts (algo parecido a lo que hace DOS con el autoexec.bat y config.sys).Pocas distribuciones de Linux lo soporta (ej: Slackware) Sólo dos modos: monousuario y multiusuario.Los scripts se almacenan en /etc y comienzan por el prefijo rc.El proceso de preparación del entorno se almacena en rc.boot.El arranque del modo multiusuario está contenido en los scripts/etc/rc y /etc/rc.local.En sistemas de tipo SunOS Solaris existe un script adicional /etc/rc.single para arrancar en modo usuario único.

Aplicaciones Avanzadas de Telemática 34Mario Muñoz Organero.

Arranque de Servicios estilo SystemVEl método de inicialización usado por el System V es uno de los más extendidos en las distribuciones del sistema Linux (ej: Red Hat, SuSE, Mandrake y Debian).Facilita la administración introduciendo los conceptos de runlevels.Veremos que el sistema al arrancar va pasando por diferentes niveles de ejecución.Cada servicio que se arranque podrá tener su script de inicialización.Asociaremos cada script de inicialización con un runlevel.

Page 18: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 35Mario Muñoz Organero.

Arranque de Servicios estilo SystemVEl proceso init decide qué servicios arrancar en base a la información contenida en el fichero de configuración /etc/inittab.Cada línea de este fichero tiene el siguiente formato:

id:runlevels:action:process

id: Campo de hasta cuatro caracteres que identifica la entrada en la tabla.runlevels: Lista de niveles de ejecución para los que esta entrada debe ser considerada.action: Acción a ejecutar de entre un conjunto prefijado.process: Especifica el proceso a ejecutar.

Aplicaciones Avanzadas de Telemática 36Mario Muñoz Organero.

Acciones en inittab

Las acciones más relevantes son:initdefault: Especifica el nivel de ejecución en el que debe arrancar el sistema. El último campo de la línea se ignora.wait: El proceso se inicia cuando el sistema ejecuta en el nivel especificado y el proceso init aguarda a su conclusión.sysinit: El proceso especificado se ejecuta al arrancar el proceso init y antes de cualquier otro script.ctraltdel: El proceso se ejecuta cuando se pulsan simultáneamente las teclas Control-Alt-Del.respawn: El proceso se ejecuta al finalizar finalizar la secuencia de arranque especificada (e.g. getty). Boot: El proceso se ejecuta durante el boot del sistema. Los runlevelsse ignoran.…

Page 19: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 37Mario Muñoz Organero.

Ejemplo de inittab

id:5:initdefault:

# System initialization.si::sysinit:/etc/init.d/rcS # (Debian y similares) si::sysinit:/etc/rc.d/rc.sysinit # (Redhat y similares) # En RedHat y sucedáneas es rc.d, Debian es init.dl0:0:wait:/etc/rc.d/rc 0l1:1:wait:/etc/rc.d/rc 1l2:2:wait:/etc/rc.d/rc 2l3:3:wait:/etc/rc.d/rc 3l4:4:wait:/etc/rc.d/rc 4l5:5:wait:/etc/rc.d/rc 5l6:6:wait:/etc/rc.d/rc 6

# Qué hacer en todos los runlevels si se presiona la combinación de teclas CTRL+ALT+DEL en una terminalca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

# Run gettys in standard runlevels1:2345:respawn:/sbin/mingetty tty12:2345:respawn:/sbin/mingetty tty23:2345:respawn:/sbin/mingetty tty3

# Run xdm in runlevel 5x:5:respawn:/etc/X11/prefdm -nodaemon

Aplicaciones Avanzadas de Telemática 38Mario Muñoz Organero.

El script rc

Script que gestiona el arranque y parada de los servicios para los diferentes niveles.No es eficiente incluir en dicho script todas las configuraciones posibles.Solución: Se crea un directorio para cada nivel con los scripts de los servicios a arrancar. Su nombre es /etc/rcN.d donde N es el número de nivel.Un servicio puede arrancarse en más de un nivel, por lo que se pueden tener scripts duplicados. Difícil y arriesgado de cara a posibles cambios.Solución: Se almacenan todos los scripts en un directorio, y desde cada directorio /etc/rcN.d se crean enlaces simbólicos. (por ejemplo el directorio init.d)

Page 20: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 39Mario Muñoz Organero.

Gestión de los Scripts de ArranqueEl directorio /etc/init.d contiene todos los scripts para arrancar/parar todos los servicios.Al pasar de un nivel a otro puede haber aplicaciones a arrancar, y otras que se deben detener.Solución: En cada directorio /etc/rcN.d se encuentran aquellos servicios a arrancar con un nombre con prefijo SNN, donde NN es un número de dos dígitos. Asimismo, los servicios a detener siguen el mismo esquema pero con el prefijo KNN.Con esta solución, el script rc ejecuta el nivel N simplemente iterando sobre aquellos scripts que comiencen por “K” en /etc/rcN.d, para detener ciertos servicios, y a continuación aquellos que comiencen por “S” para arrancar otros.Activar/Desactivar un servicio en un nivel se reduce a cambiar la primera letra de su nombre.

Aplicaciones Avanzadas de Telemática 40Mario Muñoz Organero.

Procedimiento para Detener el SistemaEl sistema se detiene para operaciones de mantenimiento, diagnóstico, cambios de periféricos y otras tareas administrativas.La secuencia de pasos a seguir para una correcta parada es:

1 Se notifica a los usuarios con la suficiente antelación (minutos, horas, días, semanas).2. Todos los procesos en ejecución reciben una señal que les notifica la parada del sistema.3. Se detienen todos los servicios mediante los scripts de arranque/parada.4. Se terminan las sesiones de los usuarios en el sistema y se eliminan los procesos todavía en ejecución.5. Se ejecutan todas las operaciones de disco pendientes.6. Dependiendo del tipo de parada, se pasa a modo usuario único, se detiene el procesador o se rebota el sistema.

Page 21: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 41Mario Muñoz Organero.

El Comando shutdown

Todos los requerimientos del proceso de parada se pueden realizar a través del comando shutdown.Permite enviar un mensaje a los usuarios con sesiones abiertas, esperar un cierto espacio de tiempo, y realizar las operaciones pertinentes para detener el sistema de forma correcta.Se puede utilizar igualmente para reinicializar el sistema.Si en lugar de detener el sistema se quiere pasar a modo usuario único el programa telinit instruye al proceso init para realizar los pasos pertinentes especificados en los scripts de arranque/parada.La terminación de todas las operaciones pendientes de disco se puede forzar a través del comando sync.Conviene ejecutarlo más de una vez para garantizar su éxito.

Aplicaciones Avanzadas de Telemática 42Mario Muñoz Organero.

El Comando shutdown

Algunas opciones de shutdown-r (reboot) | -h (halt) | -c (cancel)

+t (esperar t minutos) | now

-f (no fsck al reiniciar) | -F (fsck al reiniciar)

mensaje

Page 22: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 43Mario Muñoz Organero.

Cuando el Sistema Cae

A pesar de que un sistema esté funcionando con aparente normalidad, en cualquier momento puede dejar de responder a la funcionalidad requerida.Las causas de este comportamiento pueden ser de lo más variadas: fallos de hardware, problemas en el suministro de corriente, temperatura elevada, problemas graves en los dispositivos de entrada/salida, etc.Cuando el sistema se detiene en lugar de proceder a su inmediata reinicialización se debe obtener la máxima información posible sobre el motivo de la parada.Es posible que la reinicialización del equipo sin más no haga más que repetir la situación.El modo de usuario único permite un arranque gradual del sistema y por tanto una exploración detallada de los posibles mensajes que hayan producido las aplicaciones antes de la anomalía.El sistema de gestión de mensajes syslogd es una fuente muy importante de información.En algunos sistemas operativos es posible configurar el kernel para que cree una imagen del ejecutable cuando se produce la anomalía.Esta imagen se almacena en disco y es susceptible de ser procesada por herramientas especiales.

Ficheros de configuración

Page 23: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 45Mario Muñoz Organero.

El sistema de fichero típico en LinuxEl sistema de ficheros en Linux juega un papel muyimportante en la administración y configuración de servicios. Un administrador deberá ser capaz de identificar dóndeinstalar los diferentes servicios y donde ubicar losficheros de configuración de los mismos. Una distribución típica de Linux tendrá un directorio raíz“/” que contentendrá en su interior directorios como:cdrom home opt tmp dev lib proc usrbin etc lost+found root var boot floppy mnt sbin

Aplicaciones Avanzadas de Telemática 46Mario Muñoz Organero.

El contenido de algunos directoriosEl /bin contiene muchos de los comandos comunes en Linux como ls, mkdir o mv.El directorio /home o el directorio /userscontienen las cuentas de los usuarios del sistemaEl directorio /usr contiene programas de usuarioEl directorio /etc contiene los ficheros de configuración de muchos de los servicios del sistema.

Page 24: Arranque y parada de sistemas Linux · Mario Muñoz Organero. Aplicaciones Avanzadas de Telemática 9 Selección del Dispositivo de Arranque Los sistemas suelen tener disponibles

Aplicaciones Avanzadas de Telemática 47Mario Muñoz Organero.

Algunos ficheros de configuración

Algunos de los ficheros típicos de configuración del sistema son:

/etc/passwd – contiene la lista de usuarios del sistema, sunombre (y a veces contraseña), su directorio raíz así como el tipo de shell a usar./etc/shadow – contiene las passwords o contraseñas cifradas de los usuarios del sistema. /etc/lilo.conf – la configuración del gestor de arranque/etc/group – la lista de grupos del sistema/etc/hosts – lista de equipos y traducción a dirección IP. Usadoen complemento a DNS/etc/fstab – información sobre las particiones del sistema

Aplicaciones Avanzadas de Telemática 48Mario Muñoz Organero.

Algunos ficheros de configuración

Algunos más del directorio /etc:El inittab contiene la configuración del proceso init

El yp.conf contiene información de configuración del servicio de NIS (junto con otros ficheros)

crontab contiene información para el proceso cron que ejecutas tareas de forma automática a determinadas horas.

El fichero exports permite configurar los directorios que se pueden montar por otros equipos en la red y qué equipos tienen permisos para montarlos.

El fichero hostname contiene el nombre del equipo

… otros muchos que iremos viendo a lo largo de la asignatura