el artículo completo - Pedagogía Profesional

Anuncio
La Secuencia de Arranque en LINUX
La secuencia de arranque en Unix/Linux
Lic. Sonia Rabelo Padua
INTRODUCCIÓN
Desde hace varios años, el Sistema GNU/Linux ha incursionado en los Sistemas Operativos de los grandes
servidores de la red de redes.
Cuba no está ajena al cambio necesario hacia la migración de este Sistema Operativo en las computadoras que
conforman las Intranets de los Institutos Superiores Pedagógicos; en particular del ISPETP “Héctor A. Pineda
Zaldívar”
Dentro de la estrategia concebida para que los estudiantes de la carrera Licenciatura en Educación en la
Especialidad Informática tengan bibliografía relacionada con el tema de software libre, GNU/Linux, los protocolos
de trabajo entre otros, que favorecen el Proceso de Enseñanza-Aprendizaje en el Instituto, está la creación de
artículos sobre estos temas..
La experiencia de la autora en al instalación del sistema operativo, así como el tiempo de explotación que llevan
los servidores DNS con este sistema en el Instituto, le da la posibilidad de poder plasmar en este trabajo de forma
clara y con los elementos necesarios para su comprensión, el proceso de arranque de la computadora en el sistema
operativo Unix/Linux, una vez que es encendida la misma, existe la posibilidad de hacer entrar al sistema en
diferentes estados, es decir, el sistema puede adoptar varios modos de operación conocidos como estados init. En
Linux existen varias versiones de init, y cada una hace las cosas a su manera, una de las que pueden suceder
cuando init arranca entre otros es el control de integridad del sistema de archivos. El proceso init obtiene sus
instrucciones del fichero /etc/inittab (tabla de init). El contenido de este fichero controla todos los estados init y
también determina que procesos deben ser regenerados cuando mueran. El fichero inittab es una base de datos
típica de Unix. Cuando init comienza lee las líneas de fichero inittab por orden y toma una acción dependiendo del
contenido de cada línea.
DESARROLLO
La Secuencia de Arranque en Unix/Linux
Al encender la computadora sigue un proceso de arranque. Esta secuencia de arranque(boot) puede tardar varios minutos en dependencia del
hardware y software instalado en la máquina y no hay modo de hacer que vaya más rápidamente. El proceso de arranque incluye varios
chequeos de sanidad y con frecuencia trata de reparar cualquier daño, especialmente daño en los ficheros de disco rígido. La mayoría de las
máquinas Unix tienen procedimientos internos para minimizar esta verificación de errores si la desconexión anterior se completó
correctamente. Por tanto la secuencia de arranque después de una caída de potencia o de alguna otra desconexión inadvertida será
probablemente más completa y compleja que un arranque después de una desconexión normal. En cualquier caso la secuencia de arranque
suele ayudar a reparar los problemas del sistema.
En el procedimiento de arranque, en primer lugar se ejecuta el cargador ROM, cuya responsabilidad es cargar las primeras partes del sistema
operativo del disco, de echo, el cargador ROM carga otro programa cuyo trabajo es cargar el propio sistema Unix. Este software adicional
cargador esta almacenado en el disco sistema, de modo que debe ser cargado por módulos hardware y ROM que existen permanentemente.
Después que el cargador software es traído a memoria, la ROM cede el control y este comienza a ejecutarse. En este punto la máquina está
obligada a ejecutar el sistema Unix, ya que el cargador software solo puede tratar con su propio sistema operativo. Cuando el cargador
file:///C|/xampp/htdocs/Revista1520/Numeros/Vol%2005%20No%204/sonia.htm[05/10/2013 3:32:36]
La Secuencia de Arranque en LINUX
software comienza muestra el mensaje:
Booting the UNIX System...
Y carga entonces el núcleo(kernel) del sistema operativo, que es normalmente /unix. Como parte de la secuencia de inicialización, el núcleo
puede visualizar cuanta memoria total real hay instalada en el sistema, si esta cantidad difiere de la cantidad de memoria física, si hay
problema de hardware que debe ser reparado. El núcleo solamente se ocupa de administrar los otros programas, entonces cuando está
satisfecho con que todo anda bien debe arrancar otro programa para que haga los trabajos útiles.
El procedimiento de arranque en Unix se complica por la posibilidad de hacer entrar al sistema en diferentes estados, es decir, el sistema
puede adoptar varios modos de operación conocidos como estados init, o como runlevel que son:
ESTADO FUNCIÖN
0 Apagar la máquina
1 Modo de usuario único
2 Ficheros sin NTFS
3 Modo Texto
4 No usado
5 Modo Gráfico
6 Desconexión y arranque
El estado más comúnmente utilizado es el modo multiusuario, este es el estado del sistema utilizado para casi todas las interacciones y el único
que permite más de un usuario. Otro estado históricamente utilizado pero de raro uso hoy, es el modo de usuario único, puede ser utilizado
para una actualización del kernel (núcleo) rápida. Para cada uno de los runlevel existen una determinada cantidad de servicios. Por omisión shutdown lleva la máquina al estado 0, preparando así la desactivación de la potencia del sistema. Sin embargo el argumento –i
permite establecer explícitamente el estado init a uno de los estados disponibles. La mayoría de las versiones de shutdown solo soportan los
estados init 0, 5 y 6. La orden telinit sirve para cambiar entre los estados. Por ejemplo la siguiente orden activará la comunicación por la red
desde el estado 2 al 3,
ej: # telinit 3
Tras la terminación de la inicialización interna, el sistema arranca el demonio /etc/init, el cual asume el control de arranque. El proceso init
permanece activo durante todo el tiempo que el sistema este corriendo. Sirven varias funciones, la más importante es asegurarse que otros
demonios del sistema estén en ejecución cuando deban.
Una vez que el núcleo arranca init, no lanza ningún otro programa. El núcleo se transforma así en un administrador y proveedor, no en un
programa activo. Por lo tanto, para saber que es lo que hace la computadora luego que el núcleo arranca, deberemos examinar init. La
complicada secuencia de arranque por la que atraviesa init no es idéntica en todas las computadoras. Para Linux existen varias versiones de
init, y cada una hace las cosas a su manera. Además también incluye si su maquina esta en red, e incluso cual distribución utilizó para instalar
Linux. Algunas de las cosas que pueden suceder cuando init arranca son:
· El control de integridad del sistema de archivos
Un sistema de archivos es la disposición de los archivos en el disco rígido. Además permite que Unix sepa cuales partes del disco rígido están
ocupadas y cuales no. Desafortunadamente, los cortes en el suministro de energía hacen que la información que el sistema de archivos tiene
sobre la disposición en el disco de los archivos no coincida con la disposición real. Como el sistema Unix depende tanto de la sanidad del
sistema de ficheros, existe una herramienta especial para verificarlo y repararlo. Se trata de la orden /bin/fsck (file system check), que esta
reservada al super usuario.
La orden fsck también puede ser ejecutada en la consola del super usuario, con el nombre del sistema de ficheros a verificar como argumento
y especificarse el tipo de ficheros a verificar con la opción –f. La orden fsck ejecuta cinco fases diferentes que son:
1. Comprueba las tablas internas de tamaño real de los ficheros.
file:///C|/xampp/htdocs/Revista1520/Numeros/Vol%2005%20No%204/sonia.htm[05/10/2013 3:32:36]
La Secuencia de Arranque en LINUX
2. Verifica la sanidad de los nombres de camino de los directorios y de los ficheros.
3. Comprueba conectividad correcta entre ficheros y directorio padre.
4. Verifica la cuenta de enlace entre ficheros y sus nombres para asegurarse que los ficheros sean
correctamente diferenciados.
5. Asegura que todos los bloques no referenciados estén correctamente introducidos en la
lista de libres del sistema de ficheros. Cuando fsck encuentra un fichero o parte de un fichero que no está correctamente vinculado en el sistema de ficheros, lo revincula al sistema
en un lugar especial, este lugar son los directorios /lost+found y /usr/lost+found si la máquina tiene dos sistemas de ficheros. El directorio
/lost+found también aparecerá en discos flexibles que contengan el sistema de ficheros.
Cuando init arranca además:
· Se lanzan programas especiales de encaminamiento para las redes. Estos programas informan a su
computadora cómo se supone que puede comunicarse con las otras.
· Se borran los archivos temporales que crean ciertos programas.
· Se actualiza correctamente el reloj del sistema. Esto es más complicado de lo que puede parecer,
pues Unix de manera predeterminada, necesita la hora en UCT (Universal Coordinated Time),
también conocido como hora de Greenwich, y el reloj de la CMOS, que es alimentado por una batería
dentro de la computadora, muy probablemente estará configurado con la hora local. Esto significa
que debe tener algún programa que lea la hora del reloj de la CMOS y la corrija transformándola en
hora UCT.
Después que init termina con sus actividades de arranque, comienza con sus tareas planificadas. Init se convierte así en el padre de todos los
procesos del sistema Unix. Un proceso es simplemente un programa que está corriendo; como cualquier programa puede correr más de una
vez, entonces puede haber más de un proceso para un programa dado en particular.
En Unix, los procesos instancias de un programa, se crean mediante una llamada al sistema que es un servicio provisto por el núcleo
denominada fork (bifurcación) pues un proceso se bifurca en dos independientes, init forkea (bifurca) unos cuantos procesos, los que a su vez
forkean otros. En su sistema Linux con toda seguridad init corre varias instancias de un programa llamado getty, programa que le permitirá
iniciar el ingreso al usuario, y que a continuación lanzará el programa login.
A lo largo del proceso de arranque, Linux controla distintas partes del hardware y nos muestra mensajes indicativos de las mismas, como por
ejemplo:
This processor honours the WP bit even when in supervisor mode. Good.
El proceso init obtiene sus instrucciones del fichero /etc/inittab (tabla de init). El contenido de este fichero controla todos los estados init y
también determina que procesos deben ser regenerados cuando mueran. El fichero inittab es una base de datos típica de Unix, por líneas
formadas por varios campos separadas entre sí por dos puntos “:”. Cuando init comienza lee las líneas de fichero inittab por orden toma una
acción dependiendo del contenido de cada línea.
La estructura inittab es la siguiente:
· El primer campo de cada línea es un identificador que designa a cada línea y que debería ser único.
· El segundo campo define los estados init para los cuales la línea está activa. Puede contener más de
un estado, como en 23, que define la línea activa para los estados 2 y 3. Si no tiene contenido, esta
línea estará activa en todos los estados init.
· El tercer campo describe la acción que init tomará cuando se encuentre en uno de los estados
indicados en el segundo campo. Estas acciones pueden ser:
file:///C|/xampp/htdocs/Revista1520/Numeros/Vol%2005%20No%204/sonia.htm[05/10/2013 3:32:36]
La Secuencia de Arranque en LINUX
off ------------------ Eliminar la orden designada si existe
Once --------------- Ejecutar el proceso cuando entre al estado
designado sin esperar a que se complete.
Wait --------------- Ejecutar el proceso cuando entre al estado
designado esperando a que se complete.
Boot ---------------- Ejecutar el proceso únicamente cuando init lee
inittab en el tiempo de arranque, no esperando a
que se complete el proceso.
respawn ------------ Iniciar el proceso cuando entre a los estados
designados y lo regrese cada vez que detecte que
init ya no está ejecutándose.
Existen algunas líneas en la tabla inittab que especifican guiones que se ejecutan cuando se solicitan estados específicos. Todos ellos son
guiones shell y pueden ser inspeccionados si se desean, generalmente se ejecutará el /etc/rc2 (“run control” para el estado 2) ó ej.
10:0:wait:/etc/rc.d/rc=0
El rc.d es el directorio que tiene a su vez un conjunto de directorios donde tiene guardado
para cada runlever los servicios que tiene que hacer. Ahí aparecen una serie de ficheros con
su estado start ó kill y un número que indica la prioridad de ese servicio. La tabla inittab solo puede ser modificada por el super usuario, quien puede por ejemplo cambiar la acción respawn por off par desactivar un
proceso, o hacer el cambio inverso para reactivarlo. En muchos sistemas los cambios efectuados en inittab no sobrevivirán a la adición de
nuevo hardware, por lo que deberá actualizarse, con los cambios que se quieran, después de una instalación de hardware.
El programa init lee el fichero inittab una sola vez, cuando se inicia. Si se modifica inittab, estos cambios no tienen efecto hasta que se
informe a init que el fichero a cambiado. Esto se hace utilizando el programa telnit:
# telnit q
CONCLUSIONES
1. La secuencia de arranque de la computadora en UNIX/Linux; da la posibilidad a través del programa
init de establecer diferentes estados, es decir los sistemas de operación de acuerdo a lo que necesita
trabajar.
2. El programa init al arrancar da la posibilidad de:
· Informar como se pueden comunicar las computadoras entre sí.
· Borrar archivos temporales que crean ciertos programas.
· Actualizar correctamente el reloj del sistema.
BIBLIOGRAFIA
· http://www.cybercursos.net/AdministracionUnix visitada en el 2006
· G.L.U.P. Guía de Linux Para el Usuario Copyright c 1993, 1994, 1996 Larry Green_eld
file:///C|/xampp/htdocs/Revista1520/Numeros/Vol%2005%20No%204/sonia.htm[05/10/2013 3:32:36]
Descargar