Conceptos clave Despus del arranque, la inicializacin de Red Hat Enterprise Linux se realiza en cuatro etapas: BIOS, un gestor de arranque, el kernel y / sbi n/ i ni t . La configuracin del BIOS permite especificar una secuencia de dispositivos que se deberan considerar dispositivos de arranque. Una vez que el BIOS haya seleccionado un dispositivo de arranque, transfiere el control a cualquier ejecutable que se encuentre en el registro de arranque maestro del dispositivo. System Initialization and Services Discusin Introduccin Desde el momento en que se enciende hasta que los usuarios inician sesin en una mquina que est funcionando, el sistema pasa a travs de cuatro etapas distintas de inicializacin. 1. BIOS: El sistema operativo mnimo que est localizado en el ROM de la placa madre. 2. Gestor de arranque: La aplicacin mnima que se carga desde el MBR del disco, se utiliza para cargar y pasar el control al kernel de Linux. 3. Kernel: El kernel de Linux inicializa las estructuras internas y los controladores de dispositivos, provee un sistema de archivos inicial e inicia el primer proceso. 4. /sbin/init: El proceso /sbin/init realiza la mayor parte del trabajo duro (pertinente a la administracin del sistema) para inicializar la mquina. Este cuaderno explicar las diferentes etapas en detalle. Esta primera leccin presenta toda la estructura y la configuracin pertinente del BIOS. La segunda leccin presenta el gestor de arranque GRUB y la funcin del kernel de Linux en el arranque. Las ltimas dos lecciones abordarn la funcin del proceso inicial / sbi n/ i ni t y la configuracin de servicios de Red Hat Enterprise Linux. BIOS Cada computador, cuando se enciende por primera vez, inicia un sistema operativo mnimo llamado BIOS de Basic Input/Output Sytem (sistema bsico de entrada/salida). El BIOS de un sistema es una funcionalidad permanente de la placa madre. [1] La mayora de los BIOS ofrecen una utilidad interactiva, que puede ser iniciada al presionar una secuencia de teclas determinada durante el inicio tal como la tecla SUPR, o F10. La secuencia de teclas difiere entre sistemas y se presenta como parte del proceso de inicio. Cuando inicia, el BIOS de un sistema por lo general realiza las siguientes funciones. Verificacin del sistema POST El BIOS realiza una revisin integral del sistema, asegurando que los componentes centrales tales como la CPU o la memoria estn presentes y funcionando. Esta prueba se refiere a menudo como el POST o Prueba de energa en s mismo. Inicializacin de dispositivos El BIOS de un sistema inicializa los controladores de dispositivos centrales para el teclado, los puertos seriales de vdeo y otros, asignando los recursos de sistema apropiados tales como lneas IRQ y puertos E/S. Los BIOS modernos implementan el protocolo Plug n' Play, el cual se utiliza para probar los dispositivos PCI para configuraciones de recursos compatibles y luego asignar a cada dispositivo PCI una configuracin sin conflictos. Muchos sistemas operativos tambin pueden realizar una configuracin similar a Plug n' Play y la mayora de BIOS proveen una configuracin tal como Pl ug n' Pl ay Awar e OS? [ Y/ n] , la cual puede hacer que BIOS difiera la configuracin hasta que se cargue el sistema operativo. Aunque Linux s soporta Plug n' Play, se sugiere, por lo general, que BIOS realice la configuracin Plug n' Play (por ejemplo, al responder "No" a la configuracin BIOS anterior). Seleccin del dispositivo de arranque Despus de inicializar los dispositivos, BIOS busca un dispositivo de arranque apropiado. El dispositivo de arranque es seleccionado generalmente desde las opciones posibles. Dispositivo blando CD-ROM IDE o disco duro SCSI Tarjeta de red conforme a PXE Una tarjeta de red conforme a PXE, del ingls Preboot Execution Environment (entorno de ejecucin de prearranque) suele implementar el protocolo de configuracin IP DHCP (o BOOTP) y el archivo TFTP transfiere el protocolo de origen, el cual permite que la tarjeta de red descubra y descargue una imagen de kernel desde la red. Dicha tarjeta de red es la excepcin a la regla y la configuracin PXE va ms all del objetivo de este curso. La eleccin del dispositivo de arranque apropiado se configura a travs de las aplicaciones interactivas del BIOS. Por lo general, el BIOS permite que se establezca un "orden jerrquico", primero busca un disquete de arranque y si no hay uno entonces busca un CD-ROM de arranque y por ltimo busca un disco duro de arranque. Entregando las riendas Una vez se ha seleccionado el disco de arranque apropiado, el BIOS carga el primer bloque del disco (512 bytes) en la memoria y pasa la ejecucin a esta regin. El primer bloque de un disco de arranque debe contener un ejecutable pequeo conocido como un gestor de arranque. Continuaremos con este tema en la prxima leccin. System Initialization and Services El gestor de arranque GRUB Conceptos clave En general, los gestores de arranque en Linux son responsables de tres cosas: 1. Componer una lnea de comandos de kernel correcta (que haga referencia a la particin raz correcta). 2. Cargar un disco ram inicial apropiado (initrd). 3. Cargar y pasar el control a un kernel Linux apropiado. Los gestores de arranque suelen disearse en dos etapas, con la primera etapa lo suficientemente pequea para residir en un registro de arranque maestro. GRUB es el gestor de arranque recomendado para Red Hat Enterprise Linux. GRUB utiliza el archivo de configuracin / boot / gr ub/ gr ub. conf . Tras el inicio, GRUB se puede utilizar para editar su configuracin y arrancar con la nueva especificacin de modo interactivo. Tras el inicio, el kernel de Linux monta la particin raz de slo lectura e inicia el primer proceso, por lo general, / sbi n/ i ni t . System Initialization and Services Discusin La funcin de un gestor de arranque Tras el arranque, el BIOS pasa el control a un pequeo ejecutable conocido como un cargador de arranque. Por lo general, realiza las siguientes tres tareas. 1. Componer una lnea de comandos kernel. 2. Cargar un disco ram de inicio (initrd), si es necesario. 3. Cargar y pasar el control al kernel de Linux Qu es un disco ram de inicio? Algunas veces, Red Hat elige implementar partes del kernel necesarias para cargar el sistema de archivos como mdulos del kernel. Esta eleccin naturalmente presenta un problema. Desde dnde carga el kernel sus mdulos de kernel si son necesarios en el proceso de arranque antes de que se cree el sistema de archivos? La respuesta es un disco RAM inicial, el cual es una imagen del sistema de archivos que contiene los mdulos necesarios. El gestor de arranque carga la imagen en la memoria para el kernel, desde donde el kernel puede montar el sistema de archivos y cargar los mdulos necesarios. Los detalles de las imgenes de disco RAM iniciales conocidas como initrd, se tratarn en un cuaderno ms adelante. Por ahora, observe que en Red Hat Enterprise Linux, los kernels casi siempre tienen initrd asociados, los initrd se llaman convencionalmente / boot / i ni t r d- kernelversion. i mg y el gestor de arranque es el responsable de cargarlos. Una eleccin de gestores de arranque Red Hat Enterprise Linux ofrece una surtido de gestores de arranque, cada uno de los cuales puede realizar estas funciones. El gestor de arranque tradicional de Linux se conoce como LILO, cuyo nombre es un doble juego de palabras en ingls, porque es LInux LOader, y LIes LOw en el proceso de arranque. El gestor de arranque LILO es especfico para Linux y el sistema de archivos ext2. Un gestor de arranque relativamente reciente es el GRUB Grand Unified Bootloader, (Gran gestor de arranque unificado). El GRUB es un proyecto patrocinado por GNU y como su nombre lo implica, est diseado para funcionar con mltiples sistemas operativos (y sistemas de archivos). Tanto LILO como GRUB pueden utilizarse para realizar las tareas necesarias mencionadas anteriormente desde una configuracin predeterminada (no interactiva) o para permitir al usuario sobrescribir la configuracin en el momento del arranque. GRUB es ahora el gestor de arranque de Red Hat Enterprise Linux (LILO ya no se utiliza) y ser el tema de este texto. Diseo del gestor de arranque Como mencionamos en la leccin anterior, el BIOS generalmente pasa el control al gestor de arranque cuando carga y ejecuta el primer bloque de un disco. Esto obliga a los gestores de arranque a implementar un diseo de dos etapas. Primera etapa La primera etapa de un gestor de arranque es generalmente pequea, diseada para ajustarse en el registro de arranque maestro (de hecho, comparte el MBR con la tabla de particiones!) o el bootsector de una particin. [1] La nica tarea de este gestor de arranque de la primera etapa es el ubicar, cargar y pasar el control al gestor de arranque de la segunda etapa. Ya que el gestor de arranque de la primera etapa se encuentra en el MBR o en el sector de arranque usualmente no es un archivo visible en el sistema de archivos. Segunda etapa La segunda etapa de un gestor de arranque es por lo general el propio gestor de arranque, el cual ejecuta una forma de aplicacin (a menudo interactiva) en el inicio y puede leer informacin de configuracin acerca de configuraciones por defecto. El gestor de arranque de la segunda etapa suele ser un archivo binario identificable en el sistema de archivos. Diseo GRUB Los componentes del gestor de arranque GRUB tradicionalmente residen en el directorio / boot / gr ub. La segunda etapa del gestor de arranque es bastante fcil de identificar: se llama st age2. El archivo st age1 es una copia del gestor de arranque de la primera etapa instalada en el MBR o en el sector de arranque (observe que el tamao es sospechoso en la siguiente transcripcin). Los archivos que terminan en 1_5 son sistemas de archivos especficos a la "primera etapa y mitades", utilizados para localizar y leer st age2, gr ub. conf y otros archivos desde varios sistemas de archivos. Por lo general, la nica parte "servible al usuario" de GRUB es su archivo de configuracin, / boot / gr ub/ gr ub. conf . Configuracin GRUB GRUB utiliza un archivo de configuracin de texto ASCII, / boot / gr ub/ gr ub. conf , que suele ser editado a mano con un editor de texto. Una muestra del archivo de configuracin se ilustra a continuacin. [root@station root]# ls /boot/grub/ devi ce. map f f s_st age1_5 menu. l st spl ash. xpm. gz vst af s_st age1_5 e2f s_st age1_5 gr ub. conf mi ni x_st age1_5 st age1 xf s_st age1_5 f at _st age1_5 j f s_st age1_5 r ei ser f s_st age1_5 st age2 [root@station root]# ls -l /boot/grub/stage1 - r w- r - - r - - 1 r oot r oot 512 Apr 1 2003 / boot / gr ub/ st age1 El archivo est estructurado con una seccin "global" principal que consta de todas las lneas antes de la primera lnea empezando por la palabra clave t i t l e, y una o ms definiciones menuitem que comienzan con la palabra clave t i t l e. El espacio en blanco dentro de una lnea es insignificante, aunque la definicin de estrofas llevan sangras con el TABULADOR. Cada lnea correspondiente debe iniciar con una palabra clave reconocida y el resto de los parmetros de la palabra clave deben presentarse en la misma lnea, (los usuarios de editores de texto que automticamente delimitan lneas, tengan cuidado!) Por lo general, el archivo / boot / gr ub/ gr ub. conf se edita directamente y los cambios se efectan la prxima vez que grub se ejecute, (i.e., en el prximo arranque del sistema). Cmo se refiere GRUB a los archivos La sintaxis del archivo de configuracin GRUB es sencilla a excepcin de la sintaxis que GRUB utiliza para referirse a los archivos, la cual se presenta a continuacin. Los componentes entre parntesis se utilizan para identificar una particin de disco particular. La ruta de archivo identifica un archivo dentro del sistema de archivos que se encuentra en una particin especificada. La interpretacin de cada componente implica sutilezas resumidas en el cuadro a continuacin. Table 1. Forma en que GRUB se refiere a archivos [root@station root]# cat /etc/grub.conf # gr ub. conf gener at ed by anaconda # # Not e t hat you do not have t o r er un gr ub af t er maki ng changes t o t hi s f i l e # NOTI CE: You have a / boot par t i t i on. Thi s means t hat # al l ker nel and i ni t r d pat hs ar e r el at i ve t o / boot / , eg. # r oot ( hd0, 0) # ker nel / vml i nuz- ver si on r o r oot =/ dev/ hda3 # i ni t r d / i ni t r d- ver si on. i mg #boot =/ dev/ hda def aul t =0 t i meout =10 spl ashi mage=( hd0, 0) / gr ub/ spl ash. xpm. gz hi ddenmenu passwor d - - md5 $2$Mr XSq0xS$0LXqkBTf pywyD3TVCao3d0 t i t l e Red Hat Li nux ( 2. 6. 9- 5. EL) r oot ( hd0, 0) ker nel / vml i nuz- 2. 6. 9- 5. EL r o r oot =LABEL=/ r hgb qui et vga=0x317 i ni t r d / i ni t r d- 2. 6. 9- 5. EL. i mg ( dispositivo, partnum) ruta de archivo Componente Role dispositivo GRUB no se refiere a los dispositivos como hda o sdc o f d0, como lo hace el kernel de Linux. En su lugar, GRUB se refiere a dispositivos utilizando los siguientes nombres. hd0: "DISPOSITIVO BIOS #1" hd1: "DISPOSITIVO BIOS #2" fd0: "DISPOSITIVO BLANDO #1" Cada BIOS mantiene un concepto de su primer dispositivo. A menudo es su Para ilustrar, analizamos la siguiente lnea del archivo de configuracin, la cual especifica la imagen de fondo ("pantalla splash") para la aplicacin GRUB. La interpretacin del nombre de archivo implica los siguientes tres pasos. 1. Determinar el dispositivo: Puesto que sabemos que nuestro sistema arranc desde el dispositivo IDE de maestro primario, asumiremos que hd0 o el "Dispositivo BIOS #1", se refiere a ste. Lo que GRUB llama hd0, el kernel de Linux llamara / dev/ hda. 2. Determinar la particin: Ahora que conocemos el dispositivo, localizamos la particin en el dispositivo mediante el partnum, recordando que necesitamos agregar 1 para compensar el punto de inicio diferente de GRUB. El 0 anterior por lo tanto especifica la primera particin en el dispositivo / dev/ hda1. 3. Determinar el archivo: Puesto que GRUB hacereferencia a archivos relativos al directorio raz del sistema de archivos, necesitamos determinar dnde se monta la particin / dev/ hda1 en nuestro rbol de directorios. Utilizamos el comando df para examinar los montajes actuales. Dado que la particin / dev/ hda1 est montada para / boot , el archivo / gr ub/ spl ash. xpm. gz relativo al directorio raz del sistema de archivos es el archivo / boot / gr ub/ spl ash. xpm. gz relativo a la raz del rbol de directorios. Despus de determinar la particin y saber dnde est montada, podemos traducir el archivo "GRUB speak"( hd0, 0) / gr ub/ spl ash. xpm. gz a "Linux speak" como / boot / gr ub/ spl ash. xpm. gz. Para reforzar el proceso de traducir referencias de archivo GRUB a referencias de archivos Linux, el dispositivo IDE de maestro primario, algunas veces es otro dispositivo IDE, algunas veces es un dispositivo SCSI. Al cambiar la configuracin BIOS, la identidad del "primer dispositivo" puede cambiar. partnum El partnum es un nmero entero utilizado para identificar la particin en un dispositivo. Infortunadamente, GRUB cuenta las particiones comenzando por 0, mientras que el kernel de Linux cuenta particiones comenzando por 1. Por lo tanto, lo que GRUB llama particin nmero 3, el kernel de Linux llamara particin nmero 4. ruta de archivo El ruta de archivo es una ruta absoluta del archivo, relativo al directorio raz del sistema de archivos. GRUB se refiere a los archivosantes los sistemas de archivos se montan en un nico rbol de directorio, por lo tanto, GRUB no tiene ningn concepto de los puntos de montaje. Este punto hace nfasis en el AVI SO localizado por el instalador de Anaconda en el archivo de configuracin de muestra presentado anteriormente. spl ashi mage=( hd0, 0) / gr ub/ spl ash. xpm. gz [root@station root]# df Fi l esyst em 1K- bl ocks Used Avai l abl e Use%Mount ed on / dev/ hda3 8159420 5299244 2445700 69%/ / dev/ hda1 69973 25972 40388 40%/ boot / dev/ hdb5 30241928 25947992 2757724 91%/ home / dev/ hdb7 28130956 10578516 16123460 40%/ var none 370024 0 370024 0%/ dev/ shm / dev/ f d0 1430 1380 51 97%/ mnt / f l oppy siguiente cuadro lista archivos que utilizan ambos. Recuerde que la asignacin depende de la estructura de particionamiento identificada en la salida del comando df visto anteriormente y cambiara en discos con particiones diferentes. Table 2. Traducciones de nombres de archivos de GRUB a Linux Por qu GRUB debe ser tan diferente? Recuerde que GRUB se est ejecutando antes de que el kernel de Linux sea cargado y pueda considerarse un sistema operativo mnimo en s mismo. Como GRUB es el cargador "Gran unificado" y no slo el cargador Linux, su sintaxis no se relaciona con la del kernel de Linux. Configuracin global GRUB Con la parte difcil ya explicada, volvamos a la seccin global del archivo de configuracin GRUB, que es, todas las lneas que aparecen antes que una lnea inicie con t i t l e. Las siguientes entradas se encuentran a menudo dentro de la seccin global. Table 1. Sintaxis de configuracin global GRUB Lo que GRUB llama... ... Linux llamara... ( hd0, 0) / gr ub/ spl ash. xpm. gz / boot / gr ub/ spl ash. xpm. gz ( hd0, 2) / et c/ passwd / et c/ passwd ( hd1, 6) / l og/ dmesg / var / l og/ dmesg ( hd1, 4) / el vi s/ ci vgame+0220. sav. gz / home/ el vi s/ ci vgame+0220. sav. gz ( f d0, 0) / sysl i nux. cf g / mnt / f l oppy/ sysl i nux. cf g ( hd0, 0) / vml i nuz- 2. 6. 9- 5. EL / boot / vml i nuz- 2. 6. 9- 5. EL ( hd0, 0) / i ni t r d- 2. 6. 9- 5. EL. i mg / boot / i ni t r d- 2. 6. 9- 5. EL. i mg def aul t =0 t i meout =10 spl ashi mage=( hd0, 0) / gr ub/ spl ash. xpm. gz passwor d - - md5 $2$Mr XSq0xS$0LXqkBTf pywyD3TVCao3d0 hi ddenmenu Palabra clave Propsito default=N Define la entrada del men por defecto, si el usuario no escoge ninguna. Las entradas de men se cuentan empezando desde 0. timeout=N Especifica la cantidad de tiempo (en segundos) que el usuario tiene para escoger una entrada de men, antes de utilizar la entrada del men predeterminada. splashimage=file Usa file como una imagen de fondo para el men. password plaintext Especifica una contrasea para la aplicacin GRUB utilizando texto sin formato. password --md5 ciphertext Especifica una contrasea para la aplicacin GRUB con codificacin MD5. hiddenmenu No muestra el men GRUB en el arranque. [Caution] Utilice passwor d, no passwd Un error comn dentro del archivo de configuracin GRUB es el uso incorrecto de la palabra clave passwd , en lugar de password. Configuracin de elementos del men de GRUB En el arranque, GRUB suele presentar al usuario un men de posibles configuraciones. Dichas configuraciones vienen en estrofas en el archivo de configuracin gr ub. conf que comienza por la palabra clave t i t l e, seguida por texto utilizado para etiquetar la estrofa como se ilustra a continuacin. La siguiente sintaxis se encuentra en elementos del men utilizados para arrancar kernels de Linux. A diferencia de la seccin global, los elementos individuales deben aparecer en el orden especificado. Table 1. Sintaxis de configuracin de los elementos del men de GRUB Observe cmo el diseo de una estrofa de un elemento de men refleja los parmetros necesarios. La lnea de configuracin ker nel especifica la imagen de kernel para cargar y su lnea de comando asociada, mientras que la lnea de configuracin i ni t r d especifica un disco RAM inicial a cargar. Uso de GRUB Por lo general, el grub se instala con el instalador de Anaconda y se utilizar cada vez que se inicie el sistema. Cuando GRUB se ejecuta, primero muestra un texto sencillo en el inicio y luego presenta al usuario un men grfico y en la configuracin predeterminada de Red Hat Enterprise Linux, un temporizador de conteo regresivo desde 10. Para nuestros propsitos, nos referiremos a GRUB como si estuviera ejecutndo en uno de los cinco modos: Modo seguro: Este modo presenta al usuario un men de selecciones de arranque. Modo bsico: El modo bsico se parece al modo seguro, pero en lugar de seleccionar el elemento del men, el usuario puede optar por entrar en los siguientes modos. Modo de edicin: Este modo permite al usuario hacer correcciones en una configuracin existente. Modo de agregar: Semejante al modo de edicin, este modo permite al usuario corregir la lnea de comandos del kernel. Modo de comando: En este modo, el usuario opera dentro de una shell interactiva grub. t i t l e Red Hat Li nux ( 2. 6. 9- 5. EL) r oot ( hd0, 0) ker nel / vml i nuz- 2. 6. 9- 5. EL r o r oot =LABEL=/ r hgb qui et vga=0x317 i ni t r d / i ni t r d- 2. 6. 9- 5. EL. i mg Palabra clave Propsito root partition Monta y utiliza de modo implcito el partition especificado en todas las referencias de archivo posteriores. kernel filecommandline... Carga el archivo especificado como imagen de kernel y pasa los argumentos al kernel como lnea de comando del kernel. initrd file Carga el archivo especificado como un disco RAM inicial para el kernel. Cada uno de los modos se trata detalladamente a continuacin. Modo seguro El modo seguro es el modo predeterminado si una contrasea se especific en el archivo de configuracin gr ub. conf . Grub presenta el usuario con un men, cuyos ttulos son una reflexin directa de las lneas t i t l e que se encuentran en el archivo de configuracin gr ub. conf . Al seleccionar un elemento del men, el sistema inicia con la configuracin especificada. Si se especifica la contrasea correcta, el usuario puede saltar del modo seguro al modo bsico. Modo bsico El modo bsico es el modo por defecto si no se proporciona una contrasea en el archivo de configuracin gr ub. conf . Los usuarios pueden elegir un elemento de men apropiado o pueden utilizar cualquiera de las siguientes claves para entrar en uno de los modos a continuacin. Table 1. Comandos para cambiar de modo en GRUB. Modo de edicin Al entrar el modo de editar, grub muestra lneas desde la estrofa gr ub. conf pertinente en un editor de texto primario. El editor le permite al usuario agregar una nueva lnea, borrar una lnea existente o editar una lnea existente con cambios arbitrarios. Una vez el usuario ha editado la estrofa a su gusto puede utilizar b para iniciar con una nueva configuracin o ESC para abandonar todos los cambios y volver al modo bsico. En cualquier evento, los cambios a la configuracin hechos con el modo de edicin de grub se aplican a ese inicio nicamente. La aplicacin grub no permite a los usuarios editar archivos de modo permanente. Modo de agregar El modo de agregar puede considerarse como una reduccin del modo de edicin, donde slo los argumentos que componen la lnea de comando del kernel se pueden editar. Aunque es menos verstil (un nuevo kernel o archivo initrd no se podra especificar, por ejemplo) el modo de agregar se puede utilizar en la mayora de los casos cuando un usuario desee sobrescribir la configuracin grub por defecto. Como en el modo de edicin, los cambios se aplican slo en ese inicio. Modo de comando En el modo de comando, se omite el archivo existente gr ub. conf y el usuario opera en una shell interactiva grub, (en este caso, el trmino shell se utiliza en el sentido general. No espere encontrar todas las capacidades de la shell bash !) Los usuarios expertos pueden usar la shell para especificar un kernel e initrd de modo manual e iniciar el sistema, o usar la shell para examinar el sistema de archivos. clave Accin e entra el modo de edicin para el elemento de men seleccionado a entra el modo de agregar para el elemento de men seleccionado c entra el modo de comando Se puede salir de la shell grub con la tecla ESC, la cual devuelve al usuario al modo bsico. Instalacin de GRUB Cuando la gente se refiere a la instalacin de un gestor de arranque, por lo general se refieren a transferir la primera etapa del gestor de arranque al registro de arranque maestro o al sector de arranque apropiados. Los administradores de sistemas rara vez necesitan reinstalar la primera etapa del gestor de arranque GRUB, cuando Anaconda la instala tras la instalacin del sistema y aparte de los cambios al archivo de configuracin gr ub. conf , la instalacin no se debera modificar para uso rutinario. [1]
Sin embargo, si por alguna razn necesita instalar GRUB puede utilizar grub-install. El comando se llama con un solo argumento, el nombre del dispositivo cuyo registro de arranque maestro se puede utilizar para la instalacin. Tras la instalacin, grub-install muestra la interpretacin actual del "Dispositivo BIOS #1" (o los dispositivos a los que se haga referencia). Por lo general, esta informacin es correcta. Si no parece apropiada, se tendra que editar el archivo / boot / gr ub/ devi ce. map y ensayar de nuevo. Administracin de contraseas de GRUB Como veremos ms adelante, la habilidad de modificar la lnea de comando del kernel en el arranque proporciona una gran flexibilidad, pero a su vez trae riesgos de seguridad. Por ejemplo, al proveer los argumentos apropiados, se puede iniciar el sistema en una shell de mantenimiento desde la cual se puede cambiar la contrasea de la cuenta de root. Por consiguiente, se sugiere proveer una contrasea en el archivo de configuracin gr ub. conf . Aunque el archivo de configuracin admite contraseas en texto sin formato, el almacenamiento de contraseas en texto sin formato en el sistema de archivos nunca es una buena idea. En su lugar, se puede utilizar el comando grub-md5-crypt para generar contraseas encriptadas, las cuales se pueden pegar en el archivo de configuracin, como a continuacin. La siguiente lnea se pudo incluir en el archivo de configuracin gr ub. conf . [root@station root]# grub-install /dev/hda I nst al l at i on f i ni shed. No er r or r epor t ed. Thi s i s t he cont ent s of t he devi ce map / boot / gr ub/ devi ce. map. Check i f t hi s i s cor r ect or not . I f any of t he l i nes i s i ncor r ect , f i x i t and r e- r un t he scr i pt `gr ub- i nst al l ' .
# t hi s devi ce map was gener at ed by anaconda ( f d0) / dev/ f d0 ( hd0) / dev/ hda passwor d r edhat [root@station root]# grub-md5-crypt Passwor d: redhat Ret ype passwor d: redhat $2$vCoF50$x48Akr GLEoXPznNi WnqhA. passwor d - - md5 $2$vCoF50$x48Akr GLEoXPznNi WnqhA. Esta lnea establece la contrasea de GRUB para redhat, pero no deja la contrasea expuesta en texto sin formato en el archivo de configuracin. Limitaciones de BIOS y GRUB Cuando la aplicacin GRUB se est ejecutando, el kernel de Linux an no est en su sitio. Por consiguiente, GRUB utiliza controladores de dispositivos de BIOS para acceder a los discos. Algunos controladores ms antiguos no tienen limitaciones significativas. 1. Algunos BIOS no pueden acceder ms de 1.024 cilindros. 2. Muchos de los BIOS son slo conscientes de las particiones primarias. La primera limitacin es la motivacin para la particin / boot . Por diseo, la particin / boot debe contener todos los elementos del sistema necesarios antes que el kernel de Linux se cargue: la imagen misma del kernel, cualquier initrd y el gestor de arranque. La particin es por lo general pequea y se presenta tan pronto como sea posible en el dispositivo, para que se ajuste totalmente dentro de los primeros 1.024 cilindros de disco. Dicho esto, la mayora de BIOS modernos proporcionan extensiones que superan esta limitacin. De manera interesante, un sistema Linux se puede operar bastante bien sin montar la particin / boot , (recuerde que slo se encuentran los aspectos del sistema que se necesitan antes de iniciar el kernel). En la prctica, no es una buena idea, puesto que hay un archivo ocasional al cual se hace referencia desde el sistema de ejecucin (tal como Syst em. map, o el archivo de configuracin gr ub. conf , si el administrador desea hacer cambios). La segunda limitacin slo afecta a donde GRUB puede instalarse si otro gestor de arranque se utiliza en el registro de arranque maestro. Es decir, slo los sectores de arranque de particiones primarias son candidatos para la instalacin de la primera etapa GRUB. Esto no se considera una configuracin estndar y los detalles de configuracin van ms all de los objetivos de este curso. Al cerrar, volvemos a hacer nfasis en que estas dos limitaciones estn relacionadas con BIOS no con Linux. Cuando el kernel de Linux est en ejecucin, ninguna de estas limitaciones importa. El kernel de Linux La leccin anterior present la inicializacin de Linux ocurriendo en cuatro fases diferentes. Esta leccin trata principalmente del gestor de arranque; las siguientes dos lecciones describirn / sbi n/ i ni t y los procesos relacionados. Entre estos dos est la seccin corta, la cual proporciona algo ms que una transicin y describe la funcin del kernel al cargarlo en el sistema. Aunque se puede decir mucho de la inicializacin del kernel desde el punto de vista del diseo de sistemas operativos, desde el punto de vista de la administracin del sistema, hay muy poco que decir. No obstante, lo que hay que decir es importante. En esencia, un administrador de sistemas puede ver el kernel mientras realiza tres etapas. 1. Remplaza todos los controladores de dispositivos BIOS con controladores de dispositivos Linux. 2. Monta la particin root de slo-lectura. 3. Inicia el primer proceso. El kernel hace muy poco para inicializar el sistema y confa en que el primer proceso haga todo el trabajo difcil. Hay algunas repercusiones asociadas con cada paso. 1. Puesto que Linux remplaza todos los controladores de dispositivos BIOS, las limitaciones de BIOS mencionadas anteriormente no son relevantes una vez que el kernel inicia. 2. Puesto que el kernel debe montar la particin raz, se le debe decir qu particin es la correcta para el montaje. Esto generalmente se realiza con el parmetro de lnea de comando del kernel de r oot =, el cual puede referirse a una particin especfica (tal como r oot =/ dev/ hda5) o como el comando mount, puede hacer referencia a la particin raz por su etiqueta de sistema de archivos ext2 (mediante una sintaxis bastante extraa r oot =LABEL=/ ). Por qu el kernel lo monta de slo lectura, en lugar de lectura-escritura? La respuesta se encuentra en una prxima leccin. 3. Como el kernel inicia el primer proceso directamente, se debe especificar la particin root correcta. El nombre del primer proceso est fijado en el kernel: / sbi n/ i ni t . El kernel montar como particin root cualquier particin que usted le diga, pero slo podr hallar / sbi n/ i ni t si usted le da la correcta. La lnea de comandos del kernel: parmetros de arranque As como los procesos tienen una lnea de comandos, el kernel tambin tiene una lnea de comandos. Los parmetros de la lnea de comandos para el kernel actual se pueden examinar al leer / pr oc/ cmdl i ne. Los smbolos especificados segn el nombre de archivo del kernel en el archivo de configuracin gr ub. conf se pasan al kernel, el cual los administra de la siguiente manera. 1. Primero, el kernel comprueba si el smbolo es un parmetro incorporado del kernel. Si lo es, el kernel aplica el parmetro. Algunos de los parmetros ms comunes del kernel estn documentados en la pgina de manual bootparam(7). 2. Segundo, si el kernel no reconoce el smbolo y el smbolo tiene la forma nombre=valor,el kernel pasa el valor al primer proceso como variable de entorno nombre, (el primer proceso es casi invariable /sbin/init). 3. Por ltimo, todo lo que el kernel no reconozca y que no tenga la forma de nombre=valor, el kernel pasar al primer proceso como un argumento de lnea de comandos. Algunos de los argumentos ms utilizados de la lnea de comandos del kernel se encuentran en el siguiente cuadro. Table 1. Parmetros comunes de arranque del kernel [root@station ~]# cat /proc/cmdline r o r oot =LABEL=/ r hgb qui et Parmetro Efecto root=dispositivo Utiliza dispositivo como particin raz (vea arriba). Este parmetro se requiere casi siempre. ro Monta la particin raz de slo lectura (ver arriba). Este parmetro casi siempre se requiere. quiet No muestra mensajes en el inicio. Aunque habilitado por defecto en Red Hat Enterprise Linux, muchos administradores prefieren quitarlo para ver el flujo de mensajes del kernel. rhgb Este parametro del ingls "Red Hat Graphical Boot" (Arranque grfico de Red Hat), hace que un servidor X inicie temprano en el proceso de arranque. El parmetro se puede quitar fcilmente si esto complica o retarda el proceso de arranque. System Initialization and Services Ejemplos Referencia a un nuevo kernel Un administrador de sistemas compil un kernel personalizado, cre un disco RAM asociado de inicio y lo coloc en el directorio / boot como los archivos vml i nuz- 2. 4. 21- cust omy i ni t r d- 2. 4. 21- cust om. i mg, respectivamente. Ahora quiere actualizar su archivo gr ub. conf para poder arrancar en el nuevo kernel. Su archivo actual se ve de esta forma. El administrador abre el archivo en un editor de texto y en primer lugar duplica la "consabida" estrofa. Luego, el administrador edita la segunda estrofa, cambiando las referencias de ttulo, kernel e initrd, como corresponda. Ahora, el administrador almacena sus cambios y reinicia. Al reiniciar, puede escoger su nuevo kernel personal y el men GRUB. Si algo sale mal (tal como un error tipogrfico en el archivo de configuracin gr ub. conf ), siempre podr reiniciar otra vez en la "consabida" entrada. Migracin a un archivo de configuracin GRUB [root@station root]# cat /boot/grub/grub.conf # gr ub. conf gener at ed by anaconda # # Not e t hat you do not have t o r er un gr ub af t er maki ng changes t o t hi s f i l e # NOTI CE: You have a / boot par t i t i on. Thi s means t hat # al l ker nel and i ni t r d pat hs ar e r el at i ve t o / boot / , eg. # r oot ( hd0, 0) # ker nel / vml i nuz- ver si on r o r oot =/ dev/ hda3 # i ni t r d / i ni t r d- ver si on. i mg #boot =/ dev/ hda def aul t =0 t i meout =10 spl ashi mage=( hd0, 0) / gr ub/ spl ash. xpm. gz passwor d - - md5 $2$Mr XSq0xS$0LXqkBTf pywyD3TVCao3d0 t i t l e Red Hat Li nux ( 2. 6. 9- 5. EL) r oot ( hd0, 0) ker nel / vml i nuz- 2. 6. 9- 5. EL r o r oot =LABEL=/ qui et r hgb i ni t r d / i ni t r d- 2. 6. 9- 5. EL. i mg t i t l e Red Hat Li nux ( 2. 6. 9- 5. EL) r oot ( hd0, 0) ker nel / vml i nuz- 2. 6. 9- 5. EL r o r oot =LABEL=/ qui et r hgb i ni t r d / i ni t r d- 2. 6. 9- 5. EL. i mg t i t l e Red Hat Li nux ( 2. 6. 9- 5. EL) r oot ( hd0, 0) ker nel / vml i nuz- 2. 6. 9- 5. EL r o r oot =LABEL=/ vga=0x317 i ni t r d / i ni t r d- 2. 6. 9- 5. EL. i mg t i t l e Red Hat Li nux ( 2. 6. 9- 5. EL) r oot ( hd0, 0) ker nel / vml i nuz- 2. 6. 9- 5. EL r o r oot =LABEL=/ qui et r hgb i ni t r d / i ni t r d- 2. 6. 9- 5. EL. i mg t i t l e Red Hat Li nux ( 2. 4. 21- cust om) r oot ( hd0, 0) ker nel / vml i nuz- 2. 4. 21- cust omr o r oot =LABEL=/ qui et r hgb i ni t r d / i ni t r d- 2. 4. 21- cust om. i mg Un administrador est migrando un archivo de configuracin gr ub. conf de un sistema a otro. Aqu est el contenido del archivo. Como los comentarios lo implican, en el sistema original, el directorio / boot fue particionado Sin embargo en el sistema actual, solo hay una particin raz: el dispositivo / dev/ hda2. Ya que el directorio / boot ahora es parte de la particin raz, el administrador necesita realizar los siguientes ajustes. 1. La especificacin de la particin raz necesita actualizarse para referirse al dispositivo / dev/ hda2. 2. Las rutas de archivos para el kernel y el disco RAM de inicio se necesitan actualizar para reflejar el hecho que el directorio / boot es ahora parte del sistema de archivos raz. Puesto que en la nueva mquina, la configuracin original no funcionar, decide modificar la estrofa "en su sitio". La estrofa modificada se lista a continuacin. [root@station root]# cat /boot/grub/grub.conf # gr ub. conf gener at ed by anaconda # # Not e t hat you do not have t o r er un gr ub af t er maki ng changes t o t hi s f i l e # NOTI CE: You have a / boot par t i t i on. Thi s means t hat # al l ker nel and i ni t r d pat hs ar e r el at i ve t o / boot / , eg. # r oot ( hd0, 0) # ker nel / vml i nuz- ver si on r o r oot =/ dev/ hda3 # i ni t r d / i ni t r d- ver si on. i mg #boot =/ dev/ hda def aul t =0 t i meout =10 spl ashi mage=( hd0, 0) / gr ub/ spl ash. xpm. gz passwor d - - md5 $2$Mr XSq0xS$0LXqkBTf pywyD3TVCao3d0 t i t l e Red Hat Ent er pr i se Li nux ( 2. 6. 9- 5. EL) r oot ( hd0, 0) ker nel / vml i nuz- 2. 6. 9- 5. EL r o r oot =LABEL=/ vga=0x317 i ni t r d / i ni t r d- 2. 6. 9- 5. EL. i mg t i t l e Red Hat Li nux ( 2. 6. 9- 5. EL) r oot ( hd0, 1) ker nel / boot / vml i nuz- 2. 6. 9- 5. EL r o r oot =LABEL=/ vga=0x317 i ni t r d / boot / i ni t r d- 2. 6. 9- 5. EL. i mg System Initialization and Services Ejercicios en lnea Specification Usted va a copiar (no a mover!) su kernel existente e initrd a un nuevo sitio y va a modificar su gr ub. conf de modo apropiado para arrancar el kernel recin creado. 1. Crear el directorio / ker nel . 2. Utilizar el comando uname -r para reportar su versin de kernel actual. 3. Copiar los archivos / boot / vml i nuz- versin de kernel y / boot / i ni t r d- versin_de_kernel. i mg al directorio / ker nel recin creado. Asegrese de copiar el archivo empezando por vml i nuz, no vml i nux. 4. Como precaucin, haga una copia de seguridad de su archivo / boot / gr ub/ gr ub. conf , llamado / boot / gr ub/ gr ub. conf . pr el ab4. 2. Abra su archivo / boot / gr ub/ gr ub. conf y haga los siguientes cambios. a. Duplique la estrofa de los elementos del men pertinentes a su kernel actual y establezca el ttulo de la estrofa recin creada a la nica palabra lab4.2. . No modifique su estrofa original de ninguna manera. b. En su estrofa de elementos de men recin creada, actualice las referencias al kernel y los archivos initrd, para que se refieran a los archivos recin creados / ker nel / vml i nuz- versin_de_kernel y / ker nel / i ni t r d- versin de kernel. i mg. Probablemente tambin tendr que actualizar la referencia a la particin raz. c. En la lnea de comandos del kernel, agregue el argumento panic=42, (puede consultar la pgina del manual bootparam(7) para obtener mayor informacin). d. Establezca la contrasea del gestor de arranque como redhat con una contrasea en texto sin formato, (si el gestor de arranque ya tiene contrasea, quite el comentario de la lnea que especifica la contrasea original). Guarde sus cambios. 5. Reinicie su mquina. En el men GRUB, entre la contrasea del gestor de arranque (redhat). Abra la estrofa recin agregada(lab4.2) para editarla. Dentro del editor, agregue el argumento rha=fun a la lnea de comandos del kernel, sin cambiar los otros argumentos y por ltimo, inicie su mquina. 6. Una vez iniciado, inicie sesin en su cuenta de Red Hat Academy y califique su ejercicio. [Warning] Lab Exercise Objetivo: Ganar experiencia en la configuracin del gestor de arranque de GRUB. Estimated Time: 30 mins. Resultados A title Question 1
[Note] Note En algunas mquinas, puede que no se pueda reiniciar la mquina con su nueva configuracin, debido al lmite de 1024 cilindros de BIOS. Si este es el caso, reinicie su mquina con la estrofa original (no la modific, no es cierto?). Repita el Laboratorio pero en lugar de copiar su kernel e initrd al directorio / l ab4. 2, cpielos al directorio / boot / l ab4. 2 y edite su estrofa lab4.2 en el archivo gr ub. conf . 1. Un archivo del sistema de archivos / pr oc/ cmdl i ne que reporte los argumentos panic=42 y rha=fun. 2. Un archivo / boot / gr ub/ gr ub. conf , que contenga una estrofa para un elemento del men titulado lab4.2. El elemento del men debera hacer referencia al sitio del nuevo kernel e initrd y especificar un argumento de lnea de comandos de kernel panic=42, pero no un argumento de lnea de comandos de kernel rha=fun. grade System Initialization and Services /sbin/init y Run Levels Conceptos clave El primer proceso iniciado por el kernel es / sbi n/ i ni t El comando init se ejecuta, mientras se ejecute el sistema y est encargado de iniciar y detener otros procesos. El comando init organiza el estado de ejecucin de procesos con un concepto llamado niveles de ejecucin. El comando init utiliza el archivo de configuracin / et c/ i ni t t ab para determinar qu procesos deberan ejecutarse en qu niveles de ejecucin. Los comandos init y telinit se pueden utilizar para cambiar niveles de ejecucin o forzar init a releer su archivo de configuracin. Los comandos shutdown, reboot, halt y poweroff sirven para detener o reiniciar la mquina. System Initialization and Services Discusin /sbin/init El nombre del primer proceso para iniciar est fijado al kernel de Linux: / sbi n/ i ni t . Este comando es ejecutado directamente por el kernel en el inicio y por lo tanto siempre tiene un Id de proceso 1. El programa init est diseado para ejecutarse mientras se ejecuta el sistema y es el ltimo proceso que muere. Para asegurarse que el proceso no termine accidentalmente, el Id 1 del proceso est protegido contra la seal letal SIGKILL (seal nmero 9). El proceso init emplea su tiempo, iniciando, detenindose y monitorizando otros procesos. Lo primero que init hace es leer su archivo de configuracin, el archivo / et c/ i ni t t ab. Se le recomienda ver el archivo mientras lee esta explicacin, pero tenga cuidado de no modificarlo accidentalmente: Es un archivo de configuracin clave y si se daa no se podra arrancar su sistema. Niveles de ejecucin A continuacin, extraemos y explicamos varias lneas del archivo / et c/ i ni t t ab. Comenzamos por examinar el comentario en la parte superior del archivo y la primera lnea de configuracin pertinente. En los comentarios al comienzo del archivo, vemos que init organiza una mquina Linux mediante un concepto llamado en ingls runlevels (niveles de ejecucin). Los niveles de ejecucin tradicionalmente se nombran con nmeros enteros de 0 a 6. En muchas versiones de Unix, los nmeros enteros implican una secuencia (i.e., para iniciar en nivel de ejecucin 5, debe pasar por los niveles de ejecucin de 1 a 4). Esto no sucede en Linux; los niveles de ejecucin pudieron haberse llamado algo tan fcil como "anaranjado", "azul" y "verde". Por tradicin Unix asocia las siguientes configuraciones con varios niveles de ejecucin y Linux se adhiere a dicha convencin. Table 1. Convenciones de los niveles de ejecucin # # i ni t t ab Thi s f i l e descr i bes how t he I NI T pr ocess shoul d set up # t he syst emi n a cer t ai n r un- l evel . # # Aut hor : Mi quel van Smoor enbur g, <mi quel s@dr i nkel . nl . mugnet . or g> # Modi f i ed f or RHS Li nux by Mar c Ewi ng and Donni e Bar nes #
# Def aul t r unl evel . The r unl evel s used by RHS ar e: # 0 - hal t ( Do NOT set i ni t def aul t t o t hi s) # 1 - Si ngl e user mode # 2 - Mul t i user , wi t hout NFS ( The same as 3, i f you do not have net wor ki ng) # 3 - Ful l mul t i user mode # 4 - unused # 5 - X11 # 6 - r eboot ( Do NOT set i ni t def aul t t o t hi s) # i d: 3: i ni t def aul t : Nivel de ejecucin Uso Comentarios La ltima lnea en el listado anterior establece el nivel de ejecucin predeterminado para la mquina, si no se especifica ninguno. Para la mayora de las mquinas, el nivel de ejecucin sera el nivel de ejecucin 3 o 5. Sintaxis /etc/inittab Cuando trate de aprender la sintaxis del archivo / et c/ i ni t t ab, la primera lnea (que establece el nivel de ejecucin por defecto) no es til; no sigue la sintaxis. Todas las dems lneas que constan de 4 campos separados por dos puntos sirven para las siguientes funciones. Table 1. Sintaxis /etc/inittab El tercer campo se debe seleccionar de una seleccin de acciones predefinidas. Algunas de las acciones ms comunes y su uso se listan a continuacin. Table 2. Acciones utilizadas en el archivo /etc/inittab 0 Halt Una utilidad de nivel de ejecucin utilizada para detener la mquina. 1 Modo monousuario Un nivel de ejecucin de mantenimiento conocido como un Modo monousuario. Cuando se est en nivel de ejecucin 1, solo root puede iniciar en la mquina y debe iniciar en la consola. Las conexiones de red por lo general no estn activas y la mayora de los demonios (si no todos) estn apagados. Este nivel de ejecucin est diseado para realizar operaciones de mantenimiento, tales como montar y desmontar particiones sin interferencias inesperadas. 2 No NFS En Unix tradicional, el nivel de ejecucin 2 era de modo multiusuario sin red (recuerde que en un comienzo, Unix era esencialmente un servidor de terminal.) La mayora de Unix modernos utilizan el nivel de ejecucin 2 para de alguna manera calificar la extensin de red. En Red Hat Enterprise Linux, el nivel de ejecucin 2 implica modo multiusuario de red, pero sin ningn sistema de archivos NFS relacionado. 3 Multiusuario total El nivel de ejecucin 3 es un modo operativo total de red y multiusuarios, pero no se inicia ninguna interfaz grfica (servidor X). En muchas mquinas utilizadas como servidores de red, este es el nivel de ejecucin predeterminado. 4 Configuracin local El nivel de ejecucin 4 suele no tener implicaciones y se deja para que los sitios lo utilicen en la implementacin de polticas locales. 5 Multiusuario con X El nivel de ejecucin 5 tiene todas las implicaciones del nivel de ejecucin 3, ms el mantenimiento continuo de un servidor X. 6 reboot Una utilidad de nivel de ejecucin utilizada para reiniciar la mquina. Campo Uso 1 Una etiqueta de slo dos letras, aparte la etiqueta debe ser nica. La etiqueta que init utiliza para mantener todas sus lneas rectas. 2 Una lista de los niveles de ejecucin para los cuales es importante la lnea. 4 El nombre del comando a ejecutar. 3 El tercer campo es el ms interesante. Consiste de un accin predefinido, el cual dice a init cmo o cundo ejecutar el comando especificado en el cuarto campo. /etc/inittab Configuracin de inicializacin del sistema y administracin del nivel de ejecucin Con la sintaxis de reserva, pasamos por el resto del archivo / et c/ i ni t t ab, agregando comentarios cuando se ameriten. Tras el inicio del sistema, se ejecuta el script / et c/ r c. d/ r c. sysi ni t . El script se estudiar en detalle ms adelante, donde descubriremos que el script de inicializacin es la clave para realizar muchas de las inicializaciones del sistema. Despus de cada cambio de nivel de ejecucin (incluyendo el arranque en el nivel de ejecucin inicial predeterminado), el script / et c/ r c. d/ r c se ejecuta con el nivel de ejecucin apropiado como su nico argumento. Este script realiza todo el trabajo difcil cuando el sistema pasa de un nivel de ejecucin a otro, este ser el tema de la prxima leccin. Configuracin para eventos externos /etc/inittab Los prximos lneas asocian comandos con varios eventos externos, tales como un usuario tecleando CONTROL-ALT-SUPR en la consola o una UPS registrando una falla de energa. La mayora de estas variantes del comando shutdown se tratan en detalle a continuacin (aunque la intencin del comando debera ser obvia). accin uso respawn init inicia y monitoriza el comando especificado. Si el comando alguna vez muere, inicia otro para remplazarlo. wait init inicia el proceso cuando entra a un nivel de ejecucin pertinente y espera que el proceso termine antes de llevar a cabo todo lo dems. ctrlaltdel init ejecutar el comando asociado cuando alguien tecleeCONTROL-ALT- SUPR en el teclado de la consola. powerfail (y amigos) init iniciar comandos en respuesta a recibir seales para una UPS (suministro de alimentacin ininterrumpible) agregada. # Syst emi ni t i al i zat i on. si : : sysi ni t : / et c/ r c. d/ r c. sysi ni t
l 0: 0: wai t : / et c/ r c. d/ r c 0 l 1: 1: wai t : / et c/ r c. d/ r c 1 l 2: 2: wai t : / et c/ r c. d/ r c 2 l 3: 3: wai t : / et c/ r c. d/ r c 3 l 4: 4: wai t : / et c/ r c. d/ r c 4 l 5: 5: wai t : / et c/ r c. d/ r c 5 l 6: 6: wai t : / et c/ r c. d/ r c 6 # Thi ngs t o r un i n ever y r unl evel . ud: : once: / sbi n/ updat e
# Tr ap CTRL- ALT- DELETE ca: : ct r l al t del : / sbi n/ shut down - t 3 - r now
# When our UPS t el l s us power has f ai l ed, assume we have a f ew mi nut es # of power l ef t . Schedul e a shut down f or 2 mi nut es f r omnow. # Thi s does, of cour se, assume you have power d i nst al l ed and your # UPS connect ed and wor ki ng cor r ect l y. pf : : power f ai l : / sbi n/ shut down - f - h +2 " Power Fai l ur e; Syst emShut t i ng Down"
# I f power was r est or ed bef or e t he shut down ki cked i n, cancel i t . pr : 12345: power okwai t : / sbi n/ shut down - c " Power Rest or ed; Shut down Cancel ed" /sbin/init y Gettys Otro uso tradicional del proceso init es el lanzamiento, monitorizacin y relanzamiento de gettys. En Linux (y Unix), un getty (llamado por "get tty") (obtener tty) es un proceso que monitoriza una lnea serial. Siempre que escucha un "ruido" en la lnea (tal como cuando alguien teclea ENTER varias veces), escribe una aviso en la lnea, y espera de vuelta un nombre de usuario. Cuando recibe el nombre de usuario, ste ejecuta el comando login para continuar el proceso de inicio de sesin. Cuando un usuario sale, el proceso de inicio (el cual es un proceso getty) muere e init regenera un nuevo getty para ocupar su lugar. Un getty se debe lanzar para monitorizar cada lnea serial en que los usuarios puedan iniciar sesin. Las lneas de configuracin anteriores lanzan un mingetty para cada una de las primeras 6 consolas virtuales. Por qu Linux suele tener seis consolas virtuales en las que los usuarios pueden iniciar sesin? Porque init genera seis gettys. Si un administrador quisiera proporcionar ms consolas virtuales, se podran aadir o suprimir ms lneas. Igualmente si una terminal estuviera conectada al puerto serial de una mquina, los usuarios podran utilizar la terminal hasta que una getty fuera conectada a la lnea serial. Si se agrega la siguiente lnea al archivo / et c/ i ni t t ab, resolver el problema para el primer puerto serial. Por ltimo, la ltima lnea es lo que distingue principalmente al nivel de ejecucin 3 del nivel de ejecucin 5. En el nivel de ejecucin 5, init de modo consistente regenera el script / et c/ X11/ pr ef dm, el cual comienza por el "gestor de pantalla preferido", i.e., el servidor X el cual le permite al usuario iniciar en la mquina mediante una interfaz grfica. Como un ejemplo tangible de la capacidad de init para regenerar procesos, vaya a una mquina que est en pantalla grfica de inicio y utilice la combinacin de teclas CONTROL-ALT- RETROCESO para matar el servidor grfico X. Despus de una corta pausa, init generar un nuevo servidor X para ocupar su lugar. Manejo de Init Observar los niveles de ejecucin con runlevel El comando runlevel se puede utilizar para observar el nivel de ejecucin actual de la mquina. La salida no es tan simple como pareca porque se dan dos valores. El ltimo es el nivel de # Run get t ys i n st andar d r unl evel s 2: 2345: r espawn: / sbi n/ mi nget t y t t y2 3: 2345: r espawn: / sbi n/ mi nget t y t t y3 4: 2345: r espawn: / sbi n/ mi nget t y t t y4 5: 2345: r espawn: / sbi n/ mi nget t y t t y5 6: 2345: r espawn: / sbi n/ mi nget t y t t y6 s0: 2345: r espawn: / sbi n/ mi nget t y t t yS0 # Run xdmi n r unl evel 5 # xdmi s now a separ at e ser vi ce x: 5: r espawn: / et c/ X11/ pr ef dm- nodaemon [root@station root]# runlevel N 5 ejecucin actual, el primero es el nivel de ejecucin anterior o N para una mquina recin iniciada. La salida anterior corresponde a una mquina recin iniciada en el nivel de ejecucin 5. Cambio de niveles de ejecucin con init o telinit A init se le puede pedir que cambie los niveles de ejecucin al invocarlo con el nivel de ejecucin deseado como nico argumento. El cambio de niveles de ejecucin tiende a ser violento. Los procesos mueren, sacan los usuarios de la mquina. En mquinas de multiusuarios, los administradores tratan de programar cambios en el nivel de ejecucin (por ejemplo pasar a modo monousuario para realizar tareas de mantenimiento) con el fin de no tomar por sorpresa a los usuarios. En algunas versiones de Unix, el proceso init no est diseado para uso reentrante y se utiliza un segundo comando telinit para cambiar los niveles de ejecucin. En Linux, tanto init como telinit sirven para cambiar los niveles de ejecucin. Solicitar init para releer /etc/inittab Aunque el proceso init lee su archivo de configuracin en el inicio, una vez ledo ya no se monitoriza ms. Si se le hacen modificaciones al archivo se le puede pedir al proceso init que relea el archivo y aplique los cambios con el comando init q. Apagar la mquina con shutdown Lo cierto de cualquier sistema operativo multitareas es que hay formas correctas e incorrectas de apagar una mquina Linux. Las formas incorrectas incluyen desconectar el cable de alimentacin. A continuacin trataremos las formas correctas. En principio, una mquina de Linux se apaga al cambiar a nivel de ejecucin 0 (por razones que veremos en la prxima leccin). Por lo tanto, el comando init se puede utilizar para iniciar un apagado instantneo de una mquina. Por lo general. los administradores prefieren utilizar un comando llamado shutdown o una de sus variantes. El comando shutdown tiene dos ventajas. Primero, el apagado se puede programar para que ocurra a una hora determinada. Segundo, se anuncia el apagado a las terminales de todos los usuarios conectados y con esto se les da la oportunidad de cerrar su trabajo y salir. El comando shutdown utiliza la siguiente sintaxis. Table 1. Opciones del comando shutdown [root@station root]# init 3 [root@station root]# init 0 /sbin/shutdown [-hprc] time [warning-message] Opcin Efecto -h Detener la mquina El comando shutdown suele llamarse con las opciones -h, -p, o -r, para que la mquina se detenga, se apague o reinicie, respectivamente. Si no se especifica ninguna de los tres, shutdown lleva la mquina al nivel de ejecucin 1. La opcin -c se puede utilizar para cancelar un apagado pendiente. El argumento de tiempo obligatorio se puede especificar de tres maneras. Table 2. Especificar tiempos para el comando shutdown Tambin existen unos atajos poco conocidos para el comando shutdown que presentamos a continuacin. Table 3. Atajos para el comando shutdown El script /etc/rc.d/rc.sysinit Tras el arranque, el kernel inicia el proceso / sbi n/ i ni t . El comando init examina el archivo / et c/ i ni t t ab, donde encuentra lo siguiente como su primera lnea relevante. Traduciendo esta lnea dice init "en el inicio, slo en el inicio, ejecute el script / et c/ r c. d/ r c. sysi ni t ". Ahora veremos el script de inicio en detalle. El script r c. sysi ni t es un complicado script de shell bash, el cual realiza una gran cantidad de tareas. No podremos dar cada detalle del script, pero extraemos algunas partes importantes o puntos interesantes con comentarios. No piense que necesita recordar todos los detalles o todo lo que se presenta. Se puede excusar a quien trate de pasar por alto extractos de cdigo bash como muchos haran con ecuaciones de fsica. Sin embargo, mientras lee los comentarios debera realizar una lista en su mente de las acciones que un script realiza cada vez que el sistema arranca. Para el interesado en saber ms, tambin podra componer un segundo listado de los trucos de programacin de la shell bash. Antes de empezar, recordemos el estado de la mquina. El kernel ha sido iniciado, se ha montado la particin raz de solo lectura y se ha iniciado init, el cual a su vez inici este script. Cuando se -p Despus de detener la mquina, apguela. -r Reiniciar la mquina -c Cancelar un apagado pendiente Sintaxis Interpretacin hh:mm Un tiempo absoluto cuando el apagado debe ocurrir, en horas y minutos. +n Un tiempo relativo cuando el apagado debe ocurrir en n minutos. ahora Un sinnimo para + 0. Atajo Comando equivalente halt shutdown -h now poweroff shutdown -p now reboot shutdown -r now si : : sysi ni t : / et c/ r c. d/ r c. sysi ni t ejecuta este script, cuntos procesos se estn ejecutando en la mquina? Dos. A qu se parece el sistema de archivos? Slo la particin raz est montada y est montada de slo lectura. El script comienza por examinar / et c/ sysconf i g/ net wor k para determinar un nombre de host para el sistema. Luego, en el proceso de inicio, el sistema de archivos proc se monta en el directorio / pr oc. Luego, el script hace un gran esfuerzo examinando el archivo / et c/ r edhat - r el ease para decidir a qu llamar en el mensaje de bienvenida que muestra. #! / bi n/ bash # # / et c/ r c. d/ r c. sysi ni t - r un once at boot t i me #
. . .
HOSTNAME=`/ bi n/ host name` i f [ - f / et c/ sysconf i g/ net wor k ] ; t hen . / et c/ sysconf i g/ net wor k el se NETWORKI NG=no f i i f [ - z " $HOSTNAME" - o " $HOSTNAME" = " ( none) " ] ; t hen HOSTNAME=l ocal host f i
# Mount / pr oc ( done her e so vol ume l abel s can wor k wi t h f sck) act i on $" Mount i ng pr oc f i l esyst em: " mount - n - t pr oc / pr oc / pr oc
. . . . . .
# Pr i nt a t ext banner . echo - en $" \ t \ t Wel come t o " i f LC_ALL=C gr ep - q " Red Hat " / et c/ r edhat - r el ease ; t hen [ " $BOOTUP" = " col or " ] && echo - en " \ \ 033[ 0; 31m" echo - en " Red Hat " [ " $BOOTUP" = " col or " ] && echo - en " \ \ 033[ 0; 39m" PRODUCT=`sed " s/ Red Hat \ ( . *\ ) r el ease. */ \ 1/ " / et c/ r edhat - r el ease` echo " $PRODUCT" el se PRODUCT=`sed " s/ r el ease. */ / g" / et c/ r edhat - r el ease` echo " $PRODUCT" f i i f [ " $PROMPT" ! = " no" ] ; t hen echo - en $" \ t \ t Pr ess ' I ' t o ent er i nt er act i ve st ar t up. " echo f i Un gran esfuerzo en determinar cmo hacerlo, pero el tiempo del sistema finalmente se inicializa desde BIOS con el comando / sbi n/ hwcl ock. Luego, evitamos muchas lneas de inicializacin del mdulo del kernel de USB y las retomamos aqu. # Set t he syst emcl ock. updat e_boot _st age RCcl ock ARC=0 SRM=0 UTC=0
i f [ - f / et c/ sysconf i g/ cl ock ] ; t hen . / et c/ sysconf i g/ cl ock
# conver t ol d st yl e cl ock conf i g t o new val ues i f [ " ${CLOCKMODE}" = " GMT" ] ; t hen UTC=t r ue el i f [ " ${CLOCKMODE}" = " ARC" ] ; t hen ARC=t r ue f i f i
act i on $" Set t i ng cl ock $CLOCKDEF: `dat e`" dat e Alrededor de la octava lnea se encuentra la lnea importante: initlog -c "fsck -T -a $fsckoptions /", o reducindola a su esencia fsck /. Ahora entendemos la razn por la cual el kernel mont la particin raz de slo lectura. Un sistema de archivos montado de slo lectura se puede ejecutar con fsck y se puede reparar, pero si es un sistema de archivos montado de lectura y escritura entonces no se puede reparar. El montaje de slo lectura del kernel permite realizar el primer chequeo de la particin raz. Si se presentan problemas, se enva al usuario a una shell de rescate. Ahora que se ha ejecutado fsck, la particin raz se puede volver a montar como de lectura y escritura con mount -o remount,rw /. . . .
_RUN_QUOTACHECK=0 ROOTFSTYPE=`awk ' / \ / / && ( $3 ! ~ / r oot f s/ ) { pr i nt $3 }' / pr oc/ mount s` i f [ - z " $f ast boot " - a " X$ROOTFSTYPE" ! = " Xnf s" ] ; t hen
STRI NG=$" Checki ng r oot f i l esyst em" echo $STRI NG i ni t l og - c " f sck - T - a $f sckopt i ons / " r c=$?
i f [ " $r c" = " 0" ] ; t hen success " $STRI NG" echo el i f [ " $r c" = " 1" ] ; t hen passed " $STRI NG" echo f i
# A r et ur n of 2 or hi gher means t her e wer e ser i ous pr obl ems. i f [ $r c - gt 1 ] ; t hen i f [ " $BOOTUP" = " gr aphi cal " ] ; t hen chvt 1 f i
f ai l ur e " $STRI NG" echo echo echo $" *** An er r or occur r ed dur i ng t he f i l e syst emcheck. " echo $" *** Dr oppi ng you t o a shel l ; t he syst emwi l l r eboot " echo $" *** when you l eave t he shel l . "
st r =$" ( Repai r f i l esyst em) " PS1=" $st r \ # # " ; expor t PS1 sul ogi n
echo $" Unmount i ng f i l e syst ems" umount - a mount - n - o r emount , r o / echo $" Aut omat i c r eboot i n pr ogr ess. " r eboot - f el i f [ " $r c" = " 1" ] ; t hen _RUN_QUOTACHECK=1 f i f i . . .
# Remount t he r oot f i l esyst emr ead- wr i t e. updat e_boot _st age RCmount f s st at e=`awk ' / \ / / && ( $3 ! ~ / r oot f s/ ) { pr i nt $4 }' / pr oc/ mount s` [ " $st at e" ! = " r w" ] && \ act i on $" Remount i ng r oot f i l esyst emi n r ead- wr i t e mode: " mount - n - o r emount , r w / Si se est utilizando la administracin de un volumen lgico, la puede iniciar en este momento. Tambin active cualquier particin swap. Luego evite varias lneas iniciando mdulos de kernel y activando el RAID de software, si lo est utilizando. Al reanudar, recuerde el estado actual del sistema de archivos. Ahora la particin raz se monta de lectura y escritura, pero an es la nica particin montada. De nuevo, la lnea importante se presenta alrededor de la octava lnea en initlog -c "fsck -T -R -A -a $fsckoptions" , o, reduce, fsck -A. Todos los sistemas de archivos restantes (desmontados) se estn comprobando. El resto de la estrofa lleva al sistema a una shell de rescate si se presentan problemas mayores. # LVM i ni t i al i zat i on i f [ - f / et c/ l vmt ab - a ! - e / pr oc/ l vm] ; t hen modpr obe l vm- mod >/ dev/ nul l 2>&1 f i i f [ - e / pr oc/ l vm- a - x / sbi n/ vgchange - a - f / et c/ l vmt ab ] ; t hen act i on $" Set t i ng up Logi cal Vol ume Management : " / sbi n/ vgscan && / sbi n/ vgchange - a y f i
# St ar t up swappi ng. updat e_boot _st age RCswap act i on $" Act i vat i ng swap par t i t i ons: " swapon - a - e . . .
_RUN_QUOTACHECK=0 # Check f i l esyst ems i f [ - z " $f ast boot " ] ; t hen STRI NG=$" Checki ng f i l esyst ems" echo $STRI NG i ni t l og - c " f sck - T - R - A - a $f sckopt i ons" r c=$? i f [ " $r c" = " 0" ] ; t hen success " $STRI NG" echo el i f [ " $r c" = " 1" ] ; t hen passed " $STRI NG" echo f i
# A r et ur n of 2 or hi gher means t her e wer e ser i ous pr obl ems. i f [ $r c - gt 1 ] ; t hen i f [ " $BOOTUP" = " gr aphi cal " ] ; t hen chvt 1 f i
f ai l ur e " $STRI NG" echo echo echo $" *** An er r or occur r ed dur i ng t he f i l e syst emcheck. " echo $" *** Dr oppi ng you t o a shel l ; t he syst emwi l l r eboot " echo $" *** when you l eave t he shel l . "
st r =$" ( Repai r f i l esyst em) " PS1=" $st r \ # # " ; expor t PS1 sul ogi n
echo $" Unmount i ng f i l e syst ems" umount - a mount - n - o r emount , r o / echo $" Aut omat i c r eboot i n pr ogr ess. " r eboot - f el i f [ " $r c" = " 1" - a - x / sbi n/ quot acheck ] ; t hen _RUN_QUOTACHECK=1 f i f i Ahora que el resto de sistemas de archivos han sido ejecutados con fsck, se ejecuta el comando importante mount -a. Los sistemas de archivos de red tales como NFS y SMB, no se montan en este momento. En este punto, todo el sistema de archivos debe estar en su lugar. Recordemos qu procesos se estn ejecutando en la mquina: init, este script y cualquier proceso que este script haya iniciado. En otras palabras, no muchos. Todas estas lneas estn limpiando el sistema de archivos de los variados archivos PID dejados por demonios y archivos de bloqueo y sockets de varias aplicaciones desde el arranque anterior. Tambin se restablecen, las propiedades y permisos para dispositivos que podran an ser reclamados por un usuario de una consola no existente. Es interesante que el espacio swap se reactiva otra vez. Es necesari, porque el sistema podra estar utilizando un archivo de intercambio contenido en algn lugar diferente al de la particin raz. Ahora pasamos por alto una gran cantidad de configuracin miscelania y terminamos con lo siguiente. # Mount al l ot her f i l esyst ems ( except f or NFS and / pr oc, whi ch i s al r eady # mount ed) . Cont r ar y t o st andar d usage, # f i l esyst ems ar e NOT unmount ed i n si ngl e user mode. act i on $" Mount i ng l ocal f i l esyst ems: " mount - a - t nonf s, smbf s, ncpf s - O no_net dev . . .
# Cl ean out / . r m- f / f ast boot / f sckopt i ons / f or cef sck / . aut of sck / hal t / power of f
. . .
# Cl ean up / var . I ' d use f i nd, but / usr may not be mount ed. f or af i l e i n / var / l ock/ * / var / r un/ * ; do i f [ - d " $af i l e" ] ; t hen case " $af i l e" i n */ news| */ mon) ; ; */ sudo| */ vmwar e) r m- f $af i l e/ */ * ; ; *) r m- f $af i l e/ * ; ; esac el se r m- f $af i l e f i done r m- f / var / l i b/ r pm/ __db*
# Reset pam_consol e per mi ssi ons [ - x / sbi n/ pam_consol e_appl y ] && / sbi n/ pam_consol e_appl y - r
. . . . . . # Now t ur n on swap i n case we swap t o f i l es. swapon - a act i on $" Enabl i ng swap space: " / bi n/ t r ue . . .
# Now t hat we have al l of our basi c modul es l oaded and t he ker nel goi ng, # l et ' s dump t he sysl og r i ng somewher e so we can f i nd i t l at er dmesg - s 131072 > / var / l og/ dmesg
. . . Recordemos que el archivo / var / l og/ dmesg contiene una copia de mensajes del kernel grabada pronto despus del arranque ms reciente. Aqu es donde se crea el archivo. Resumiendo, hallamos que el script r c. sysi ni t hace un montn de cosas (omitimos cerca de la mitad), pero aqu est lo ms importante. En la entrada, el sistema de archivos consta de slo la particin raz, montada como de slo lectura. En la salida, el sistema de archivos se revisa todo, se monta y limpia, listo para utilizarlo. Ahora el proceso de arranque contina con el nivel de ejecucin especfico, el cual es el tema de la siguiente leccin. System Initialization and Services Ejemplos Personalizar CONTROLALTSUPR para un porttil. Un propietario de un computador porttil se dio cuenta que pocas veces necesitaba reiniciar su porttil, pero en cambio con frecuencia estaba apagndolo para guardarlo y llevarlo con l. Modific su archivo / et c/ i ni t t ab para personalizar la conducta de la secuencia de teclas CONTROL-ALT-SUPR. El extracto a continuacin muestra la lnea original y la lnea modificada. #ca: : ct r l al t del : / sbi n/ shut down - t 3 - r now ca: : ct r l al t del : / sbi n/ power of f System Initialization and Services Ejercicios en lnea Specification 1. Como precaucin, haga una copia de seguridad de su archivo / et c/ i ni t t ab en el archivo / et c/ i ni t t ab. pr el ab4. 2. Realice los siguientes cambios en su archivo / et c/ i ni t t ab. En ningn caso deberan cambiar el primer campo de dos letras de una lnea. a. Quite el comentario de las lneas que regeneren gettys para las consolas virtuales nmero cinco y seis. b. Duplique la lnea que conecta un comando con la secuencia de teclas CONTROL- ALT-SUPR. Quite el comentario de la lnea original, edite la nueva copia para que en lugar de reiniciar la mquina, la secuencia de teclas CONTROL-ALT-SUPR ejecute con echo el mensaje en ingls Three finger salute disabled, (este cambio slo puede observarse desde la consola virtual cuando el servidor X bloquea la secuencia de teclas CONTROL-ALT-SUPR.) c. Modifique la lnea que regenera el gestor de pantalla grfico de tal modo que el gestor de pantalla sea regenerado tanto en el nivel de ejecucin 4 como en el 5. d. Cambie su nivel de ejecucin al nivel de ejecucin 3 (si no lo ha hecho todava). 3. Cuando termine, reinicie su mquina. Despus de reiniciar, su mquina debe entrar al nivel de ejecucin 3. 4. Inicie sesin desde la primera consola virtual. Utilice el comando init para cambiar de modo manual desde el nivel de ejecucin 3 al 4. 5. En el nivel de ejecucin 4, el gestor de pantalla grfico (pantalla de inicio de sesin) se debe iniciar con init. Inicie sesin con la cuenta de Red Hat Academy y califique el ejercicio. Resultados Limpieza Despus de haber completado el ejercicio, restaure su archivo original / et c/ i ni t t ab colocando / et c/ i ni t t ab. pr el ab4 de nuevo en su lugar como / et c/ i ni t t ab y de modo manual cambie al nivel de ejecucin 5, o reinicie su mquina. A title Question 1 [Warning] Lab Exercise Objetivo: Administrar el proceso init con el archivo / et c/ i ni t t ab. Tiempo estimado: 20 minutos.
1. Ningun proceso (en particular el de mingetty) se debe conectar a las terminales / dev/ t t y5 o / dev/ t t y6. 2. El comando runlevel debe revelar el nivel de ejecucin actual como nivel de ejecucin 4 y el nivel de ejecucin anterior como nivel de ejecucin 3. 3. El archivo / et c/ i ni t t ab debe establecer el nivel de ejecucin predeterminado a 3. 4. El proceso init debe regenerar el administrador de pantalla para los niveles de ejecucin 4 y 5. 5. Desde dentro de una consola virtual, la secuencia de teclas CONTROL-ALT-SUPR debe echo la frase Three finger salute disabled, pero sin reiniciar la mquina. grade System Initialization and Services Scripts de servicios de Red Hat Enterprise Linux Conceptos clave Los scripts de servicios de Red Hat Enterprise Linux que se encuentran en el directorio / et c/ r c. d/ i ni t . d. Los servicios se pueden iniciar o detener mediante el comando service. La configuracin del nivel de ejecucin predeterminado para servicios se puede realizar con el comando chkconfig. System Initialization and Services Discusin El directorio /etc/rc.d Mientras continuamos nuestra explicacin sobre El arranque de mquinas Linux que comenzamos en lecciones anteriores, el kernel ha iniciado el proceso init, el cual a su vez ha ejecutado el script / et c/ r c. d/ r c. sysi ni t . Despus de salir de este script, el sistema de archivos de la mquina se ha ensamblado. El proceso init contina examinando el archivo / et c/ i ni t t ab desde donde qued. Observando con mucha atencin el segundo campo, init slo ejecuta una de las siguientes lneas / et c/ r c. d/ r c, una para el nivel de ejecucin en el que el sistema est arrancando (probablemente 3 o 5). En cualquier caso, cada lnea tiene el mismo efecto; se llama el script / et c/ r c. d/ r c con el nivel de ejecucin apropiado como un argumento. No analizaremos el script r c directamente, pero describiremos lo que hace. Primero examinamos el diseo del directorio / et c/ r c. d. Haciendo un inventario rpido, vemos tres secuencias de comandos de scripts, varios directorios aparentemente llamados segn los niveles de ejecucin y un directorio i ni t . d. Con el riesgo de ir ms adelante de nosotros mismos, presentamos un resumen del contenido del directorio: Table 1. Contenido del directorio /etc/rc.d Al observar uno de los directorios de nivel de ejecucin, hallamos lo siguiente. . . . # Syst emi ni t i al i zat i on. si : : sysi ni t : / et c/ r c. d/ r c. sysi ni t
l 0: 0: wai t : / et c/ r c. d/ r c 0 l 1: 1: wai t : / et c/ r c. d/ r c 1 l 2: 2: wai t : / et c/ r c. d/ r c 2 l 3: 3: wai t : / et c/ r c. d/ r c 3 l 4: 4: wai t : / et c/ r c. d/ r c 4 l 5: 5: wai t : / et c/ r c. d/ r c 5 l 6: 6: wai t : / et c/ r c. d/ r c 6
. . . [root@station rc.d]$ ls -F /etc/rc.d/ i ni t . d/ r c0. d/ r c2. d/ r c4. d/ r c6. d/ r c. sysi ni t * r c* r c1. d/ r c3. d/ r c5. d/ r c. l ocal * Archivo Tipo Propsito r c. sysi ni t script sistema de inicializacin en el arranque r c. l ocal script Personalizacin local de inicializacin del sistema en el arranque r c script realiza cambios en nivel de ejecucin i ni t . d directorio contiene scripts de servicios de Red Hat Enterprise Linux r cn. d directorio contiene enlaces simblicos que implementan la configuracin del estado de servicios para el nivel de ejecucin n. Como lo implica la representacin proporcionada por la opcin -F (o el color azul claro de las entradas en la terminal), el directorio no est lleno de archivos regulares, sino de enlaces simblicos. Si pedimos que apunte a los enlaces simblicos, hallamos lo siguiente. Cada enlace simblico parece referirse a un script en el directorio / et c/ r c. d/ i ni t . d. Al dar una mirada rpida a los directorios especficos de nivel de ejecucin, hallamos lo mismo. Parece que hemos descubierto un directorio importante: / et c/ r c. d/ i ni t . d. Los scripts de servicios y el directorio /etc/rc.d/init.d El directorio / et c/ r c. d/ i ni t . d tiene una funcin especial en Red Hat Enterprise Linux y debera ser parte del vocabulario de trabajo de cualquier administrador de Red Hat Enterprise Linux . El directorio contiene exclusivamente scripts que comparten una interfaz similar. Cada script espera ser llamado con un slo argumento, principalmente start, stop, restart, reload o status. Estos scripts se conocen como scripts de servicios y la mayora manipulan directamente un demonio, el cual realiza un servicio particular. A manera de ejemplo, el script de servicios / et c/ r c. d/ i ni t . d/ sshd administra el demonio / usr / sbi n/ sshd, el cual es el servidor para el servicio de red de Secure Shell. Si queremos saber si el servicio est en ejecucin entonces preguntamos por su status. [root@station rc.d]$ ls -F /etc/rc.d/rc3.d/ K05sasl aut hd@ K40smar t d@ S00mi cr ocode_ct l @ S17keyt abl e@ S80sendmai l @ K10psacct @ K45named@ S05kudzu@ S20r andom@ S85gpm@ K15dc_cl i ent @ K50net dump@ S08ar pt abl es_j f @ S24pcmci a@ S90cr ond@ K15dc_ser ver @ K50snmpd@ S08i p6t abl es@ S25net f s@ S90xf s@ K15ht t pd@ K50snmpt r apd@ S08i pt abl es@ S26apmd@ S95at d@ K20nf s@ K50t ux@ S09i sdn@ S28aut of s@ S97r hnsd@ K24i r da@ K70aep1000@ S10net wor k@ S55cups@ S99l ocal @ K25squi d@ K70bcm5820@ S12sysl og@ S55sshd@ S99mdmoni t or @ K35smb@ K73ypbi nd@ S13i r qbal ance@ S56r awdevi ces@ S99mdmpd@ K35vncser ver @ K74nscd@ S13por t map@ S56xi net d@ K35wi nbi nd@ K74nt pd@ S14nf sl ock@ S59hpoj @ [root@station rc.d]$ ls -lF /etc/rc.d/rc3.d/ t ot al 0 l r wxr - xr - x 1 r oot r oot 19 Dec 27 12: 07 K05sasl aut hd - > . . / i ni t . d/ sasl aut hd* l r wxr - xr - x 1 r oot r oot 16 Dec 27 12: 08 K10psacct - > . . / i ni t . d/ psacct * l r wxr - xr - x 1 r oot r oot 19 Dec 27 16: 12 K15dc_cl i ent - > . . / i ni t . d/ dc_cl i ent * l r wxr - xr - x 1 r oot r oot 19 Dec 27 16: 12 K15dc_ser ver - > . . / i ni t . d/ dc_ser ver * l r wxr - xr - x 1 r oot r oot 15 Dec 27 16: 12 K15ht t pd - > . . / i ni t . d/ ht t pd* l r wxr - xr - x 1 r oot r oot 13 Dec 27 12: 08 K20nf s - > . . / i ni t . d/ nf s* . . . [root@station init.d]$ cd /etc/rc.d/init.d/ [root@station init.d]$ ls aep1000 f i r st boot i sdn net f s r awdevi ces sshd apmd f unct i ons kdcr ot at e net wor k r hnsd sysl og ar pt abl es_j f gpm keyt abl e nf s sasl aut hd t ux at d hal t ki l l al l nf sl ock sendmai l vncser ver aut of s hpoj kudzu nscd si ngl e wi nbi nd bcm5820 ht t pd mdmoni t or nt pd smar t d xf s cr ond i p6t abl es mdmpd pcmci a smb xi net d cups i pt abl es mi cr ocode_ct l por t map snmpd ypbi nd dc_cl i ent i r da named psacct snmpt r apd dc_ser ver i r qbal ance net dump r andom squi d [root@station init.d]$ ./sshd Usage: . / sshd {st ar t | st op| r est ar t | r el oad| condr est ar t | st at us} Hallamos que el demonio est despierto y en ejecucin. Claro est que pudimos haber mirado directamente con el comando ps. Si queremos detener el servicio, le pedimos al script de servicios que pare con stop. Como el script nos pidi y como confirmamos dos veces a travs de dos tcnicas diferentes, el demonio sshd est muerto. No debera ser difcil determinar cmo volver a iniciar el demonio. El demonio sshd est otra vez ejecutndose, naturalmente con un Id de proceso diferente. Qu hace un restart? Un stop, seguido por un start. Qu hace un reload? Para ilustrar de una forma ms directa, volvemos a cargar el demonio crond en lugar de sshd. A diferencia de un restart, un reload es una accin sencilla y el mismo proceso suele ejecutarse despus de un reload como lo era antes (observe que el Id del proceso crond es idntico). Muchos demonios Linux (y Unix) anulan el numero de seal 1 (SIGHUP) y lo utilizan como signo para releer e implementar cambios hechos a los archivos de configuracin. En otras palabras, se pueden reinicializar muchos demonios entregndoles un nmero de seal 1. En los viejos tiempos se referan a esto como rehupping un demonio. Aunque un restart literalmente detiene y luego inicia un demonio, un reload normalmente lo reinicia. [root@station init.d]$ ./sshd status sshd ( pi d 4992) i s r unni ng. . . [root@station init.d]$ ps aux | grep sshd r oot 4992 0. 0 0. 1 3444 1480 ? S 05: 05 0: 00 / usr / sbi n/ sshd r oot 5690 0. 0 0. 0 3576 636 pt s/ 2 S 05: 52 0: 00 gr ep sshd [root@station init.d]$ ./sshd stop St oppi ng sshd: [ OK ] [root@station init.d]$ ./sshd status sshd i s st opped [root@station init.d]$ ps aux | grep sshd r oot 5717 0. 0 0. 0 3580 640 pt s/ 2 S 05: 52 0: 00 gr ep sshd [root@station init.d]$ ./sshd start St ar t i ng sshd: [ OK ] [root@station init.d]$ ./sshd status sshd ( pi d 5729) i s r unni ng. . . [root@station init.d]$ ./sshd restart St oppi ng sshd: [ OK ] St ar t i ng sshd: [ OK ] [root@station init.d]$ ./sshd status sshd ( pi d 5763) i s r unni ng. . . [root@station init.d]$ ./crond status cr ond ( pi d 5999) i s r unni ng. . . [root@station init.d]$ ./crond reload Rel oadi ng cr on daemon conf i gur at i on: [ OK ] [root@station init.d]$ ./crond status cr ond ( pi d 5999) i s r unni ng. . . No obstante, le advertimos acerca de los scripts de servicios que se estn ejecutando desde el directorio / et c/ r c. d/ i ni t . d. A continuacin, observe la diferencia en los dos ltimos comandos. Por qu aparentemente el mismo comando produjo dos salidas diferentes? Qu archivo se ejecut en realidad en el ltimo caso? . Los scripts de servicios de Red Hat Enterprise Linux proporcionan un mecanismo fcil y conveniente para la administracin de demonios. Despus de un tiempo, /etc/rc.d/init.d/... tiende a facilitar la tarea de un administrador de Red Hat Enterprise Linux. Quiere iniciar el servidor de red? /etc/rc.d/init.d/httpd start. Quiere que el demonio sshd relea su archivo de configuracin? /etc/rc.d/init.d/sshd reload. Quiere matar al demonio ftp? Usted entiende. Sin embargo, hay una forma an ms fcil... Los servicios y el comando service Debido a que los administradores suelen estar ejecutando scripts desde el directorio / et c/ r c. d/ i ni t . d, se cre un atajo llamado service. El comando service espera como su primer argumento el nombre de un servicio de Red Hat Enterprise Linux y como segundo argumento un comando de una palabra tal como start, stop, etc. Qu es un servicio de Red Hat Enterprise Linux? Cualquier componente del sistema administrado por un script de servicios en el directorio / et c/ r c. d/ i ni t . d. Las siguientes dos lneas de comandos son exactamente iguales. La mayora de los servicios tienen demonios asociados a ellos. Por ejemplo, hay un servicio llamado network. Como el nombre lo implica, los componentes de red del sistema se detienen y reinician. Como se [root@station root]$ cd /etc/rc.d/init.d/ [root@station init.d]$ ./sshd status sshd ( pi d 5864) i s r unni ng. . . [root@station init.d]$ sshd status Ext r a ar gument st at us. servicio service_name comando service service_name start /etc/rc.d/init.d/service_name start [root@station root]$ iniciar servicio de red Shut t i ng down i nt er f ace et h0: [ OK ] Shut t i ng down i nt er f ace et h1: [ OK ] Shut t i ng down l oopback i nt er f ace: [ OK ] Di sabl i ng I Pv4 packet f or war di ng: [ OK ] Set t i ng net wor k par amet er s: [ OK ] Br i ngi ng up l oopback i nt er f ace: [ OK ] Br i ngi ng up i nt er f ace et h0: [ OK ] Br i ngi ng up i nt er f ace et h1: [ OK ] describir ms adelante no hay un demonio asociado de red. En cambio, el servicio de red nicamente cambia el estado del kernel. Igualmente, algunos servicios administran ms de un demonio de modo colectivo como el caso para los servicios syslog y nfs. Lo que define un servicio no es un demonio determinado, sino la presencia de un script de servicios en el directorio / et c/ r c. d/ i ni t . d. Muchos servicios administran un demonio, algunos no lo hacen, aunque algunos manejan ms de un demonio en conjunto. La administracin del sistema de servicios es an ms fcil. Quiere empezar a utilizar el servidor de red? service httpd start. Quiere saber si el servicio de Secure Shell se est ejecutando? service sshd status. Aunque el comando service facilita la vida a los administradores, deberan conocer el directorio / et c/ r c. d/ i ni t . d y la funcin que realiza. Por ejemplo, qu sucede si un administrador quiere iniciar el servidor SAMBA? Un par de cosas podran salir mal. 1. El software que implementa el servidor SAMBA no se podra instalar en el sistema. 2. El administrador podra tener incorrecto el nombre del servicio. En cualquier caso, una mirada rpida en el directorio / et c/ r c. d/ i ni t . d identificar el problema. En este caso, el administrador se da cuenta de que simplemente ha dado un nombre incorrecto al servicio. (Como una ayuda, los scripts de servicios que administran un demonio nico se llaman generalmente por el nombre del demonio, e incluyen la d final. Los scripts de servicios que administran mltiples demonios (como es el caso de smb) por lo general, no incluyen la d final.) [root@station root]$ service nfs status r pc. mount d i s st opped nf sd i s st opped r pc. r quot ad i s st opped [root@station root]$ service syslog status sysl ogd ( pi d 4423) i s r unni ng. . . kl ogd ( pi d 4427) i s r unni ng. . . [root@station root]$ service smbd start smbd: unr ecogni zed ser vi ce [root@station root]# ls /etc/rc.d/init.d/s* / et c/ r c. d/ i ni t . d/ sasl aut hd / et c/ r c. d/ i ni t . d/ smb / et c/ r c. d/ i ni t . d/ squi d / et c/ r c. d/ i ni t . d/ sendmai l / et c/ r c. d/ i ni t . d/ snmpd / et c/ r c. d/ i ni t . d/ sshd / et c/ r c. d/ i ni t . d/ si ngl e / et c/ r c. d/ i ni t . d/ snmpt r apd / et c/ r c. d/ i ni t . d/ sysl og [root@station root]# service smb start St ar t i ng SMB ser vi ces: [ OK ] St ar t i ng NMB ser vi ces: [ OK ] El siguiente cuadro resume los comandos que deberan ser soportados por todos los scripts de servicios. Algunos scripts de servicios admiten comandos adicionales especficos para ese servicio. Table 1. Comandos de los scripts de servicios Configuracin del servicio de nivel de ejecucin y chkconfig Aunque nuestro paseo por el comando service fue importante, ste nos sac de nuestro tema sobre el proceso de arranque de Red Hat Enterprise Linux, al cual nos gustara volver. Cuando lo dejamos, estbamos explorando el directorio / et c/ r c. d. En particular, hemos observado que varios subdirectorios especficos del nivel de ejecucin contenan de forma meticulosa enlaces simblicos, los cuales se referan a los scripts de servicios en el directorio / et c/ r c. d/ i ni t . d. El nombre de cada enlace simblico tiene la siguiente forma. Aqu, L puede ser la letra K o la letra S, dd es un nmero de dos dgitos y service_name es el nombre del script de servicios a los cules apunta el enlace simblico. Ahora podemos describir exactamente lo que hace un script / et c/ r c. d/ r c. Recuerde que cada vez que el sistema cambia niveles de ejecucin (incluyendo entrar un nivel de ejecucin en el Comando Efecto start Inicia el servicio. stop Detiene el servicio. status Genera un mensaje de estatus del servicio apropiado. Como mnimo, el mensaje reporta si el servicio se est ejecutando y el Id del proceso de todos los demonios asociados. A menudo, el mensaje de estatus tambin incluye informacin especfica del servicio. restart Primero se detiene y luego inicia el servicio. reload Reinicializa el servicio sin reiniciar, si es necesario. condrestart Si el servicio ya se est ejecutando, lo reinicia, de lo contrario, no hace nada, (este comando es til con scripts automticos.) [root@station root]# ls -F /etc/rc.d/ i ni t . d/ r c0. d/ r c2. d/ r c4. d/ r c6. d/ r c. sysi ni t * r c* r c1. d/ r c3. d/ r c5. d/ r c. l ocal * r c. sysi ni t . r pmsave* [root@station root]# ls -F /etc/rc.d/rc3.d/ K05sasl aut hd@ K40smar t d@ S00mi cr ocode_ct l @ S17keyt abl e@ S80sendmai l @ K10psacct @ K45named@ S05kudzu@ S20r andom@ S85gpm@ K15dc_cl i ent @ K50net dump@ S08ar pt abl es_j f @ S24pcmci a@ S90cr ond@ K15dc_ser ver @ K50snmpd@ S08i p6t abl es@ S25net f s@ S90xf s@ K15ht t pd@ K50snmpt r apd@ S08i pt abl es@ S26apmd@ S95at d@ K20nf s@ K50t ux@ S09i sdn@ S28aut of s@ S97r hnsd@ K24i r da@ K70aep1000@ S10net wor k@ S55cups@ S99l ocal @ K25squi d@ K70bcm5820@ S12sysl og@ S55sshd@ S99mdmoni t or @ K35smb@ K73ypbi nd@ S13i r qbal ance@ S56r awdevi ces@ S99mdmpd@ K35vncser ver @ K74nscd@ S13por t map@ S56xi net d@ K35wi nbi nd@ K74nt pd@ S14nf sl ock@ S59hpoj @ Lddservice_name arranque), init llama al script rc, el cual realiza lo siguiente. 1. A excepcin del primer arranque, el script rc examina el directorio especfico del nivel de ejecucin al que se est entrando. Cualquier enlace que inicie K (para mat ar ), rc comprobar si ese servicio se est ejecutando. Si se est ejecutando, el script de servicios asociado se llama con el argumento stop. 2. El script rc examina de nuevo el nivel de ejecucin especfico que se ha entrado. Cualquier enlace que inicie S (para St ar t ), rc comprobar si ese servicio se est ejecutando o no, el script de servicio asociado se llama con el argumento start. Como resultado, una vez que init ha completado el cambio de niveles de ejecucin, el estado de todos los servicios debe reflejar el estado de los enlaces simblicos en el directorio del nivel de ejecucin especfico. Todos los servicios asociados con enlaces K se deben detener y todos los servicios asociados con enlaces S se deben iniciar. Para qu sirven los nmeros? Simplemente dan un orden a los servicios cuando se inician o cuando se detienen, (no sirve de mucho iniciar el servidor de red (httpd) antes de que se haya configurado la red (network)). Al reordenar los enlaces dentro de directorios especficos del nivel de ejecucin, los administradores pueden cambiar la configuracin predeterminada de su mquina. Por ejemplo, el servicio samba est actualmente inhabilitado por defecto en el nivel de ejecucin 3. Un administrador podra hacer que el servicio se inicie por defecto en el nivel de ejecucin 3 al escoger de una manera algo arbitraria un nmero de inicio y mover el enlace simblico. Este tipo de alteracin de enlaces "a mano" podran hacer el trabajo, pero hay una forma ms elegante con el comando chkconfig. El comando chkconfig existe para ayudar a los administradores a configurar el nivel de ejecucin para servicios. Cuando se llama con --list, el comando chkconfig mostrar todos los servicios conocidos y el estado actual de los siete niveles de ejecucin. (Al final de la lista, chkconfig cambia e indica el estado de los servicios de red controlados xinetd lo cual es un simple encendido o apagado. La configuracin de servicios relacionados con xinetd va ms all del objetivo de este curso y estas entradas no se tienen en cuenta). Cuando se llama --list con un argumento, slo se muestra la configuracin del servicio nombrado. Cuando se llama con dos argumentos, el primer argumento debe ser el nombre de un servicio y el [root@station root]# cd /etc/rc.d/rc3.d/ [root@station rc3.d]# mv K35smb S95smb [root@station rc3.d]# chkconfig --list kdcr ot at e 0: of f 1: of f 2: of f 3: of f 4: of f 5: of f 6: of f nt pd 0: of f 1: of f 2: of f 3: of f 4: of f 5: of f 6: of f sysl og 0: of f 1: of f 2: of f 3: on 4: on 5: on 6: of f net f s 0: of f 1: of f 2: of f 3: of f 4: of f 5: of f 6: of f net wor k 0: of f 1: of f 2: of f 3: on 4: on 5: on 6: of f r andom 0: of f 1: of f 2: of f 3: on 4: on 5: on 6: of f . . . [root@station rc3.d]# chkconfig --list smb smb 0:off 1:off 2:off 3:off 4:off 5:off 6:off segundo argumento puede ser on , off o reset. Para los niveles de ejecucin 3, 4 y 5, chkconfig actualizar los enlaces simblicos correctamente. A continuacin, el administrador examina primero el estado del enlace pertinente en el directorio / et c/ r c. d/ r c3. d. Luego, con el comandochkconfig, habilita el servicio smb para niveles de ejecucin 3, 4 y 5 y reexamina el estado del enlace. El comando chkconfig manej el "cambio" del enlace simblico para el administrador. Adems, el servicio smb est inhabilitado en la siguiente secuencia. Cada servicio trae consigo su propio concepto de lo que debe ser su estado predeterminado. El servicio de red, por ejemplo, no est habilitado "por defecto" para los niveles de ejecucin 2, 3, 4 y 5. En contraste, la mayora de los servicios de red, tales como los servicios httpd osmb, estn apagados "por defecto" para todos los niveles de ejecucin. El comando reset se puede utilizar para restablecer los estados del servicio a su configuracin "por defecto". Configuracin local de inicio Nuestra discusin sobre el proceso de arranque de Red Hat Enterprise Linux ya casi est completa. Nuestro ltimo tema tratar sobre cmo personalizar el proceso de inicio y especficamente el script / et c/ r c. d/ r c. l ocal . Al listar todas las instancias de la palabra local desde los directorios especficos de niveles de ejecucin podemos deducir la funcin del script rc.local. [root@station rc3.d]# pwd / et c/ r c. d/ r c3. d [root@station rc3.d]# ls *smb* K35smb [root@station rc3.d]# chkconfig smb on [root@station rc3.d]# chkconfig --list smb smb 0: of f 1: of f 2: on 3: on 4: on 5: on 6: of f [root@station rc3.d]# ls *smb* S91smb [root@station rc3.d]# chkconfig smb off [root@station rc3.d]# chkconfig --list smb smb 0: of f 1: of f 2: of f 3: of f 4: of f 5: of f 6: of f [root@station rc3.d]# ls *smb* K35smb [root@station rc3.d]# chkconfig smb reset [root@station rc3.d]# chkconfig --list smb smb 0: of f 1: of f 2: of f 3: of f 4: of f 5: of f 6: of f [Note] Observar ms all El comando chkconfig tambin permitir a los administradores configurar los estados de niveles de ejecucin especificados. En la prctica, el nivel de ejecucin predeterminado de una mquina es casi siempre 3 o 5 por lo tanto los comandos on y off sern suficientes. Consulte la pgina chkconfig(8) del manual para mayor informacin. Tambin, observe que chkconfig tiene algn conocimiento incorporado en ste. Por ejemplo, sabe que el nmero de inicio para el servicio smb es 91 y el nmero para matar es el 35. De nuevo, la pgina de manual le dar mayores detalles. El script rc.local se ejecuta cuando se entra a un nivel de ejecucin tras el arranque. Por defecto, el script est vaco. Cualquier requisito particular se puede agregar a este script. Cualquier configuracin que se agregue a rc.local se ejecutar despus de que todos los servicios se hayan iniciado. Esta conducta se puede modificar correctamente, ajustando el nmero de inicio del enlace simblico S99l ocal . Resumen Al cerrar, se ofrece el siguiente consejo. No permita que los detalles presentados en esta leccin oscurezcan la simplicidad de la administracin del servicio de Red Hat Enterprise Linux. Se podra decir que la mayora de las tcnicas de administracin de sistemas ms importantes descritas en este cuaderno estn plasmadas en estos dos comandos: service y chkconfig. Utilice el comando service para manipular directamente un servicio, como se muestra en los siguientes comandos. Utilice chkconfig para establecer el estado perdeterminado de un servicio tras el arranque, como en los siguientes comandos. Despus de la instalacin del software de un nuevo servicio, suelen usarse los dos comandos en conjunto para iniciar el servicio de inmediato y por defecto tras un reinicio posterior. [root@station rc.d]# ls -l /etc/rc.d/rc?.d/*local* l r wxr wxr wx 1 r oot r oot 11 Apr 1 2003 / et c/ r c. d/ r c2. d/ S99l ocal - > . . / r c. l ocal l r wxr wxr wx 1 r oot r oot 11 Apr 1 2003 / et c/ r c. d/ r c3. d/ S99l ocal - > . . / r c. l ocal l r wxr wxr wx 1 r oot r oot 11 Apr 1 2003 / et c/ r c. d/ r c4. d/ S99l ocal - > . . / r c. l ocal l r wxr wxr wx 1 r oot r oot 11 Apr 1 2003 / et c/ r c. d/ r c5. d/ S99l ocal - > . . / r c. l ocal [root@station rc.d]# service vsftpd start St ar t i ng vsf t pd f or vsf t pd: [ OK ] [root@station rc.d]# service vsftpd stop Shut t i ng down vsf t pd: [ OK ] [root@station rc.d]# service vsftpd status vsf t pd i s st opped [root@station rc.d]# chkconfig vsftpd on [root@station rc.d]# chkconfig vsftpd off [root@station rc.d]# chkconfig --list vsftpd vsf t pd 0: of f 1: of f 2: of f 3: of f 4: of f 5: of f 6: of f [root@station rc.d]# service smb start St ar t i ng SMB ser vi ces: [ OK ] St ar t i ng NMB ser vi ces: [ OK ] [root@station rc.d]# chkconfig smb on System Initialization and Services Ejercicios en lnea Specification 1. Asuma que no anticipa futuros cambios al hardware de su mquina y que deseara disminuir su tiempo de inicio de la mquina. Cambie la configuracin del nivel de ejecucin para el servicio kudzu para que est desactivado para todos los niveles de ejecucin. 2. De inmediato desactive el servicio portmap (pero no cambie sus niveles de ejecucin predeterminados). 3. De modo manual desactive el servicio rhnsd para nivel de ejecucin 4, renombrando el enlace simblico K01r hnsd. Resultados A title Question 1
Limpieza Restaurar los servicios kudzu, portmap y rhnsd a su configuracin predeterminada. [Warning] Lab Exercise Objetivo: Administrar de modo efectivo los servicios de Red Hat Enterprise Linux. Tiempo estimado: 15 minutos. 1. Una configuracin de nivel de ejecucin que desactive el servicio kudzu para todos los niveles de ejecucin. 2. Un servicio portmap que no est actualmente en ejecucin. 3. Una configuracin de nivel de ejecucin que desactive el servicio rhnsd para el nivel de ejecucin 4 con un "nmero para parar " de 01. grade System Initialization and Services Resolucin de problemas en la secuencia de arranque Conceptos clave Al observar el flujo de mensajes de arranque, los administradores pueden determinar la naturaleza del error de configuracin de una mquina. Al agregar un 1 a la lnea de comandos del kernel, se puede iniciar una mquina en un estado en que el sistema de archivos es ensamblado, pero no se han iniciado servicios. Al agregar un init=/bin/sh a la lnea de comandos del kernel, se puede arrancar una mquina en un estado donde hay una shell interactiva, pero no se ha hecho referencia a archivos de configuracin. System Initialization and Services Discusin La aplicacin grfica de servicios En la leccin anterior se presentaron los comandos services y chkconfig como la tcnica preferida para administrar servicios de Red Hat Enterprise Linux. Tambin existe una utilidad grfica, a la cual se puede acceder desde el men principal como configuracin del sistema:configuracin de servidor:servicios, o desde la lnea de comandos como system-config- services. Figure 1. Utilidad de configuracin del servicio grfico
La utilidad grfica modifica un nivel de ejecucin a la vez y el nivel de ejecucin actual se puede seleccionar desde el men nivel de ejecucin. Los botones iniciar, detener y reiniciar realizan funciones anlogas a service, mientras que las casillas de verificacin se utilizan para establecer la conducta predeterminada del nivel de ejecucin (de forma similar a chkconfig). Una corta descripcin del servicio y su estado actual se proporciona en los paneles de texto. Administracin de consolas virtuales Las consolas virtuales fueron mencionadas en una leccin anterior, por lo tanto aprovechamos esta oportunidad para recoger informacin acerca de las consolas virtuales en un solo lugar. Debido a que el proceso init inicia 6 gettys para cada una de las primeras 6 consolas virtuales, la gente generalmente dice que Linux "tiene" 6 consolas virtuales. Usualmente, Linux proporciona 12 consolas virtuales y algunas veces ms. Las 6 consolas virtuales que no permiten inicio de sesin se pueden utilizar para ejecutar servidores X y visualizar la salidas de otros comandos. La consola n se puede acceder a travs del nodo de dispositivo /dev/ttyn. Como ejemplo, la siguiente lnea de comandos hara que la dcima la consola virtual mostrara constantemente las ltimas lneas del archivo / var / l og/ messages. Igual que las primeras 6 consolas virtuales, las consolas ms altas se pueden ver con la secuencia de comandos ALT-Fn, donde cada tecla de funcin asigna el nmero correspondiente de la consola virtual n. Al salir del entorno grfico X, la secuencia de teclas ALT-Fn parece ser demasiado comn, por lo tanto se necesita agregar CONTROL. Si tiene problemas para recordar la diferencia, CONTROL-ALT-Fn siempre funcionar. El siguiente cuadro presenta las secuencias de teclas ms utilizadas para administrar consolas virtuales. Table 1. Secuencias de teclas para consolas virtuales Anlisis de la secuencia de arranque Algunas veces, las mquinas pueden estar desconfiguradas al punto que pueden presentar problemas en el arranque. Reconocer en qu momento del proceso de arranque se presenta el problema puede ayudar en el diagnstico. Por consiguiente, los administradores del sistema de Red Hat Enterprise Linux deben ser capaces de reconocer diversas fases del proceso de inicio del flujo de mensajes ingresados tras el arranque. Empezando con Red Hat Enterprise Linux 4, el determinar problemas en el tiempo de arranque es un poco dificil ya que los parmetros de tiempo de inicio del kernel quiet y rhgb estn predeterminados. Si su sistema presenta problemas en el arranque, se deben suprimir esos parmetros de la lnea de comandos del kernel (ya sea editando / et c/ gr ub. conf , o probablemente omitiendo la lnea de comandos del kernel en el arranque con GRUB). Aqu reproducimos los componentes clave de una muestra de secuencia de arranque (asumiendo que no estn los parmetros de arranque del kernel quiet ni rhdb) e identificamos algunas de las fases importantes. Comencemos por el gestor de arranque GRUB. Si es rpido, podemos atajar un mensaje similar al siguiente cuando BIOS pase el control a GRUB. Rpidamente, el mensaje se reemplaza con el men de aplicacin de la etapa 2 de GRUB. Cuando un elemento del men se ha seleccionado, aparece en pantalla lo siguiente. [root@station root]# tail -f /var/log/messages > /dev/tty10 & Secuencia de teclas Uso ALT-Fn Se desplaza a la consola virtual nmero n. CONTROL-ALT-Fn Se desplaza a la consola virtual nmero n dentro de un entorno X. ALT-FLECHAIZQUIERDA, ALT- FLECHADERECHA Se desplaza a la consola vecina. MAYSCULAS-PGINA-ARRIBA, MAYSCULAS-PGINA-ABAJO Se desplaza por el historial de la consola virtual, (el historial se pierde cuando se cambia la consola). Et apa 2 de l a car ga de GRUB Otra vez, debe ser rpido. Es muy probable, que el nico momento en que pueda atajar esta informacin es si algo saliera mal (por ejemplo si GRUB no pudiera localizar el kernel o no pudiera localizar el disco RAM), porque los mensajes se remplazan rpidamente con mensajes de inicio del kernel mientras carga. Cortamos la mayora de los mensajes del kernel, (los interesados pueden hojearlos en el archivo / var / l og/ dmesg). Volvemos a cuando el kernel est montando su disco RAM inicial, montando la particin raz e iniciando el proceso init. En este punto, init inicia y se ejecuta el script rc.sysinit. El script calla al kernel rpidamente y comienza una secuencia de inicio ms representativa, cargando una fuente por defecto y luego procediendo a inicializar el sistema de archivos. En este punto, se presenta un evento importante en la vida del sistema de archivos: la particin raz ahora est montada como de lectura y escritura. Boot i ng ' Red Hat Li nux ( 2. 6. 9- 5. EL) ' r oot ( hd0, 0) Fi l esyst emt ype i s ext 2f s, par t i t i on t ype 0x83 ker nel / vml i nuz- 2. 6. 9- 5. EL r o r oot =LABEL=/ r hgb qui et [ Li nux- bzI mage, set up=0x1400, si ze=0x113738] i ni t r d / i ni t r d- 2. 6. 9- 5. EL. i mg [ Li nux- i ni t r d @0x3cb000, 0x24881 byt es] Li nux ver si on 2. 6. 9- 5. EL ( bhcompi l e@bugs. devel . r edhat . com) ( gcc ver si on 3. 2. 3 2 0030502 ( Red Hat Li nux 3. 2. 3- 26) ) #1 Thu J an 8 17: 03: 13 EST 2004 BI OS- pr ovi ded physi cal RAM map: BI OS- e820: 0000000000000000 - 000000000009f c00 ( usabl e) BI OS- e820: 000000000009f c00 - 00000000000a0000 ( r eser ved) BI OS- e820: 00000000000f 0000 - 0000000000100000 ( r eser ved) . . . . . . RAMDI SK: Compr essed i mage f ound at bl ock 0 Fr eei ng i ni t r d memor y: 146k f r eed VFS: Mount ed r oot ( ext 2 f i l esyst em) . J our nal l ed Bl ock Devi ce dr i ver l oaded kj our nal d st ar t i ng. Commi t i nt er val 5 seconds EXT3- f s: mount ed f i l esyst emwi t h or der ed dat a mode. kj our nal d st ar t i ng. Commi t i nt er val 5 seconds Fr eei ng unused ker nel memor y: 132k f r eed I NI T: ver si on 2. 84 boot i ng Set t i ng def aul t f ont ( l at ar cyr heb- sun16) : [ OK ]
Wel come t o Red Hat Li nux Pr ess ' I ' t o ent er i nt er act i ve st ar t up. Mount i ng pr oc f i l esyst em: [ OK ] Unmount i ng i ni t r d: [ OK ] Conf i gur i ng ker nel par amet er s: [ OK ] Set t i ng cl ock ( l ocal t i me) : Fr i Nov 14 14: 32: 45 EST 2003 [ OK ] Loadi ng def aul t keymap ( us) : [ OK ] Set t i ng host name dhcp63- 237. r du. r edhat . com: [ OK ] I ni t i al i zi ng USB cont r ol l er ( usb- uhci ) : [ OK ] Mount i ng USB f i l esyst em: [ OK ] I ni t i al i zi ng USB HI D i nt er f ace: [ OK ] I ni t i al i zi ng USB keyboar d: [ OK ] I ni t i al i zi ng USB mouse: [ OK ] Checki ng r oot f i l esyst em / : cl ean, 92214/ 393600 f i l es, 463138/ 787177 bl ocks [ OK ] Remount i ng r oot f i l esyst emi n r ead- wr i t e mode: [ OK ]
Se produjo otro evento importante en el sistema de archivos: ahora todas las particiones locales se han montado de lectura y escritura. En este punto, rc.sysinit termina e init comienza la configuracin especfica del nivel de ejecucin. Las siguientes lneas reflejan, uno por uno, los diversos scripts de servicio del inicio del directorio / et c/ r c. d/ i ni t . d. Ahora las interfaces de red deben estar activas y se pueden iniciar los servicios de red relacionados. Qu "otros sistemas de archivos" faltan por montarse? Los sistemas de archivos relacionados, tales como los recursos compartidos NFS o SMB. Los mensajes de inicio deberan desaparecer ahora, para ser remplazados por una consola virtual de texto con un intrprete de comandos de inicio de sesin (para el nivel de ejecucin 3) o una pantalla grfica de inicio (para el nivel de ejecucin 5). Act i vat i ng swap par t i t i ons: [ OK ] Fi ndi ng modul e dependenci es: [ OK ] Checki ng f i l esyst ems / boot : cl ean, 41/ 32128 f i l es, 9270/ 128488 bl ocks / home: cl ean, 520/ 130560 f i l es, 30874/ 522081 bl ocks
Mount i ng l ocal f i l esyst ems: [ OK ]
Enabl i ng l ocal f i l esyst emquot as: [ OK ] Enabl i ng swap space: [ OK ] I NI T: Ent er i ng r unl evel 5 Ent er i ng non- i nt er act i ve st ar t up Checki ng f or new har dwar e [ OK ] Updat i ng / et c/ f st ab [ OK ] Set t i ng net wor k par amet er s: [ OK ] Br i ngi ng up l oopback i nt er f ace: [ OK ] Br i ngi ng up i nt er f ace et h0: [ OK ] St ar t i ng syst eml ogger : [ OK ] St ar t i ng ker nel l ogger : [ OK ] St ar t i ng por t mapper : [ OK ] St ar t i ng NFS st at d: [ OK ] St ar t i ng keyt abl e: [ OK ] I ni t i al i zi ng r andomnumber gener at or : [ OK ] St ar t i ng pcmci a: [ OK ] Mount i ng ot her f i l esyst ems: [ OK ] St ar t i ng up APM daemon: [ OK ] St ar t i ng aut omount : No Mount poi nt s Def i ned [ OK ] St ar t i ng sshd: [ OK ] St ar t i ng xi net d: [ OK ] St ar t i ng sendmai l : [ OK ] St ar t i ng sm- cl i ent : [ OK ] St ar t i ng consol e mouse ser vi ces: [ OK ] St ar t i ng cr ond: [ OK ] St ar t i ng cups: [ OK ] St ar t i ng xf s: [ OK ] St ar t i ng anacr on: [ OK ] St ar t i ng at d: [ OK ] St ar t i ng f i r st boot : [ OK ] St ar t i ng Red Hat Net wor k Daemon: [ OK ] Cuando todo sale bien, estos mensajes se pueden ignorar. No obstante, cuando la mquina est desconfigurada, el observar cuidadosamente en qu parte del proceso de arranque se inici el problema, puede ayudar bastante en el diagnstico del problema. Modificacin de la secuencia de arranque con la lnea de comandos del kernel En la leccin sobre el gestor de arranque GRUB, mencionamos la funcin de la lnea de comandos del kernel y cmo modificar la lnea de comandos mientras se arranca la mquina. Ahora que hemos descrito la secuencia de arranque de Red Hat Enterprise, volvamos al tema. Tras el inicio, el kernel examina la lnea de comandos del kernel y responde correctamente a los argumentos reconocidos. Los argumentos que el kernel no reconoce, los pasa al primer proceso. Si el argumento desconocido tiene la forma nombre=valor, se pasa como variable de entorno. De lo contrario, el argumento desconocido se pasa como un argumento para el primer proceso. Algunas veces, los sistemas se desconfiguran por lo tanto no pueden arrancar correctamente. En tales situaciones, la lnea de comandos del kernel se puede utilizar para arrancar la mquina a un nivel reducido, permitindole al administrador del sistema localizar y solucionar los problemas. Los siguientes dos escenarios se pueden utilizar para recuperar mquinas desconfiguradas en la mayora de los casos. Arranque en el nivel de ejecucin 1 Cuando la desconfiguracin se presenta en las ltimas etapas del proceso de arranque, tales como con la configuracin de red o la autenticacin de usuario, el sistema se puede iniciar en un estado muy til al evitar el nivel de ejecucin predeterminado y arrancando directamente en un modo de monousuario. Esto se lleva a cabo al agregar un 1 a la lnea de comandos del kernel. El kernel, al no reconocer el argumento 1, pasa el argumento al proceso init. Qu sucede cuando el init es llamado con un argumento de 1? Este arranca en el nivel de ejecucin 1. El proceso init iniciar, el script rc.sysinit se ejecutar y despus de entrar al nivel de ejecucin 1, el usuario pasar a la shell de root. Debido a que el script rc.sysinit se ejecut, el sistema de archivos debera reconstruirse totalmente. Desde aqu se puede estudiar el sistema, y esperemos que el problema se pueda solucionar. Cuando se haya identificado el problema y solucionado, el proceso de arranque puede continuar con slo desplazarse a un nivel de ejecucin ms alto por ejemplo con init 5. Este truco es muy til para recuperar las mquinas para las que se ha olvidado la contrasea de root. Evitar el /sbin/init A veces, sin embargo, se pueden presentar problemas tempranos en el proceso de arranque. Por ejemplo, qu sucedera si el archivo / et c/ f st ab, o el archivo/ et c/ i ni t t ab o el script / et c/ r c. d/ r c. sysi ni t se destruyen? En dichos casos, arrancar en el nivel de ejecucin 1 no es la solucin. Los problemas se presentan incluso antes de que init considere los niveles de ejecucin. En dichas situaciones, se le puede pedir al kernel que evite /sbin/init y ejecute una shell interactiva como su proceso inicial. Esto se realiza al agregar el argumento init=/bin/sh a la lnea de comandos del kernel. El parmetro de arranque init= le pide al kernel que ejecute un comando diferente a / sbi n/ i ni t como el proceso de inicio y el kernel se comporta como corresponde. Qu sucede despus del arranque? En este momento en el proceso de inicio del kernel se iniciara init, pero no lo hace, en su lugar, se enva al usuario a una shell interactiva. Recuerde el estado del sistema de archivos: nicamente se monta la particin raz de slo lectura. Una reaccin natural sera tratar de remontar la particin raz como de lectura y escritura. Sin montar / pr oc, ni siquiera el comando mount funcionar correctamente! Primero, se debera montar el sistema de archivos / pr oc, luego se puede montar la particin raz de lectura y escritura. Si todo sale bien, el siguiente comando puede ser un mount -a. En este punto, el usuario debera estar en un entorno bastante adecuado para localizar y solucionar problemas. Una vez se hayan identificado los problemas y solucionado, cmo se puede salir el usuario de este entorno mnimo? Una opcin es el comando exit. En este momento, el teclado de LED del usuario estar alumbrndose (una de las caractersticias del kernel de Linux que est bloqueado) y de otra manera el usuario est muerto. Qu sucedi? El proceso interactivo / bi n/ sh era el Id del proceso nmero 1 y al kernel no le gusta que muera el proceso nmero 1. Una solucin ms apropiada es la siguiente. Primero, pare los procesos (diferentes a su shell). Luego deconstruya su sistema de archivos revocando el proceso anterior. En este punto, el sistema se encuentra en el momento en que el kernel habra quedado : slo un proceso se est ejecutando y el sistema de archivos est montado de slo lectura. Haga que su shell se convierta en el proceso /init "ejecutando" / sbi n/ i ni t . init-2.05b# init-2.05b# mount -o remount,rw / mount : coul d not open / pr oc/ par t i t i ons, so UUI D and LABEL conver si on cannot be done.
mount : no such par t i t i on f ound init-2.05b# init-2.05b# mount /proc init-2.05b# mount -o remount,rw / EXT3 FS 2. 4- 0. 9. 19, 19 August 2002 on i de0( 3, 6) , i nt er nal j our nal init-2.05b# mount -a kj our nal d st ar t i ng. Commi t i nt er val 5 seconds EXT3 FS 2. 4- 0. 9. 19, 19 August 2002 on i de0( 3, 7) , i nt er nal j our nal EXT3- f s: mount ed f i l esyst emwi t h or der ed dat a mode. init-2.05b# init-2.05b# exit exi t Ker nel Pani c: At t empt ed t o ki l l i ni t ! init-2.05b# umount -a init-2.05b# mount -o remount,ro / init-2.05b# umount /proc init-2.05b# Su sistema debera iniciar en limpio como si nada hubiera pasado. La bsqueda del kernel de un proceso inicial Si por alguna razn el kernel no encuentra o ejecuta / sbi n/ i ni t , el kernel busca / bi n/ sh y otros ejecutables predefinidos. Por ltimo, si el kernel agota su lista de candidatos sin encontrar un proceso inicial ejecutable, muere con el siguiente mensaje. init-2.05b# exec /sbin/init I NI T: ver si on 2. 84 boot i ng Set t i ng def aul t f ont ( l at ar cyr heb- sun16) : [ OK ]
Wel come t o Red Hat Li nux Pr ess ' I ' t o ent er i nt er act i ve st ar t up.
. . . Ker nel pani c. No i ni t f ound. Tr y passi ng i ni t = opt i on t o ker nel . System Initialization and Services Ejercicios en lnea Specification 1. Por precaucin, copie su archivo / et c/ f st ab en el archivo / et c/ f st ab. pr el ab4. 5. Edite su archivo original y quite el comentario de la lnea definiendo el punto de montaje para la particin raz. 2. Reinicie su mquina. En el intrprete de comandos de arranque GRUB, agregue el parmetro init=/bin/sh a la lnea de comandos del kernel. 3. Su sistema contina el arranque, pero rpidamente lo enva a la shell de mantenimiento. En la shell de mantenimiento, realice los siguientes pasos. a. Monte el sistema de archivos / pr oc. b. Vuelva a montar la particin raz de lectura y escritura. c. Edite el archivo / et c/ f st ab y no comente la lnea que retir al comienzo del laboratorio. d. Vuelva a montar la particin raz de slo lectura. e. Desmonte el sistema de archivos / pr oc. f. Remplace su shell con el proceso init, pidindole ainit que traiga su mquina al nivel de ejecucin 1 con la siguiente lnea de comandos. 4. Su proceso de arranque debera continuar con init configurando la mquina al nivel de ejecucin 1. Cuando haya terminado init abrir otra shell, esta vez con el sistema de archivos totalmente ensamblado. Desde esta shell, entre al nivel de ejecucin 5 con la lnea de comandos init 5. 5. En este punto, su mquina debe haber arrancado completamente. Inicie sesin y califique su ejercicio. Resultados A title Question 1 [Warning] Lab Exercise Objetivo: Ser competente al sobreescribir la secuencia de arranque predeterminada. Estimated Time: 30 mins. init-2.05b# exec /sbin/init 1
1. Un / pr oc/ cmdl i ne que incluya el argumento i ni t =/ bi n/ sh. 2. El comando runlevel debera entregar su nivel de ejecucin actual como nivel de ejecucin 5 y su nivel de ejecucin anterior como nivel de ejecucin 1. grade