Inicio automático TightVncServer en Raspberry Pi 2

11

Tengo un Raspberry Pi 2 y he estado siguiendo la publicación en Raspberrypi.org pero Tight VNC Server no se inicia al reiniciar. No parece haber ningún error.

¿Cómo consigo que TightVncServer se inicie en el reinicio de Pi?

sarín
fuente
No puedo publicar una respuesta todavía, pero hay un método simple que conseguí trabajando en mi pi 3 B documentado en adafruit aquí: learn.adafruit.com/…
Steven Evers

Respuestas:

10

Para hacer esto, puede usar un poco de inteligencia de Linux.

Nuestra primera tarea será editar el archivo /etc/rc.local. Este archivo puede contener comandos que se ejecutan al inicio. Si miramos el archivo podemos ver que ya hay pocas entradas allí;

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

exit 0

El primer conjunto de líneas con una marca hash (#) delante de ellos son comentarios. Estos son solo para explicar lo que le está sucediendo a alguien que lee el archivo.

Las líneas de código hacia la parte inferior claramente tienen algo que ver con la dirección IP de la computadora. De hecho, son una secuencia de comandos corta que verifica si Raspberry Pi tiene una dirección IP y, si la tiene, la imprime. Si recuerda, puede ver la dirección IP impresa en la pantalla cuando el Pi se inicia así

My IP address is 10.1.1.8

Raspbian GNU/Linux 7 raspberrypi tty1

raspberrypi login:

¡Este script en rc.local es el código responsable de imprimir la dirección IP!

Agregaremos el siguiente comando en rc.local;

su - pi -c '/usr/bin/tightvncserver :1'

Este comando cambia al usuario para que sea el usuario 'pi' con su - pi. El su significa 'cambiar usuario', el guión (-) asegura que el entorno del usuario pi (como todas sus configuraciones) se usa correctamente y pi es el usuario.

La opción -c declara que la siguiente parte de la línea será el comando que se ejecutará y la parte dentro de las comillas ('/ usr / bin / tightvncserver: 1') es el comando.

El comando en este caso ejecuta el archivo tightvncserver que se encuentra en el directorio / usr / bin y especifica que debemos iniciar la sesión de escritorio 1 (: 1).

Para hacer esto, editaremos el archivo rc.local con el siguiente comando;

sudo nano /etc/rc.local

Agregue nuestras líneas para que el archivo tenga el siguiente aspecto;

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

# Start tightvncserver
su - pi -c '/usr/bin/tightvncserver :1'

exit 0

(También podemos agregar nuestro propio comentario al archivo para que los futuros lectores sepan qué está pasando)

Eso debería ser. Ahora debería poder probar que el servicio se inicia cuando se inicia el Pi reiniciando.

Si lo anterior suena un poco largo, no dude en consultar un razonamiento más completo aquí .

d3noob
fuente
A mi no me funciona.
Camaleón
La respuesta fue escrita para la versión 'Wheezy' de Raspbian. La versión posterior ('Jessie' y (supongo) 'Stretch') tienen un método predeterminado diferente. Ver aquí para un enfoque alternativo.
d3noob
5

Antes de comenzar, asegúrese de que su Pi esté conectado a Internet \ red a través de Ethernet \ wifi.

Abra la Terminal e ingrese los siguientes comandos:

Obtenga la dirección IP de Pi para la conexión remota (para usar más adelante)

hostname -I

Instalar TightVncServer

sudo apt-get update
sudo apt-get install tightvncserver
tightvncserver

La primera vez que se ejecuta, debe ingresar una contraseña y verificarla. No es necesario ingresar una contraseña de solo lectura.

Para configurar el inicio automático como un servicio cuando se inicia el Pi:

Abra nano (editor de texto) para crear un archivo para iniciar automáticamente Tight VNC Server sudo nano /etc/init.d/tightvncserver

Escriba lo siguiente (o copie y pegue ):

#!/bin/sh
# /etc/init.d/tightvncserver
# Set the VNCUSER variable to the name of the user to start tightvncserver under
VNCUSER='pi'
case "$1" in
  start)
    su $VNCUSER -c '/usr/bin/tightvncserver :1'
    echo "Starting TightVNC server for $VNCUSER"
    ;;
  stop)
    pkill Xtightvnc
    echo "Tightvncserver stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/tightvncserver {start|stop}"
    exit 1
    ;;
esac
exit 0

Presione Ctrl + x, luego y para guardar e Enter para mantener el mismo nombre de archivo.

Edite los permisos de este archivo para que sea ejecutable y activo:

sudo chmod 755 /etc/init.d/tightvncserver
sudo update-rc.d tightvncserver defaults

Reiniciar para probar el reinicio de sudo

¡Instale el cliente vnc para su sistema operativo e intente conectarse una vez que Pi se haya reiniciado!

Para Windows: TightVNC Client, por ejemplo . No es necesario instalar el servidor.

Inicie VNC Client Connect utilizando la dirección IP de la parte superior de esta publicación. Cambia la dirección IP por la tuya. El número de puerto en una serie de publicaciones de Internet solo aparece como 2 dígitos. Esto es breve y si está utilizando el script anterior, su pi se está ejecutando en el puerto 1, entonces debe usar 590 1 . Si 2, entonces 590 2 etc.

192.168.1.123:5901
sarín
fuente
Su solución está funcionando perfectamente para mí, excepto que no obtengo pantalla completa. ¿Cómo puedo obtener pantalla completa? ( vncserver -geometry 1366x768 -depth 24 -dpi 96. Utilicé ese comando antes para obtener la pantalla completa. ¿Hay alguna forma de agregar la línea en su código?)
opu 웃
@opu 웃 La línea su $VNCUSER -c '/usr/bin/tightvncserver :1'es la que ejecuta el comando al que te refieres. Simplemente agregue las opciones al final de esa línea, lo que dará como resultado algo asísu $VNCUSER -c '/usr/bin/tightvncserver :1' -geometry 1366x768 -depth 24 -dpi 96
Trent
¿Cómo depuro si esto no funciona? Si ejecuto tightvncserver en la línea de comando del usuario pi, se inicia y puedo acceder de forma remota, pero no se inicia automáticamente usando esta o la solución /etc/rc.local.
Alan McDonley