El Proceso de Arranque, Inicialización, y Apagado

Esta 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 i386

Cuando 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 SysConfig

Esta información da una introducción a los ficheros de /etc/sysconfig, sus funciónes, y sus contenidos.

Ficheros en /etc/sysconfig

Los siguentes ficheros suelen encontrarse en /etc/sysconfig:

  • /etc/sysconfig/apmd

  • /etc/sysconfig/clock

  • /etc/sysconfig/harddisks

  • /etc/sysconfig/hwconf (no debería editarse)

  • /etc/sysconfig/init

  • /etc/sysconfig/keyboard

  • /etc/sysconfig/mouse

  • /etc/sysconfig/network

  • /etc/sysconfig/pcmcia

  • /etc/sysconfig/sendmail

  • /etc/sysconfig/soundcard (es creado por sndconfig)

Veamos cada uno.

/etc/sysconfig/apmd

El /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/clock

El 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):

  • CLOCKMODE=mode, donde mode es uno de los siguientes:

    • GMT — indica que el reloj está en UTC.

    • ARC — en Alpah indica que el offset de 42 años de consola está activo.

Actualmente los valores son:

  • UTC=boolean, donde boolean es lo siguiente:

    • true — indica que en UTC. Cualquier otro indica que el reloj está en tiempo local.

  • ARC=boolean, donde boolean es lo siguiente:

    • true — (para Alpah sólo) India que el offset de 42 años de la consola está activo. Para cualquier otro valor se asume la convención de tiempo UNIX normal.

  • ZONE="filename" — indica el fichero de zona /user/share/zoneinfo que /etc/localtime una copia de, por ejemplo:

    ZONE="America/New York"

/etc/sysconfig/desktop

El fichero /etc/sysconfig/desktop especifica el gestor de escritorio a ejecutar.

/etc/sysconfig/harddisks

El fichero /etc/sysconfig/harddisks permite configurar disco duro(s).

Puede contener lo siguiente:

  • USE_DMA=1, que configura este a 1 el DMA habilitado. Sin embargo, con algunos chips y combinaciones, este podrí causar algunos datos erroneos.

  • Multiple_IO=16, que configura a 16 permitiendo a multiples sectores por interrupción I/O. Cuando habilitas, esta caracteristica reduces el sistema operativo por encima del 30-50%.Usar con precaución.

  • EIDE_32BIT=3, habilitas (E)IDE 32-bit I/O soportada a una tarjeta de interface.

  • LOOKAHEAD=1, habilitar disco read-lookahead.

  • EXTRA_PARAMS=, donde el parametro extra puede ser añadido.

/etc/sysconfig/hwconf

El 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/init

El fichero /etc/sysconfig/init controla como el sistema aparecer; durante el arranque.

Los siguientes valores puede ser usados:

  • BOOTUP=<algún modo de arranque>, donde <algún modo de arranque> es alguno de los siguientes:

    • BOOTUP=color significa nuevo estilo(desde of Red Hat Linux 6.0)

    • BOOTUP=verbose significa viejo estilo.

    • Cualquier otra cosa signica nuevo estilo pero sin formateo ANSI.

  • LOGLEVEL=<un número>, donde <un número> configura el nivel inicial de traceo a la consola del kernel. Por defecto es 7; 8 significa todo (incluyendo depuración); 1 significa nada salvo kernel panics. syslogd puede cambiarlo una vez que arranca.

  • RES_COL=<un número>, domde <un número> es la columna de la pantalla donde colocar etiquetas de estado. Por defecto a 60.

  • MOVE_TO_COL=<un commando>, donde <un comando> mueve el curso $RES_COL. Por defecto las secuencias ANSI se escriben con echo -e.

  • SETCOLOR_SUCCESS=<un comando>, donde <un comando> pone el color a uno que indica éxit. Por defecto secuencias ANSI escritas con echo -e, poniendo el color a verde.

  • SETCOLOR_FAILURE=<un comando>, donde <un comando> pone el color a uno que indica fracaso. Por defecto secuencias ANSI escritas con echo -e, poniendo el color a rojo.

  • SETCOLOR_WARNING=<un comando>, donde <un comando> pone el color a uno que indica aviso. Por defecto secuencias ANSI escritas con echo -e, poniendo el color a amarillo.

  • SETCOLOR_NORMAL=<un comando>, donde <un comando> pone el color a 'normal'. Por defcto secuencias ANSI escritas con echo -e.

  • PROMPT=una respuesta, donde una respuesta es una de las siguientes:

    • yes — Activa la comprobación de tecla para modo interactivo.

    • no — Desactiva la comprobación para modo interactivo.

/etc/sysconfig/i18n

El fichero /etc/sysconfig/i18n pone el lenguaje por defecto, etc.

/etc/sysconfig/keyboard

El fichero /etc/sysconfig/keyboard controla el comportamiento del teclado. Se pueden usar los siguientes valores:

  • KEYTABLE=file, donde file es el nombre de un fichero de teclado. Por ejemplo: KEYTABLE="/usr/lib/kbd/keytables/us.map"

  • KEYBOARDTYPE=sun|pc, que sólo se usa en SPARC. sun significa que hay un teclado sun en /dev/kbd, pc significa que hay un teclado PS/2 en un puerto PS/2.

/etc/sysconfig/mouse

El fichero /etc/sysconfig/mouse se usa para especificar información sobre los ratones disponibles. Los siguientes valores se pueden usar:

  • MOUSETYPE=type, donde type es uno de los siguientes:

    • microsoft — Microsoft.

    • mouseman — MouseMan.

    • mousesystems — Mouse Systems.

    • ps/2 — PS/2.

    • msbm — Microsoft bus.

    • logibm — Logitech bus.

    • atibm — ATI bus.

    • logitech — Logitech.

    • mmseries — older MouseMan.

    • mmhittab — mmhittab.

  • XEMU3=emulation, donde emulation es uno de los siguientes:

    • yes — Emular ratón de tres botones.

    • no — El ratón ya tiene tres botones.

Además, /dev/mouse es un enlace simbólico al dispositivo del ratón.

/etc/sysconfig/network

El fichero /etc/sysconfig/network se usa para especificar acerca de la configuración de red deseada. Los siguientes valores se pueden usar:

  • NETWORKING=respuesta, donde respuesta es una de los siguientes

    • yes — Configurar red.

    • no — No configurar red.

  • HOSTNAME=hostname, donde hostname debería ser el FQDN (Fully Qualified Domain Name), pero puede ser cualquier cosas.

    NotaNota
     

    Por compatibilidad con software antiguo que podría instalarse install (como trn), el fichero /etc/HOSTNAME debería tener el mismo valor que aquí.

  • GATEWAY=gw-ip, donde gw-ip es la dirección IP del gateway de red.

  • GATEWAYDEV=gw-dev, donde gw-dev es el dispositivo de red del gateway (p.e. eth0).

  • NISDOMAIN=dom-name, donde dom-name es el nombre dominio NIS.

/etc/sysconfig/pcmcia

El fichero /etc/sysconfig/pcmcia se usa para especificar información de configuración PCMCIA. Los siguientes valores pueden usarse:

  • PCMCIA=answer, donde answer es uno de los siguientes:

    • yes — Soporte para PCMCIA debe ser habilitado.

    • no — Soporte para PCMCIA no debe ser habilitado.

  • PCIC=pcic-type, donde pcic-type es alguno de los siguientes:

    • i82365 — El ordenador tiene un chipset para el puerto PCMCIA de tipo i82365.

    • tcic — El ordenador tiene un chipset para el puerto PCMCIA de tipo tcic.

  • PCIC_OPTS=option, donde option son los parametros de tiempo del controlador (i82365 or tcic).

  • CORE_OPTS=option, donde option es la lista de opciones pcmcia_core.

  • CARDMGR_OPTS=option, donde option es la lista de opciones para la aplicación PCMCIA cardmgr (como -q, modo silencioso; -m, busca módulos de kernel en el directorio especificado; y otras, léase la página de manual de cardmgr para obtener más información).

/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:

  • DAEMON=answer, donde answer es cualquiera de los siguientes:

    • yesSendmail debería estar configurado. yes implica -bd.

    • noSendmail no debería estar configurado.

  • QUEUE=1h se da a sendmail como -q$QUEUE. La opción -q no se le da a sendmail si /etc/sysconfig/sendmail existe y QUEUE está vacío o indefinido.

/etc/sysconfig/soundcard

El 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:

  • CARDTYPE=<a card>, donde <a card> se ve como, por ejemplo, CARDTYPE=SB16.

Files in /etc/sysconfig/network-scripts/

Normalmente ese pueden econtrar los siguientes ficheros en /etc/sysconfig/network-scripts:

  • /etc/sysconfig/network-scripts/ifup

  • /etc/sysconfig/network-scripts/ifdown

  • /etc/sysconfig/network-scripts/network-functions

  • /etc/sysconfig/network-scripts/ifcfg-<interface-name>

  • /etc/sysconfig/network-scripts/ifcfg-< interface-name>-<clone-name>

  • /etc/sysconfig/network-scripts/chat-< interface-name>

  • /etc/sysconfig/network-scripts/dip-< interface-name>

  • /etc/sysconfig/network-scripts/ifup-post

Veamos cada uno.

/etc/sysconfig/network-scripts/ifup, /etc/sysconfig/network-scripts/ifdown

Estos 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-functions

No 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:

  • DEVICE=name, donde name es el nombre del dispositivo físico (excepto dispositivos PPP asignados dinamicamente donde es el "nombre lógico").

  • IPADDR=addr, donde addr es la dirección IP.

  • NETMASK=mask, donde mask es el valor de la máscara de red.

  • NETWORK=addr, donde addr es la dirección de red.

  • BROADCAST=addr, donde addr es la dirección de broadcast.

  • GATEWAY=addr, donde addr es la dirección IP del gateway.

  • ONBOOT=answer, donde answer es uno de los siguientes:

    • yes — Este dispositivo debe ser activado al arrancar.

    • no — Este dispositivo no debe ser activado al arrancar.

  • USERCTL=answer, donde answer es uno de los siguientes:

    • yes — Usuarios no root pueden controlar el dispositivo.

    • no — Usuarios no root no pueden controlar el dispositivo.

  • BOOTPROTO=proto, donde proto es uno de los siguientes:

    • none — No debería usarse protocolo de arranque.

    • bootp — Usar el protocolo BOOTP.

    • dhcp — Usar el protocolo DHCP.

Los siguientes valores son comunes a todos los ficheros SLIP:

  • PERSIST=answer, donde answer es uno de los siguientes:

    • yes — Este dispositivo debería ser mantenido activo siempre, incluso tras colgar el modem.

    • no — Este dispositivo no debería ser mantenido activo siempre, incluso tras colgar el modem.

  • MODEMPORT=port, donde port es el nombre del dispositivo del puerto del modem (por ejemplo "/dev/modem").

  • LINESPEED=baud, donde baud es la velocidad de línea del modem (por ejemplo, "115200").

  • DEFABORT=answer, donde answer es uno de los siguientes:

    • yes — Insertar cadenas de abortaje por defecto al crear/editar el script de este interfaz.

    • no — No insertar cadenas de abortaje por defecto al crear/editar el script de este interfaz.

/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-post

Este 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 V

Esta 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:

init.d
rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d
        

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:

id:3:initdefault:
        

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:

LILO boot:  linux single
        

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:

lrwxrwxrwx 1 root root 17 3:11 S10network -> ../init.d/network
lrwxrwxrwx 1 root root 16 3:11 S30syslog -> ../init.d/syslog
lrwxrwxrwx 1 root root 14 3:32 S40cron -> ../init.d/cron
lrwxrwxrwx 1 root root 14 3:11 S50inet -> ../init.d/inet
lrwxrwxrwx 1 root root 13 3:11 S60nfs -> ../init.d/nfs
lrwxrwxrwx 1 root root 15 3:11 S70nfsfs -> ../init.d/nfsfs
lrwxrwxrwx 1 root root 18 3:11 S90lpd -> ../init.d/lpd.init
lrwxrwxrwx 1 root root 11 3:11 S99local -> ../rc.local
        

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:
/etc/rc.d/init.d/httpd stop
          
Esto detiene el servidor de httpd. init lee el nombre y si tiene una "K", llama al script con el argumento "stop". Si tiene una "S" lo llama con un argumento de "start".

¿ 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 Init

Generalmente Red Hat Linux opera en nivel 3 — modo multiusuario total. Los siguientes nivels están definidos en Red Hat Linux:

  • 0 — Halt

  • 1 — Monousuario

  • 2 — Multiusuario, sin red

  • 3 — Multiusuario

  • 4 — Sin usar

  • 5 — Multiusuario (con pantalla de conexión gráfica basada en el sistema X)

  • 6 — Reinicialización

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 Initscript

La 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ón

El 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 Sistema

Para 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:

shutdown -h now
shutdown -r now
        

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.