Niveles de Arranque
Objetivos
Conocer los niveles del sistema, y saber como crear y quitar un servicio.
Software
No es necesario instalar nigun paquete adicional para acceder a los niveles de arranque, como tampoco es necesario hacerlo para agregar o quitar servicios.
Conceptos y comandos
Los pasos del arranque del sistema son: BIOS, gestor de arranque, kernel, proceso init, runlevels (niveles de arranque)
Los niveles de arranque son:
- 0 System Halt
- 1 Single user
- 2 Full multi-user mode (Default)
- 3-5 Same as 2
- 6 System Reboot
Los script que manejan los inicios y detenciones de los servicios están en el directorio /etc/init.d, desde los directorios /etc/rcX.d, donde X representa el nivel de arranque, hay enlaces simbólicos a estos script para iniciar o detener los servicios.
A continuación mostramos un ejemplo de como detener un servicio y como iniciarlo:
K80openvpn -> K detiene el servicio openvpn cuando se ingresa a este nivel, 80 es el orden en el que se ejecutará el script.
S70pppd-dns -> S inicia el servicio pppd-dns cuando se ingresa a este nivel, 70 es el orden en el que se ejecutará el script.
Los siguientes comandos nos muestran en que nivel de arranque nos encontramos y como cambiar el mismo:
runlevel -> nos muestra el nivel en el que estamos, la N quiere decir que no se ha cambiado el nivel desde el inicio del sistema, sino nos muestra el nivel en el que estábamos antes
init 3 -> para cambiar al nivel 3
telinit 3 -> para cambiar al nivel 3
Procedimientos
Agregar un nuevo servicio
Solo se debe agregar un nuevo servicio a la secuencia de inicio si el script existe en /etc/init.d. En este caso el comando para instalar un script en el inicio por defecto es:
#update-rc.d <script> defaults
siendo default el nivel de arranque por defecto. Ver manual de update-rc.d por más opciones para este comando. Se pueden agregar otros scripts a los ya existentes en /etc/init.d, pero hay que mantener el formato de los mismos. Para que cada uno de los scripts pueda ser ejecutado como script de arranque o de parada, estos tienen que admitir los dos parámetros start y stop. Aparte de estos dos parámetros, los scripts son capaces de procesar las opciones restart, reload, force-reload y status. Puede obtener información referente al formato, asignación de nombres y organización de los scripts init en el diseño del LSB así como en las páginas del manual de init, init.d e insserv. Las páginas del manual de startproc y killproc también le serán de gran ayuda. Si desea crear un script init para un programa o servicio (service) propio, puede utilizar el archivo /etc/init.d/skeleton como plantilla. Guarde este archivo bajo un nombre nuevo y edite los nombres de programas o archivos y las rutas. Dado el caso también puede añadir al script nuevos componentes propios que sean necesarios para ejecutar correctamente el comando de inicio.
Quitar un servicio
Un servicio solo podrá ser removido después que el script en /etc/init.d haya sido eliminado. Si es así, el siguiente comando eliminará las referencias
#update-rc.d <script> remove
Mediante el comando service se invocan los script contenidos en /etc/init.d
#service <script> start|stop|restart|reload|status
Verificación
Para verificar si un script fue removido correctamente basta con chequear si se encuentra el mismo en la carpeta /etc/init.d para esto ejecutaremos el comando ls /etc/init.d
Notas Adicionales
El comando shutdown apaga el sistema de forma ordenada, tiene opciones como -r que en vez de apagar el sistema lo reinicia (igual que el comando reboot). Mientras tanto el comando halt detiene directamente el sistema de manera forzosa.
Para cambiar el nivel de arranque por defecto hay que editar el archivo /etc/init/rc-sysinit.conf, y ahí cambiar por ejemplo 2 por 3: env DEFAULT_RUNLEVEL=3
Si se tiene interfaz gráfica se puede usar Boot-Up Manager (BUM), que es un editor gráfico de niveles de ejecución
Referencias
http://www.debianadmin.com/debian-and-ubuntu-linux-run-levels.html
http://www.cez.com.pe/Linux/manual%20suse%20linux%209.1/suselinux-adminguide_es/html/ch12s04.html