Está en la página 1de 4

13/09/13

Inicio y cierre del sistema - doc.ubuntu-es

Inicio y cierre del sistema


De doc.ubuntu-es

Este artculo necesita ser wikificado en base al manual de estilo de este wiki. Por favor, colabora editndolo conforme a las normas de edicin de este sitio. No elimines este aviso hasta que lo hayas hecho.

Contenido
1 Inicio del sistema 2 Cierre del sistema 3 Intrprete de rdenes 4 Fuente 5 Vase tambin

Inicio del sistema


El arranque de un sistema GNU/Linux consta de las siguientes fases: Ejecucin del gestor de arranque (ej.: LILO o GRUB). Carga y ejecucin del kernel. Ejecucin de init (proceso nmero 1)* Ejecucin de scripts de iniciacin genricos en / e t c / r c S . d . Entrada en el runlevel por defecto: ejecucin de scripts del runlevel en / e t c / r c X . d , donde X el el nmero del runlevel. A grandes rasgos el proceso ocurre as: al conectar o reiniciar el ordenador, la w:BIOS busca en su configuracin el dispositivo de arranque por defecto, el cual suele ser un disco duro, indicado generalmente en la configuracin de la BIOS por C. Entonces carga en memoria el primer sector del dispositivo de arranque y le transfiere el control. Cuando se trata de un disco duro, este primer sector es el w:Master Boot Record (MBR) y contiene, adems del cdigo cargado por la BIOS, la tabla de particiones del disco. El cdigo en el MBR, generalmente, lee en la tabla de particiones cul es la particin activa y carga en memoria el primer sector de la misma, transfirindole el control. En nuestro caso, este sector estar ocupado por un gestor de arranque que nos permitir arrancar GNU/Linux u otro sistema operativo. Opcionalmente, puede instalarse el gestor en el MBR, tomando antes el control. Una vez cargado el gestor de arranque, ste se ejecuta, busca el kernel de Linux en una posicin conocida del disco, carga el kernel en memoria y le cede el control. El kernel se almacena comprimido en disco, por lo que lo
doc.ubuntu-es.org/Inicio_y_cierre_del_sistema 1/4

13/09/13

Inicio y cierre del sistema - doc.ubuntu-es

primero que hace el cdigo del kernel que se ejecuta inicialmente es descomprimir el propio kernel y situarlo en memoria. Entonces se ejecuta realmente el kernel y empieza una lista de comprobaciones y activacin de mdulos internos del mismo Una vez funcionando, el kernel monta el disco principal donde se almacena el sistema operativo (root filesystem y ejecuta el primer proceso: init. La misin de init es ejecutar el resto de procesos del sistema: comprobacin de discos, deteccin/configuracin de hardware adicional, apertura de terminales, servidores, etc. Una vez que el kernel se ha cargado en memoria, ejecuta el programa init, que se convierte en el proceso nmero 1 y se encarga de ejecutar el resto de programas que hacen que el sistema funcione. La operacin de init se configura en el fichero / e t c / i n i t t a b . Empezando en este fichero se puede seguir paso a paso el proceso de arranque (y parada) del sistema. Lo importante a saber aqu es que init no hace demasiado por si mismo, sino que se limita a ejecutar una serie de guiones o scripts que activan ordenadamente los diferentes servicios que hacen funcionar el sistema. En primer lugar se ejecutan por orden alfabtico todos los scripts que se encuentren bajo el directorio / e t c / r c S . dque comiencen por S con start como argumento. Por convenio estos scripts se nombran comenzando por un nmero de dos cifras para establecer el orden adecuado. Cada script tiene una funcin particular, por ejemplo: S10checkroot.sh comprueba el sistema de ficheros. S20adjtimex ajusta el reloj del sistema. S40networking activa los interfaces de red. En realidad, y por convenio, estos scripts no se sitan directamente en / e t c / r c S . d , sino que se guardan en el directorio / e t c / i n i t . dy desde ah se hacen enlaces simblicos a / e t c / r c S . d . De esta forma es ms fcil aadir, eliminar y ordenar los componentes. Las tareas realizadas por los scripts en / e t c / r c S . dson las bsicas para arrancar el sistema. Luego se ejecutan otra serie de scripts correspondientes a un runlevel o nivel de ejecucin. Los runlevels (niveles de ejecucin) son un mecanismo para permitir que el ordenador trabaje con diferentes configuraciones de arranque (diferentes servicios, etc.). Los runlevels se numeran del 0 al 6. El 0 se ejecuta para parar el sistema (halt), el 6 para reiniciar (reboot) y el 1 para arrancar en modo single user, que viene a ser una cofiguracin mnima para realizar tareas de administracin. El resto de los runlevels son para funcionamiento normal. El runlevel por defecto es el 2 (se configura en / e t c / i n i t t a b ), empleando los otros slo en situaciones especiales. En Debian, los runlevels del 2 al 5 se configuran inicialmente de forma idntica. As, el proceso de arranque suele continuar ejecutando los scripts del runlevel correspondiente situados en / e t c / r c X . d , donde X es el nmero del runlevel. La forma de ejecutar estos scripts es anloga al caso anterior, salvo que ahora se ejecutan primero los scripts que comiencen con K con argumento stop y luego los que comienzan con S con argumento start. La idea es que cada script gestione una tarea o servicio. Este servicio se inicia cuando el script se ejecuta con el argumento start y se detiene cuando se usa el argumento stop. De esta forma en cada runlevel puden detenerse los servicios que no se necesiten y activarse aquellos que interese. Este sistema tambin facilita el arranque y parada de servicios, ejecutando estos scripts manualmente con el argumento apropiado. En cualquier momento, el administrador puede hacer que el sistema cambie a otro runlevel ejecutando el comando t e l i n i tcon un argumento numrico indicando el nuevo runlevel. Por ejemplo:
doc.ubuntu-es.org/Inicio_y_cierre_del_sistema 2/4

13/09/13

Inicio y cierre del sistema - doc.ubuntu-es

#t e l i n i t3

En general, no hay que preocuparse por la configuracin del arranque, ya que el sistema de instalacin se ocupa automticamente de actualizar la configuracin en funcin de los paquetes instalados.

Cierre del sistema


Para detener correctamente un sistema Unix hemos de situar el proceso I N I Ten un determinado [[w:runlevel|runlevel, generalmente 0 o 6 (podemos comprobarlo simplemente echando un vistazo a / e t c / i n i t t a b ). Para ello, el sistema ofrece al superusuario varios mandatos que pueden ser invocados desde el shell, y que se suelen encontrar en el directorio / s b i n / , como s h u t d o w n ,h a l to r e b o o t . Tanto h a l t como r e b o o tdetienen el sistema; la diferencia entre ellos es que la segunda orden lo reinicializa. En principio slo vamos a poder invocar estas rdenes cuando nos encontremos en los runlevels 0 o 6; si nos encontramos en otro nivel de operacin habremos de utilizar shutdown para poder asegurar la estabilidad del sistema. Sin embargo, en la mayora de Unices no existen problemas por esta causa, ya que INIT detecta el estado actual del sistema, y si no es alguno de los anteriores, invoca de forma automtica a shutdown con los parmetros adecuados Shutdown (reinicio) va a detener la mquina de una forma ordenada, siguiendo unos pasos definidos. En primer lugar, notifica el hecho a todos los usuarios conectados (mediante wall) y bloquea el proceso de registro (login). Posteriormente invoca a INIT' en un runlevel 0 (para simplemente detener el sistema), 6 (para reinicializarlo) o incluso 1 (monousuario, para realizar tareas administrativas). Entonces NIT ejecuta el script correspondiente (ledo de / e t c / i n i t t a b ), que suele encargarse de eliminar todos los procesos de la mquina, notificar el evento en el fichero de log correspondiente, desmontar los sistemas de ficheros que existan, desactivar el rea de swap (intercambio) y, segn se haya invocado la orden, detener el sistema o reinicializarlo. La forma habitual (que se da en el 90% de los casos, y por supuesto es la que estudiaremos nosotros) de invocar a shutdown es:
s h u t d o w nr / hn o w

Con el parmetro -r hacemos un reboot, y con -h un halt (simplemente detenemos el sistema, sin reinicializar). El parametro "now" puede ser substituido por una hora o puede indicarse el tiempo que deber esperar el sistema para proceder al reinicio/parado del sistema. Algn ejemplo sobre el reinicio del sistema sera:
s h u t d o w nh / r2 0 : 0 0 s h u t d o w nh / r+ 1 0

Intrprete de rdenes
El proceso login (de registro/ingreso) nos asigna un intrprete de mandatos, ledo de nuestra entrada en / e t c / p a s s w d . Ya sabemos que un shell no es ms que un programa del sistema que nos va a permitir relacionarnos con la mquina, introducindole rdenes desde el teclado; es la interfaz de usuario que nos ofrece cualquier sistema operativo. En nuestro sistema Unix podemos tener instalados diversos intrpretes de rdenes; en el archivo / e t c / s h e l l s tenemos los disponibles para cada usuario, incluido el root. Por defecto se asigna el Bourne Again Shell (bash), el ms cmodo, que incluye lo mejor de todos los anteriores intrpretes, como el C-Shell (csh) o el Korn Shell (ksh). El bash incluye rodillo de mandatos, histrico de rdenes (en el archivo . b a s h _ h i s t o r ydel directorio
doc.ubuntu-es.org/Inicio_y_cierre_del_sistema 3/4

13/09/13

Inicio y cierre del sistema - doc.ubuntu-es

$ H O M Ede cada usuario),

uso de tabuladores para completar rdenes, etc. Cualquier intrprete de Unix nos ofrece un entorno de programacin completo con herramientas similares a las de la mayora de lenguajes de programacin secuencial (if, for, while, ...). Tambin nos va a ofrecer una serie de rdenes, denominadas rdenes internas, que no encontramos como archivos ejecutables en el sistema, y que por supuesto no va a ser necesario cargar en memoria para oder ejecutarlas; un ejemplo tpico de este tipo de instrucciones es e x i t : no encontraremos ningn ejecutable en todos los sistemas de ficheros de Unix que se denomine as. En Unix existe el mandato c h s h , que permite a cualquier usuario modificar el shell que el sistema le asigna por defecto (recordemos que este dato est grabado en / e t c / p a s s w d ). En determinados clones, chsh no va a comprobar que el shell sea vlido (esto es, que sea una entrada de /etc/shells). Esto puede suponer un problema: imaginemos que un usuario inexperto cambia su shell de entrada a / b i n / l o g i n ; ser imposible para l volver a entrar al sistema mediante conexin remota hasta que el administrador modifique la informacin de / e t c / p a s s w d . Por tanto, desde hace algn tiempo la mayora de Unix del mercado (y por supuesto tambin GNU/Linux) hacen la comprobacin oportuna. Analizando el funcionamiento de c h s h , vemos que una de las cosas que realiza es modificar el fichero de contraseas para cambiar el shell de entrada de un usuario; por tanto, el archivo est setuidado. Puede ser interesante para nosotros resetear el bit setuid del archivo (c h m o ds ) para as conseguir un mayor nivel de seguridad del sistema, ya que, como veremos ms adelante, es conveniente mantener al mnimo el nmero de archivos "setuidados" en la mquina. Si lo hacemos as y algn usuario quiere cambiar su intrprete de rdenes cada vez que entre al sistema puede incluir en su . p r o f i l euna orden como:
e x e c< n u e v o s h e l l >

De esta forma, sustituye el proceso que ejecuta . p r o f i l e(el shell) por la orden <nuevoshell>, el nuevo intrprete que desea.

Fuente
"Gua de administracin de Debian GNU/Linux" - Jorge Juan Chico <jjchico@imse.cnm.es>, Manuel J. Bellido Daz <bellido@imse.cnm.es> sobre licencia.

Vase tambin
GRUB - Gestor de arranque en Ubuntu. Sys Req/Pet Sis - Cmo cerrar correctamente en caso de cuelgue del sistema. Obtenido de http://doc.ubuntu-es.org/index.php?title=Inicio_y_cierre_del_sistema&oldid=15612 Categoras: Wikificar Administracin del sistema

doc.ubuntu-es.org/Inicio_y_cierre_del_sistema

4/4

También podría gustarte