miércoles, 13 de junio de 2007

Agregar programas a la carga de Linux

El mes pasado estaba revisando el CD de instalación de un UPS que tengo, y entre sus directorios encontré uno con nombre Linux. Inmediatamente me alegré del hallazgo, puesto que hasta el momento el UPS y Linux no funcionaban de manera conjunta al haber un fallo de AC. La instalación del pequeño programa no era nada del otro mundo, solo tení­a que ejecutar un binario desde Shell y ya todo quedaba instalado. Terminada la instalación, había que ingresar al directorio donde se instaló el programa y ejecutarlo con privilegios de administrador (root), ¡pero! ¿tení­a que estar haciendo eso todo el tiempo? ¿no sería mejor que el programa se ejecutara en el arranque del Linux?. Inmediatamente coloqué un enlace a la aplicación en la carga de KDE, pero no funcionó.

Después de intentar muchas configuraciones para arrancar el programa automáticamente; creí­ conveniente que esto serí­a más apropiado hacerlo en el arranque del mismo Linux... como no sabí­a hacerlo, me dispuse a hechar mano de Google para encontrar una respuesta y es de esto que hablaré hoy.

Agregando programas al runlevel
Yo utilizo Mandriva Linux, no se si con las otras distribuciones será igual, pero creo que con los pasos que encontré, será fácil llegar al objetivo en otra distribución:

1-Primero debemos informarnos cuál es el runlevel con el que inicia el sistema. Comúnmente es el 5, este lo encuentras en el archivo /etc/inittab en la lí­nea:
id:5:initdefault:

2-Hecho lo anterior, ahora habrá que crear un archivo de texto que contenga el comando que queremos ejecutar al inicio del sistema. En este caso crearemos un archivo script con el nombre mi_script, el cual ejecutará un binario que se encuentra en /usr/bin con el seudónimo binariox. El programa que tú quieres ejecutar puede estár en cualquier directorio, solo debes asegurarte de poner la ruta correcta a ese binario para que tu configuración resulte:
#!/bin/bash
/usr/bin/binariox [opciones]

...lo guardas y lo mueves al directorio /etc/init.d/

...le damos permisos de ejecución:
# chmod +x /etc/init.d/mi_script

En mi caso, no he tenido que crear este script puesto que ya vení­a en el paquete de instalación y solo tocó moverlo a /etc/init.d/. Las lí­neas de mi script son:
# BEGIN: Startup for UPS Manager
cd /etc/ups_manager
./ups_manager start &
# END: Startup for UPS Manager

...te las muestro para que las utilices como un segundo ejemplo.

4-Como ya tenemos entendido el runlevel que usa nuestro sistema en su inicio, deberemos crear un enlace simbólico hacia el script que alojamos en init.d desde el directorio donde están el grupo de programas que se cargan en ese nivel de ejecución. En mi caso, mi sistema inicia con el rulevel 5 y carga las aplicaciones del grupo /etc/rc5.d/. Crearemos pues, el enlace de este modo:
# ln -s /etc/init.d/mi_script /etc/rc5.d/S98mi_script

...todo en una sola lí­nea. Reinicias el sistema y en la carga veras listada la carga del script que enlazaste, después de la lí­nea INIT: Entering runlevel: x. También puedes comprobar si el script funciona iniciandolo así:
# /etc/rc5.d/S98mi_script start

Si revisas el directorio /etc/rc5.d, veras que todos los enlaces que ahí­ se encuentran, inician con S más un número. Al iniciar cada enlace, el runlevel lo hará en orden numérico de menor a mayor. En /etc/rc5.d tengo tres enlaces con el mismo número, así­ que no creo que haya problemas si existe otro con el mismo nivel.

Estas instrucciones las encontré en un foro, buscando con ayuda de google...Saludos.

Fuente: Quiero cargar un programa al inicio del sistema