Download   Online Shop   Red Hat Network
Home  |  Products & Services  |  Support  |  Training  |  Partners  |  Documentation   
Red Hat Documentation

El Proceso de Arranque, Inicializacin, y Apagado

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.

El Proceso de Arranque tras el telón

Cuando se arranca un ordenador, el procesador busca al final de la memoria del sistema la BIOS (Basic Input/Output System) and 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 acitva y lee el secotr de arranque. El sector de arranquee 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 quee se quiera arrancar.

Tras esperar un tiempo establecido (5 segundos esnormal), LILO procede a arrancar el sistema operativo quee 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 u /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 u /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 sisteema (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 processes necessary 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, u 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). /etc/inittab también indica que gdm, el gestor de conexión de X, debería arrancarse nivel 5.

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étricor

En este moemnto, 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/clock

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

  • /etc/sysconfig/mouse

  • /etc/sysconfig/sendmail

  • /etc/sysconfig/apmd

  • /etc/sysconfig/init

  • /etc/sysconfig/keyboard

  • /etc/sysconfig/network

  • /etc/sysconfig/pcmica

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

Veamos cada uno.

/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 -- 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 -- reloj 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 quee /etc/localtime una copia de, por ejemplo:

    ZONE="US/Eastern"
    		  

/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/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. mouse.

    • ps/2 -- PS/2.

    • msbm -- Microsoft bus.

    • logibm -- Logitech bus.

    • atibm -- ATI bus.

    • logitech -- Logitech.

    • mmseries -- Older MouseMan. mouse.

    • mmhittab -- Mmhittab.

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

    • yes -- Emular ratón de tres botones.

    • no -- No emular. buttons.

Además, /dev/mouse es un enlace simbólico al dispositivo del rató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:

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

    • no -- Sendmail 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/apmd

/etc/sysconfig/apmd es utilizado por apmd, como configuración de quee cosas arrancar/para/cambiar al suspender o volver al estado normal. Está configurado para encender y apagar apmd durante el arranque, dependiendo de si el hardware soporta Advanced Power Management (apm), o si decides no utilizarlo.

/etc/sysconfig/init

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

Se pueden usar los siguentes valores:

  • 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. ANSI-formatting.

  • LOGLEVEL=<un número>, conde <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 quee arranca.

  • RES_COL=<un número>, dpmde <un número> es la columna de la pantall 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 quee indica éxito success. 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.

  • MAGIC_SYSRQ=una respuesta, donde una respuesta es uno de los siguentes:

    • yes --Activa la tecla mágis SysRq.

    • no -- Desactiva la tecla mágica SysRq, y Stop-A (break en la consola serie) en SPARC

  • 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/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"

  • KEYBOARD=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/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 quee aquí.

  • FORWARD_IPV4=answer, donde answer es una de los siguientes:

    • yes -- Activar reenvío de IP.

    • no -- Desactivar reenvío de IP.

    (La instalación de Red Hat Linux pone esto a "no" por defecto [por compatibilidad con un RFC], pero si FORWARD_IPV4 no se pone, el reenvío está activado por compatiblidad con la configuración usada por Red Hat Linux versiones 4.2 and anteriores.)

  • 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 dominio NIS name.

/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 activarse. enabled.

    • no -- Soporte para PCMCIA no debe activarse.

  • 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/soundcard

El fichero /etc/sysconfig/soundcard es generado por sndconfig y no debe ser modificado. Es usado por /etc/rc.d/init.d/sound para configurar el sistema adecuadamente. El solo uso de este es determinar que tarjeta se presentará por defecto la próxima vez que se ejecute sndconfig.

Puede contener lo siguiente:

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

Ficheros en /etc/sysconfig/network-scripts/

Normalment 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

  • /etc/sysconfig/network-scripts/ifdhcpc-done

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 -- es probable quee sean 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 quee son diferentes en un "clon" (o alternativ) interfaz. Por ejemplo, los número de red podrían ser diferentes, pero todo lo demás debería ser lo mismo, así quee sólo los números dr 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 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. Non-root users are allowed

    • 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 los ficheros de PPP y SLIP:

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

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

    • 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 siguientees:

    • 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.

The following values are common to all PPP files:

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

    • yes -- Poner el interfaz como ruta por defecto.

    • no -- No poner el interfaz como ruta por defecto.

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

    • yes -- Usar el asyncmap predefinido.

    • no -- No Usar el asyncmap predefinido.

    (Esto representa un interfaz simplicado; no permite especificar que caracteres hay que escapar. Sin embargo, casi todo el mundo usa un asyncmap de 00000000 y es posible poner PPPOPTIONS para usar un asynmap arbitrario si se desea).

  • HARDFLOWCTL=answer, donde answer es alguno de los siguientes:

    • yes -- Usar control de flujo hardware.

    • no -- No usar control de flujo hardware.

  • PPPOPTIONS=options, donde options es una cadena arbitraria de opciones. Se pone al final de la línea de comandos para que pueda sobreescribir a otras opciones (como asyncmap) que son especificadas previamente.

  • PAPNAME=name, donde name es usado como parte de "name $PAPNAME" en la línea de comando de pppd.

    Notse que la opción "remotename" está siempre especificada como el nombre lógico del dispositivo PPP, cmoo "ppp0" (lo cual podría quizá ser el dispositivo físico ppa1 si algún otro dispositivo fue activado antes ....), lo que ehace facil manejar ficheros PAP/CHAP -- las parejas nombre/contraseña pairs están asociada con el nombre dele dispositivo lógico PPP para que puedan ser gestionados conjuntamente.

    En principio, no debería haber nada que impida que dispositivo lógico PPP tenga nombres como "worldnet" o "myISP" en vez de "ppp0" -- "pppN."

  • REMIP=addr, donde addr es la dirección IP remota (que normalmente está sin especicifcar).

  • MTU=value, donde value es el valor a usar como MTU

  • MRU=value, donde value es el valor a usar como MRU.

  • DISCONNECTTIMEOUT=value, donde value representa el número de de segundos a esperar antes de reestablecer la conexión despues de que una conexión exitosa terminó.

  • RETRYTIMEOUT=value, donde value representa el número de segundos a esperar antes de reintentar la conexión si ha fallado el intento anterior.

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

Este fichero es un script chat para conexiones PPP o SLIP, y está pensado para establecer la conexión. Para disposistivos SLIP, se escribe un script DIP del script chat; para dispositivos PPP el script chat se usa directmente.

/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. 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 a scripts cualesquiera, y más, según se necesite.

/etc/sysconfig/network-scripts/ifdhcpc-done

Este fichero es llamado por dhcpcd una vez que la configuración DHCP se ha completado; configura /etc/resolv.conf a partir de la versión de dhcpcd que se almacena en /etc/dhcpc/resolv.conf.

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. Basicamente, 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 kernel busca en varios sitios el programa init y ejecuta el primero que encuentra.

  • init ejecuta /etc/rc.d/rc.sysinit

  • rc.sysinit gestiona la mayoría de los procesos de carga inicialización y a continuación ejecuta rc.serial (si es que existe)

  • init ejecuta todos los scripts para el nivel de ejecución por defecto.

  • init ejecuta rc.local

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 should 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 NFS

  • 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 sistmas de tenr 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, versus el interfaz de línea de comandos de chkconfig.

Véanse 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 detllaees 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.

 

 
 
Search for:  on    Powered by Google
Products & Services   :   Download   :   Support   :   Training   :   Partners & Programs
© 2001 Red Hat, Inc. All right reserved.       About Red Hat   :   Legal statement   :   Privacy statement   :   Y2K statement   :   Contact Red Hat