|
|
||
|
||
|
|
| Red Hat Documentation |
El Proceso de Arranque, Inicialización, y ApagadoEsta sección contiene información sobre lo que ocurre al arracnar o apagar un sistema Red Hat Linux. Detrás de la Escenas de le proceso de inicio i386Cuando se arranca un ordenador, el procesador busca al final de la memoria del sistema la BIOS (Basic Input/Output System) y la ejecuta. La BIOS está escrita en memoria permanente de sólo lectura, y siempre está disponible. La BIOS proporciona el nivel más bajo de interfaz a los dispositivos y controla el primer paso del arranque. La BIOS comprueba el sistema, busca y comprueba dispositivos y busca un disco del que arrancarcar. Generalmente, comprueba la disquetera (o CD-ROM en sistemas modernos), si existe, y a continuación el dico duro. En el disco duro, la BIOS busca un Master Boot Record (MBR) empeznado en el primer sector del disco y ejecuta el MBR. El MBR busca la primera partición activa y lee el sector de arranque. El sector de arranque contiene instrucciones sobre como cargar el cargador de arranque, LILO (LInux LOader). El MBR carga LILO y LILO se encarga del resto. LIO lee el fichero /etc/lilo.conf, que dice que sistemas operativos o que kernels hay configurados para arrancar y donde debe instalarse LILO para el arranque (por ejemplo, /dev/hda para el disco duro). LILO muestra una línea de comandos LILO: en pantalla y espera por un periodo de tiempo preestablecido (también especificado en lilo.conf) acción por parte del usuario. Si lilo.conf está configurado para dar a LILO una elección de sistemas operatorivos, podría teclearse la etiqueta del sistema que se quiera arrancar. Tras esperar un tiempo establecido (5 segundos es normal), LILO procede a arrancar el sistema operativo que aparezca primero en el fichero lilo.conf. Si LILO arranca Linux, arranca primero el kernel, que es un fichero vmlinuz (más un número de versión, por ejemplo, vmlinuz-2.2.15-xx) situado en el directorio /boot. A partir de entonces el kernel toma el control. El kernel busca en varios sitios init (/sbin es un lugar habitual) y ejecuta el primero que encuentra. Init toma el control. Init arranca (y se conviert en padre o superior) todos los procesos que componen el sistema Linux. Primero, ejecuta /etc/rc.d/rc.sysinit, que configura el path, configura la red si es necesario, arranca el swapping, comprueba los sistemas de ficheros y lo que venga. Basicamente rc.sysinit se cuida de que todo lo que tu sistema necesita se haga en la inicialización. Por ejemplo, en un sistema en red rc.sysinit utiliza la información de /etc/sysconfig/network y /etc/sysconfig/clock para inicializar procesos y el reloj. También puede ejecutar rc.serial, si hay procesos de puerto serie que necesiten incialización. Init lee e implementa el fichero /etc/inittab. El fichero /etc/inittab describe como debe configurarse el sistema para cada nivel de ejecución y da un nivel por defecto. Este fichero declara que /etc/rc.d/rc y /sbin/update deben ser ejecutados siempre que se ejecuta un nuevo nivel. El fichero /sbin/update envía los buffers de disco al disco. Cada vez que se cambia de nivel de ejecución, /etc/rc.d/rc arranca y para servicios. Primero, rc pone ls función fuente de librería para el sistema (comunmente /etc/rc.d/init.d/functions), que dice como arrancar/parar un programa y como encontrar el PID de un programa. El fichero rc averigua el actual nivel de ejecución y el anterior y notifica a linuxconf el nivel apropiado. El fichero rc arranca todos los procesos necesarios para que el sistema pueda funcionar, y busca un directorio rc para el nivel de ejecución (/etc/rc.d/rc<x>.d, donde <x> está numerado de 0 a 6). rc para todos los scripts de parada (el nombre empieza con una K) en /rc.d/. Entonces inicializa todos los scripts de arranque (los nombres empiezan con una S) en el directorio del nivel de ejecución apropiado (para que todos los servicios sean arrancados correctamente). Por ejemplo, para nivel 5, rc busca en el directorio /etc/rc.d/rc5.d y ve que necesita parar rusersd, rwalld, rwhod, mcserv, mars-nwe, apmd, u pcmcia. Justo a continuación, rc mira en el mismo directorio y ve scripts de arranque para kmod, network, nfsfs, randomc, syslog, atd, crond, portmap, snmpd, inet, xntpd, lpd, nfs.rpmsave, dhcpd, ypbind, autofs, keytable, sendmail, gpm, sound, y smb.rpmsave. Y la vida comienza de nuevo. El fichero /etc/inittab se duplica para ejecutar un proceso getty para cada consola virtual para cada nivel (niveles 2-5 tienen las seis; nivel 1, que es monousuario, sólo tiene una consola; los niveles 0 and 6 no tienen consolas virtuales). En el nivel de ejecución 5, /etc/inittab también ejecuta un sricpt llamando /etc/X11/prefdm. El script prefdm ejecuta el gestor de pantalla preferido (gdm si esta ejecutando GNOME, kdm si esta ejecutando KDE, o xdm is esta ejecutando AnotherLevel) basando se en el contexto de el directorio /etc/sysconfig/desktop. También, /etc/inittab describe como el sistema debe gestionar la traducción de Ctrl-Alt-Delete en algo como el comando /sbin/shutdown -t3 -r now. Y finalmente, /etc/inittab indica que debe hacer sistema si falla el fluido elétrico. En este momento, el proceso de arranque ha concluido y puede realizarse una conexión. Y sólo llevo unos pocos segundos. A continuación, veremos el contenido de los ficheros de /etc/sysconfig. Información SysConfigEsta información da una introducción a los ficheros de /etc/sysconfig, sus funciónes, y sus contenidos. Ficheros en /etc/sysconfigLos siguentes ficheros suelen encontrarse en /etc/sysconfig:
Veamos cada uno. /etc/sysconfig/apmdEl /etc/sysconfig/apmd es usado por apmd, como una configuración para que cosas como arrancar/parar/cambiar se suspendan. Es configurado para iniciar o finalizar apmd durante el inicio, dependiendo de si su hardware soporta Advanced Power Management (apm), o si eleige no usarlo. /etc/sysconfig/clockEl fichero /etc/sysconfig/clock controla la interpretación de los valores leídos del reloj del sistema. Anteriores versiones de Red Hat Linux usaban los siguientes valores (obsoletos):
Actualmente los valores son:
/etc/sysconfig/desktopEl fichero /etc/sysconfig/desktop especifica el gestor de escritorio a ejecutar. /etc/sysconfig/harddisksEl fichero /etc/sysconfig/harddisks permite configurar disco duro(s). Puede contener lo siguiente:
/etc/sysconfig/hwconfEl fichero /etc/sysconfig/hwconf da una lista de todo el hardware que kudzu detectó en el sistema así como los controladores utilizados, ID del vendedor e ID del dispositovo. No está para ser editado. Si se edita podrían aparecer/desaparecer dispositivos de forma errática. /etc/sysconfig/initEl fichero /etc/sysconfig/init controla como el sistema aparecer; durante el arranque. Los siguientes valores puede ser usados:
/etc/sysconfig/i18nEl fichero /etc/sysconfig/i18n pone el lenguaje por defecto, etc. /etc/sysconfig/keyboardEl fichero /etc/sysconfig/keyboard controla el comportamiento del teclado. Se pueden usar los siguientes valores:
/etc/sysconfig/mouseEl fichero /etc/sysconfig/mouse se usa para especificar información sobre los ratones disponibles. Los siguientes valores se pueden usar:
Además, /dev/mouse es un enlace simbólico al dispositivo del ratón. /etc/sysconfig/networkEl fichero /etc/sysconfig/network se usa para especificar acerca de la configuración de red deseada. Los siguientes valores se pueden usar:
/etc/sysconfig/pcmciaEl fichero /etc/sysconfig/pcmcia se usa para especificar información de configuración PCMCIA. Los siguientes valores pueden usarse:
/etc/sysconfig/sendmail/etc/sysconfig/sendmail permite enviar mensajes a uno o más destinatarios, encaminando el mensaje a las redes que se necesite. El fichero tiene valor por defecto para que sendmail se ejecute. Sus valores por defecto son: ejecutarse como un demonio y comprobar la cola de correo cada hora si algo se queda almacenado. Valores que se pueden utilizar:
/etc/sysconfig/soundcardEl fichero /etc/sysconfig/soundcard es generado por sndconfig y no debe ser modificado. El solo uso de este es determinar que tarjeta se presentará por defecto la próxima vez que se ejecute sndconfig. It may contain the following:
Files in /etc/sysconfig/network-scripts/Normalmente ese pueden econtrar los siguientes ficheros en /etc/sysconfig/network-scripts:
Veamos cada uno. /etc/sysconfig/network-scripts/ifup, /etc/sysconfig/network-scripts/ifdownEstos son enlaces simbólicoa a /sbin/ifup u /sbin/ifdown, respectivamente. Estos son sólo dos scripts en este directorio que deberían ser llamados directamente; estos dos scripts llaman a todos los demas según sea necesario. Estos enlaces están aquí por cuestiones históricas sólo — eliminados en el futor, así que sólo /sbin/ifup y /sbin/ifdown deberían usarse. Estos scripts acepta un argumento normalmente: el nombre del dispositivo (p.e. "eth0"). Son llamados con un segundo argumento "boot" durante el arranque para que dispositivos que no deban ser activados durante el arranque (ONBOOT=no, [ver abajo]) puedan ser ignorados en ese momento. /etc/sysconfig/network-scripts/network-functionsNo es realmente un fichero público. Contiene funciones que los scripts utilizan para activar y desactivar interafaces. En particular, contiene la mayoría del código para manejar configuracions de interfaces alternativos y notificación de cambio en interfaces a través de netreport. /etc/sysconfig/network-scripts/ifcfg-< interface-name>, /etc/sysconfig/network-scripts/ifcfg-< interface-name>:<clone-name>El primer fichero define un interfaz, mientras que el segundo fichero contiene sólo las partes de la definición que son diferentes en un "clon" (o alternativa) interfaz. Por ejemplo, los número de red podrían ser diferentes, pero todo lo demás debería ser lo mismo, así que sólo los números de red estarían en el fichero clon, mientras que toda la información del dispositivo estaría en el fichero ifcfg base. Los elementos que se pueden defindir en un fichero ifcfg dependen del tipo de interfaz. Los siguientes valores son comunes a todos los ficheros base:
Los siguientes valores son comunes a todos los ficheros SLIP:
/etc/sysconfig/network-scripts/chat-<interface-name>Este fichero es un script chat para conexiones o SLIP, y está pensado para establecer la conexión. Para disposistivos SLIP, se escribe un script DIP del script chat; . /etc/sysconfig/network-scripts/dip-<interface-name>Este script, de sólo escritura, es creado a partir del scrip de chat por netcfg. No modificar este fichero. En el futuro, este fichero podría desaparece y ser creado al vuelo a partir del script de chat. /etc/sysconfig/network-scripts/ifup-postEste fichero es llamado cuando cualquier dispositivo de red (excepto un dispositivo SLIP) se activa. Llama a /etc/sysconfig/network-scripts/ifup-routes para poner las rutas estáticas que dependen de ese dispositivo. Crea los alias para ese dispositivo. Pone el nombre de host si no está ya puesto y se puede encontrar un nombre para la IP de ese dispositivo. ifup-post Envía SIGIO a cualquier programa que haya requerido notificación de eventos de red. Podría extenderse para establecer la configuración del servicio de nombres, llamar aleatoriamentes los scripts, y más, según se necesite. Init del Sistem VEsta sección es una breve descripción de la parte interna del proceso de inicialización. Describe como el ordenador arranca utizando el init de SysV, así como las diferencias entre el init utilizado en antiguas versiones de Linux, y init de SysV. El programa Init es ejecutado por el kernel al arrancar. Está a cargo de arrancar todos los procesos normales que necesitan ejecutarse al inicializar. Estos incluyen los procesos getty para permitir la conexión, demonio de NFS, demonio de FTP y cualquier otra cosa que se quiera inicializar en el arranque. El init de SysV se está convirtiendo rapidamente en el estándar en el mundo Linux para controlar el proceso de arranque de software al inicializar, porque es más fácil de usar, más potente y flexible que el tradicional init de BSD. El init de SysV también difiere del init de BSD en que los ficheros de configuración están en un subdirectorio de /etc en vez de residir directamente en /etc. En /etc/rc.d, se encuentra rc.sysinit y los siguentes directorios:
El directorio init.d contiene scripts varios. Básicamente, hay que tener un script por cada servicio que se necesite arrancar al inicializar o al cambiar de nivel de ejecución el sistema. Los servicios incluyen cosas como red, nfs, sendmail, httpd, y muchos más. Los servicios no no incluyen cosas como setserial que sólo se ejecuta y termina. Cosas como esa debería estar en rc.local o rc.serial. Si se quiere un rc.local, debería estar en /etc/rc.d. La mayoría de los sistemas incluyen uno aunque no hace mucho. También se puede incluir un fichero rc.serial en /etc/rc.d si se necesita realizar tareas especificas de puerto serie al inicializar. La cadena de eventos es como sigue:
El nivel de ejeción por defecto está determinado en /etc/inittab. Debería haber una línea cerca del principio como:
De esto se mira la segunda columna y se ve que el nivel por defecto es 3. Para cambiarlo se puede editar el fichero /etc/inittab a mano. Hay que ser cuidados al editar inittab. Si se estropea se puede arreglar reinicializando y tecleando:
Esto debe permite arrancar en modo monousuario de forma que se puede reeditar inittab y ponerlo como antes. Ahora bien, ¿ cómo se ejecutan los scripts adecuados ? Si se teclea ls -l on rc3.d, se puede ver algo como:
Se ve que no hay archivos "reales" en el directorio. Todo son enlaces a alguno de los scripts en el directorio init.d. Los enlaces también tiene una "S" y un número al principio. La "S" significa que hay que inicializar este servicio y una "K" significaría que hay que detenerlo. El número en el nombre es para ordenar los archivos. Init arrancará los servicios basándose en el orden en que aparecen. Se pueden duplicar los números pero sólo añadirá confusión. Sólo es necesario un número de dos dígitos, junto con una "S" o una "K" para arrancar o detener los servicios que se requieran. ¿ Como es capaz init de arrancar y detener servicios ? Simple. Cada uno de los scripts está escrito para aceptar un argumento que puede ser "start" y "stop". Se pueden ejecutar los scripts a mano. De hecho con un comando como:
¿ Por qué todos estos niveles de ejecución ? Algunos quieren un método sencillo de configurar ordenadores para ser multipropósito. Se puede tener un nivel "servidor" que sólo ejecuta httpd, sendmail, red, etc. Se puede tener un nivel de "ususario" que ejecuta gdm, red, y demás. Niveles de Ejecución de InitGeneralmente Red Hat Linux opera en nivel 3 — modo multiusuario total. Los siguientes nivels están definidos en Red Hat Linux:
Si el ordenador no arranca por culpa de un /etc/inittab mal definido, o no permite la conexión porque hay un /etc/passwd corrupto o simplemente la contraseña de root ha sido olvidada, basta con arrancar en modo monousuario tecleando linux single en la línea de comandos de LILO. Un sistema muy básico arrancará y habrá una línea de comando desde la que se pueden reparar cosas. Utilidades InitscriptLa utilidad chkconfig provee de una simple herramienta de línea de comandos para mantener la jerarquía de directorios /etc/rc.d. Libera a los administradores de sistemas de tener que manipular directamente numerosos enlaces simbólicos en /etc/rc.d. Además, está la utilidad ntsysv, que da un interfaz de carácter con ventanas, ver el interfaz de línea de comandos de chkconfig. Véanse la sección de nombre Controlar el Acceso a los Servicios o las páginas de manual de chkconfig y ntsysv para obtener mayor información. Ejecución de Programas durante la InicializaciónEl archivo /etc/rc.d/rc.local es ejecutado durante la inicialización, después de que toda la demás inicialización ha sido completada y cuando se cambia el nivel de ejecución del sistema. Se pueden añadir comandos adicionales de incialización aquí. Por ejemplo, se puede querer arrancar demonios adicionales, o inicializar una impresora. Además, si se requiere configurar puertos serie, se puede editar /etc/rc.d/rc.serial, y se ejecutará automáticamente durante la inicialización. El /etc/rc.d/rc.local por defecto, simplemente crea un bonito mensaje de bienvenida con la versión del kernel y el tipo de ordenador. Apagando el SistemaPara apagar un sistema Red Hat Linux, hay que ejecutar el comando shutdown. Para más detalles se puede leer la página de manual de shutdown, pero los dos usos más comunes son:
Cualquiera apagará el sistema limpiamente. Después de pararlo todo, la opción -h detendrá el ordenador, y la opción -r reinicializará el ordenador. Aunque los comandos reboot y halt son ahora suficientemente "inteligentes" para llamar a shutdown si se ejecutan mientras el nivel de ejecución del sistema está entre 1 y 5, es una mala costumbre utilizarlos, ya que no todos los sistemas operativos tipo Linux y similares soportan esta característica. | ||||||||||||||||||
|
|