Prácticas A.S.O./A.S.O.P. - Boletı́n L02 Arranque y Parada Ejercicios 1. Arranca el ordenador y cuando aparezca el menú del GRUB, entra en modo edición e indica al núcleo que arranque en modo monousuario. Para entrar en modo edición pulsa la tecla “e”, al igual que para editar cualquier lı́nea. Para arrancar en modo monousuario hay que pasar al núcleo el parámetro “single” ó 1. Observa que estás cambiando el comportamiento del núcleo, y por tanto del sistema, sin ninguna comprobación de seguridad. 2. Modo monousuario. Realiza las siguientes comprobaciones. 2.1 Con la orden mount, los sistemas de ficheros que hay montados. 2.2 Con ps aux, los procesos que hay en ejecución. 2.3 Utiliza la orden runlevel para averiguar el nivel en el que está el sistema. 3. Modo multiusuario. Desde modo monousuario ejecuta la orden exit, el sistema continuará el arranque al nivel por defecto. Entra al sistema con el usuario root, y a continuación realiza las siguientes comprobaciones comparando la información obtenida en el ejercicio anterior. 3.1 Sistemas de ficheros montados. (Lo normal es que en los ordenadores del laboratorio no haya diferencia con respecto al modo monousuario, porque sólo hay una partición, y por tanto un único sistema de ficheros). 3.2 Observa los procesos que hay en ejecución. 3.3 Comprueba el nivel del sistema. En este caso, ¿qué nos dice runlevel además del nivel actual? 4. Resuelve las siguientes cuestiones con el gestor de arranque GRUB : 4.1 Asigna la contraseña “practicas” al gestor de arranque, de forma que cuando se desee introducir parámetros al kernel, sea necesario dar esa contraseña. Esto va a solucionar el posible problema de seguridad creado al poder introducir parámetros al núcleo y al GRUB, sin que el sistema pida autenticación. 4.2 Crea una nueva entrada en el arranque, con una nueva etiqueta pero que cargue el mismo núcleo (imagina que es una nueva versión de kernel). Sólo hay que copiar una entrada ya existente y cambiarle la etiqueta asignada. 5. Usando la orden shutdown, reinicia el sistema. 6. Cuando el menú del GRUB aparezca de nuevo, selecciona como opción de arranque la nueva entrada creada, entra en modo edición e indica al núcleo el parámetro “3” para arrancar en este nivel de ejecución. (Ahora es necesario darle la contraseña asignada). 7. Observa que aunque estás en el nivel 3, la principal diferencia con el nivel 5 es el entorno gráfico. En el nivel 5 se lanza de forma automática el entorno gráfico, mientras que en el 3 no. También los demonios lanzados en cada caso pueden ser diferentes. 8. Edita el fichero de configuración del GRUB y quita la contraseña establecida. 9. Respecto al arranque del sistema mediente eventos, resuelve las siguientes cuestiones: 9.1 ¿Qué eventos y en qué orden se ejecutan para el nivel 5? 1 9.2 ¿Qué eventos y en qué orden se ejecutan para el modo monousuario? 9.3 Cuando se apaga el sistema ¿qué eventos y en qué orden se ejecutan? 9.4 Para los niveles 3 y 5, crea un nuevo evento que se ejecute cuando el correspondiente evento rc se haya ejecutado y que realice las siguientes tareas: Usando la opción de introducir guiones shell, compruebe si existe el fichero /tmp/prueba, y, si exite, lo mueva al fichero /tmp/prueba1. A continuación que ejecute la orden mount para comprobar cuántos sistemas de ficheros hay ya montados, guardando la información en el fichero /tmp/prueba. 9.5 Establece que para el nivel de ejecución 3 también se ejecute el entorno gráfico, de la misma manera que se hace para el nivel 5. 10. Establece como nivel de arranque por defecto, el nivel 3, a continuación reinicia el sistema. 11. Con la orden telinit, cambia al nivel de ejecución 5. 12. Ojea el funcionamiento del script /etc/rc.d/rc, que es el encargado de lanzar y matar los demonios de cada nivel. Para cada nivel utiliza los directorios /etc/rc<n>.d, en los que hay una serie de ficheros que serán parados o lanzados al entrar a ese nivel. Los ficheros de estos directorios en realidad son enlaces simbólicos a ficheros del directorio /etc/rc.d/init.d. 12.1 Estudia dicha estructura. 12.2 ¿Qué indican las K’s y S’s? 12.3 ¿En qué orden se ejecutan? 13. Cada fichero script del directorio init.d suele admitir los parámetros start, stop, restart y status y puede ser ejecutado de forma independiente. Por ejemplo, con la instrucción “/etc/rc.d/init.d/crond restart” relanzamos el demonio Cron, y con “/etc/rc.d/init.d/crond status” se conoce su estado. Utilizando este método: 13.1 13.2 13.3 13.4 Comprueba el estado del demonio atd. Si está en ejecución, páralo. Vuelve a comprobar su estado. A continuación lanza el demonio. 14. La orden chkconfig nos permite configurar los demonios a lanzar o terminar para un nivel concreto, ası́ como obtener un listado de los mismos. Resuelve los siguientes ejercicios: 14.1 Consigue un listado del estado de todos los demonios en cada nivel. 14.2 Averigua, mostrando un listado, para qué niveles se lanza el demonio crond y para qué niveles se para. 14.3 Haz que en el nivel de ejecución no 2 no se pueda hacer uso de la impresora, para ello deberás conseguir que no se ejecute su demonio, cups, al entrar a ese nivel. 14.4 Con la herramienta system-config-services haz que para el nivel no 5, no se ejecute el demonio crond. 15. Durante el proceso de arranque, los usuarios no pueden acceder al sistema hasta que no termina. En ocasiones, esto se controla con el fichero /etc/nologin. Resuelve las siguientes cuestiones: 15.1 15.2 15.3 15.4 Crea el fichero /etc/nologin con el texto “Sistema en pruebas, disculpe las molestias”. Intenta entrar al sistema con el usuario alumno, ¿qué sucede? Intenta, en otro terminal, entrar al sistema con el usuario root, ¿te lo permite? ¿Para qué serı́a útil esta posibilidad? 2 15.5 Borra el fichero. 16. Deshabilita la posibilidad de usar la combinación de teclas Ctrl-Alt-Supr. 16.1 Haz que cuando se pulsen dichas teclas aparezca en pantalla un mensaje diciendo: “Enhorabuena: has pulsado las teclas Cltr+Alt+Del” 16.2 Haz que cuando se pulsen, el sistema no realice absolutamente nada. 17. El subsistema de “log” también recoge mensajes del proceso de arranque, aunque de forma conjunta al resto de mensajes del sistema. Visualiza el contenido del fichero /var/log/messages tras un arranque, y observa los nuevos mensajes que han aparecido referenciando a dicho proceso. 18. De los mensajes que se muestran cuando el sistema está arrancando, unos son del núcleo y otros de los scripts del proceso de arranque. ¿Cuáles son los que muestra la orden dmesg? 19. Solucionando problemas. En este ejercicio vamos a estudiar una opción que nos permite arrancar el sistema en caso de que tenga problemas. Imagina que se ha borrado el ejecutable /sbin/init, en este caso el sistema no podrá realizar el proceso de arranque. Una opción es arrancar indicando que el proceso Init es el intérprete de órdenes, /bin/bash, y no el proceso /sbin/init. Para ello introduce el parámetro init=/bin/sh al núcleo cuando arranque el sistema. Comprueba el estado del sistema al iniciar de esta forma y qué cosas puedes o no hacer con el mismo. Ejercicios teóricos 20. Observa la configuración actual de GRUB e identifica las palabras clave de la configuración que determinan los elementos de la “cadena de arranque”: 20.1 20.2 20.3 20.4 ¿Qué ¿Qué ¿Qué ¿Qué imagen del kernel se carga por defecto? imagen initrd se carga? sistema de ficheros raı́z monta el kernel? sistema de ficheros usa GRUB para encontrar el núcleo y el initrd ? 21. Una vez que toma el control, el proceso Init selecciona y ejecuta los scripts de inicio necesarios para llevar el sistema al nivel de ejecución elegido. 21.1 ¿Qué PID tiene el proceso Init? 21.2 ¿Dónde se establece el nivel por defecto? 21.3 Si comentases esa lı́nea y reiniciases, ¿a qué nivel entrarı́a el sistema? (¡Importante! no borres la lı́nea) 22. shutdown versus telinit. Rellena el siguiente cuadro con los prámetros en cada caso: shutdown apagar reiniciar modo monousuario 3 telinit