pino72
Posts: 4
Joined: Mon Nov 28, 2016 11:44 pm

Arrancar aplicación gráfica al iniciar Raspbian

Mon Nov 28, 2016 11:57 pm

Buenas noches, llevo varios días intentando iniciar una aplicación gráfica desarrollada con lazarus (free pascal) en el arranque del sistema operativo Raspbian y no consigo que funcione. Debe ejecutarse con privilegios root, ya que utiliza la librería wiringpi y ésta los necesita. En modo gráfico y por consola lo ejecuto sin problemas cuando me conecto como root (root) "sudo vncserver", pero al utilizar el script creado para arrancar desde init.d , aunque coloque sudo y la ruta absoluta al ejecutable no lo aparece nada.

Espero puedan darme alguna pista ...

Gracias!

56kbps
Posts: 118
Joined: Wed Apr 13, 2016 6:22 am

Re: Arrancar aplicación gráfica al iniciar Raspbian

Tue Nov 29, 2016 5:46 am

¿Cuando dices "arrancar desde init.d" a qué te refieres exactamente?

Hasta donde yo sé, ejecutar un comando vía "sudo" requiere la contraseña de un usuario que esté en el grupo "sudo". Además, si se quiere ejecutar en modo gráfico, no funcionará si se intenta de forma automática (porque claro, requiere introducir manualmente una contraseña), así mismo tampoco funcionará si no se ejecuta desde un entorno gráfico (métodos como /etc/rc.local, init.d, cron... etc, no lo serían).

Insisto, hasta donde donde yo sé o pueda imaginarme. Porque también se me ocurre intentar algo con la variable $DISPLAY, que igual suena la flauta, (me parecería un invento un poco guarro y propenso a errores).

Aporto esta otra idea más ortodoxa, a ver que tal va:

Ejecuta como root el siguiente comando:

Code: Select all

visudo
Y añade al final lo siguiente, (obviamente cambia los valores de usuario y ruta):

Code: Select all

tu-usuario-no-root ALL=(ALL) NOPASSWD: /la/ruta/absoluta/hacia/tu/app/grafica
A partir de ahora deberías poder ejecutar esa aplicación con "sudo /la/ruta/absoluta..." y no te pedirá contraseña. Ahora toca ejecutar ese comando al iniciar tu sesión gráfica. ¿Cómo? Ni idea, yo uso Raspian Lite, que no tiene entorno gráfico así que no puedo orientarte exactamente. Cada entorno gráfico (en el caso de Raspbian es LXDE) tendrá su forma particular, pero toqueteando por ahí debería aparecer algún método para hacerlo.

Por cierto, algo que nunca he probado: xinitrc. Dale una ojeada, a ver si te puede ser útil.

pino72
Posts: 4
Joined: Mon Nov 28, 2016 11:44 pm

Re: Arrancar aplicación gráfica al iniciar Raspbian

Tue Nov 29, 2016 8:09 am

Buenos días, ante todo gracias por responder.

El usuario que inicia el escritorio de manera automática es por defecto "pi", el inicio es automático y no se requiere contraseña para levantar el escritorio LXDE de Raspbian y empezar a utilizar el entorno gráfico, como es normal está incluido en los "sudoers" y desde terminal puede ejecutar cualquier aplicación gráfica sin necesidad de incluir de nuevo el password".

Con respecto a la carpeta init.d, he incluido en ella un script con permisos de ejecución y registrado mediante update-rc para que ejecute la aplicación cuando se carguen todos los módulos (sistema de archivos, redes, etc.) y por defecto en el entorno de ejecución 5 (runlevel 5 - escritorio gráfico).

He probado el script desde consola y funciona perfectamente. De hecho cuando hago reboot , veo como se ejecuta al final de la carga , pero solo aparece el resultado del comando echo inicial "Arrancando aplicación" que tiene el script, (la siguiente linea es la que incluyo abajo y que funciona perfectamente en terminal) acto seguido, aparece el escritorio sin más.
Este es el script de arranque registrado en la carpeta init.d (he comprobado la creación de los enlaces simbólicos).

Code: Select all

 
 ### BEGIN INIT INFO
 # Provides:          Programa
 # Required-Start:    $all
 # Should-Start:      $all
 # Required-Stop:     
 # Should-Stop:      
 # Default-Start:     5
 # Default-Stop:
 # Short-Description: Descripción corta
 # Description:       Descripción larga
 ### END INIT INFO

echo 'Iniciando aplicación'

cd /home/pi/dirProg
sudo /home/pi/dirProg/Programa

No me cabe en la cabeza que algo tan sencillo "a priori" me esté dando tantos quebraderos de cabeza.

Saludos.

56kbps
Posts: 118
Joined: Wed Apr 13, 2016 6:22 am

Re: Arrancar aplicación gráfica al iniciar Raspbian

Tue Nov 29, 2016 9:17 am

Diría que el hecho de estar en el runlevel 5 no implica que se vaya a ejecutar gráficamente, sino que en realidad indica que cuando se inicie el sistema gráficamente entonces se ejecutará tal script, pero no gráficamente. Así que fallará irremediablemente por no estar ejecutándose en un entorno gráfico. Al menos así lo tengo entendido yo.

Esto es como entrar, mediante SSH, a un sistema que se ha iniciado en runlevel 5. Por mucho que se ejecute aplicaciones gráficas no funcionarán porque SSH no es un entorno gráfico, (vale, en el cliente con el rollo X11Forwarding si se puede, pero hablo de mostrarse la aplicación en el servidor, cosa que, como anécdota y no como solución, tal vez podría conseguirse con lo que anteriormente he comentado de la variable $DISPLAY).

No me ha quedado claro una cosa: dices que desde consola se ejecuta perfectamente. Entiendo que desde un terminal de LXDE. Pero con qué usuario, "root" o "pi" via "sudo"? si es desde "pi" vía "sudo"... ¿no te pide contraseña?

En mi opinión, que el script parezca que se ejecuta sin problemas ("Iniciando aplicación") es en realidad una ilusión: el script son ordenes sin relación entre sí que se ejecutan de forma secuencial e independientemente de si la anterior falló o no: echo, cd, sudo... la primera no tiene nada de especial así que no fallará, pero la tercera podría fallar (por los motivos que sean, apuesto por no estar en un contexto gráfico) y no te darás cuenta porque el mensaje del echo ya se ha mostrado, así que pensarás... ¡¿pero si dice que se ha iniciado?!.

pino72
Posts: 4
Joined: Mon Nov 28, 2016 11:44 pm

Re: Arrancar aplicación gráfica al iniciar Raspbian

Tue Nov 29, 2016 10:36 am

Al usuario root no le tengo asignada contraseña.. no sé si es por eso que no la pide.

Con runlevel 5 me aseguro que el entorno de ventanas está listo para su uso ( corrígeme si me equivoco).

Sé que unas lineas pueden fallar y otras no, lo que si tengo claro es que el script que creé se ha empezado a ejecutar, de ahí lo del "echo", lo puse para saber que había entrado a ejecutarlo al iniciar.

Cuando digo en terminal es en LXDE. Coincido contigo que el problema es el entorno gráfico que no está activo antes de ejecutar la aplicación. Voy a trastear el xomando xinitcr, parece que es precisamente para iniciar aplicaciones gráficas con el gestor de ventanas activo.

Si obtengo algún resultado lo publicaré por si algún usuario tiene el mismo problema que yo..

Saludos.

56kbps
Posts: 118
Joined: Wed Apr 13, 2016 6:22 am

Re: Arrancar aplicación gráfica al iniciar Raspbian

Tue Nov 29, 2016 11:29 am

Vale. Ya se porqué "sudo" no pide contraseña para el usuario "pi". El fichero "/etc/sudoers.d/010_pi-nopasswd" hace que no sea necesario. Ese archivo contiene básicamente lo mismo que he dicho en el primer post:

Code: Select all

pi ALL=(ALL) NOPASSWD: ALL
El problema no parece estar aquí. Tema zanjado por mi parte. En cuanto a lo otro tema, no sé si esto te puede ser de ayuda, dale una ojeada a ver.

Suerte!

pino72
Posts: 4
Joined: Mon Nov 28, 2016 11:44 pm

Re: Arrancar aplicación gráfica al iniciar Raspbian

Tue Nov 29, 2016 8:03 pm

Después de varios intentos he logrado iniciar mi aplicación gráfica.

Primero hay que crear en el directorio "/etc/xdg/autostart" un script con extensión tipo <NombreScript>.desktop
Agregamos los parámetros correspondientes a nuestra aplicación.

Code: Select all

[Desktop Entry]
Versión=1.0
Type=Application
Name=<Aplicación>
Comment=<Comentarios>
Path=<Directorio de trabajo de la aplicación>
TryExec=<nombre de la aplicación ejecutable>
Exec=<línea de llamada a la aplicación incluyendo trayectoria>
Icon=<Icono de la aplicación>(ejemplo .. icon.png)
Tras grabar y reiniciar, se ejecuta la aplicación gráfica.

Espero que os sirva de algo ... y gracias al compañero 56kbps por la pista ... :D


lionet
Posts: 2
Joined: Thu Apr 20, 2017 4:14 pm

Re: Arrancar aplicación gráfica al iniciar Raspbian

Thu Apr 20, 2017 4:20 pm

Tambien Necesito lo mismo, si pudieras enviar un ejemplo de arranque completo del aplicacion.desktop se agradeceria,
otra cosa en la ultima version de raspbean cambia la direccion?? o sigue siendo /etc/xdg/autostart/ ??

lionet
Posts: 2
Joined: Thu Apr 20, 2017 4:14 pm

Re: Arrancar aplicación gráfica al iniciar Raspbian

Thu Apr 20, 2017 6:05 pm

Hola Pino72, e tratado de hacerlo como dices y la verdad no me resulta aun nose si porque la ultima version de raspbean pudo haber cambiado la ruta "/etc/xdg/autostart" ??? alguna sugerencia?? o en lo posible subir tu archivo para ver como quedo...

borislenis
Posts: 1
Joined: Wed Mar 04, 2020 2:14 pm

Re: Arrancar aplicación gráfica al iniciar Raspbian

Wed Mar 04, 2020 2:18 pm

Muchas gracias por su guía, a mi me funciono así:

Primero hay que crear en el directorio "/etc/xdg/autostart" un script con extensión tipo <NombreScript>.desktop

1. sudo nano /etc/xdg/autostart/MonitoreoAlarmas.desktop

[Desktop Entry]
Name=Monitoreo de Alarmas
Comment=
Exec=/home/pi/MonitoreoAlarmas/MonitoreoAlarmas
Icon=
Terminal=false
Type=Application

2.//Dar permisos para hacer el script ejecutable
sudo chmod 755 /etc/xdg/autostart/MonitoreoAlarmas.desktop

OscarGom
Posts: 2
Joined: Thu Mar 05, 2020 10:28 am

Re: Arrancar aplicación gráfica al iniciar Raspbian

Thu Mar 05, 2020 10:32 am

Muchas gracias por la información! Me ha ayudado mucho

Return to “Español”