Автоматичний запуск TightVncServer на Raspberry Pi 2


11

У мене є Raspberry Pi 2 і слідкував за публікацією на Raspberrypi.org, але Tight VNC Server не запускається при перезавантаженні. Здається, помилки не буває.

Як змусити TightVncServer запустити Pi-перезавантаження?


Відповіді ще не можна опублікувати, але є простий метод, з яким я працював над моїм pi 3 B, задокументованим на Adafruit тут: learn.adafruit.com/…
Стівен Еверс

Відповіді:


10

Для цього ви можете використовувати трохи розумності Linux.

Нашим першим завданням буде редагування файлу /etc/rc.local. Цей файл може містити команди, які запускаються при запуску. Якщо ми подивимось на файл, то побачимо, що в ньому вже мало записів;

#!/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

Перший набір рядків з хеш-позначкою (#) перед ними - це коментарі. Вони є лише там, щоб пояснити, що відбувається тому, хто читає файл.

Рядки коду донизу явно мають щось спільне з IP-адресою комп'ютера. Насправді це короткий скрипт, який перевіряє, чи має Raspberry Pi IP-адресу, і якщо вона є, вона роздруковує її. Якщо ви згадуєте, ви можете бачити IP-адресу, роздруковану на екрані, коли Pi завантажується так

My IP address is 10.1.1.8

Raspbian GNU/Linux 7 raspberrypi tty1

raspberrypi login:

Цей фрагмент сценарію в rc.local - це код, відповідальний за друк IP-адреси!

Ми додамо наступну команду в rc.local;

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

Ця команда перемикає користувача на "pi" користувача з su - pi. Su означає «переключення користувача», тире (-) гарантує, що середовище користувача pi (як і всі їх налаштування) використовується правильно, а pi - це користувач.

Параметр -c оголошує, що наступним фрагментом рядка буде команда, яка буде запущена, і частина всередині лапок ('/ usr / bin / thickvncserver: 1') - це команда.

Команда в цьому випадку виконує файл жорстокого серверу, який знаходиться в каталозі / usr / bin, і вказує, що нам слід запустити сеанс на робочому столі 1 (: 1).

Для цього ми відредагуємо файл rc.local за допомогою наступної команди;

sudo nano /etc/rc.local

Додайте в наші рядки, щоб файл виглядав наступним чином;

#!/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

(Ми також можемо додати свій власний коментар у файл, щоб майбутні читачі могли знати, що відбувається)

Це повинно бути. Тепер ви маєте змогу перевірити, що послуга починається, коли Pi завантажується шляхом перезавантаження.

Якщо вищеописані звуки трохи довго намотується, НЕ соромтеся перевірити більш повне міркування тут .


Це не працює для мене.
Хамелеон

Відповідь була написана для "Wheezy" версії Raspbian. Пізніша версія ('Jessie' і (я припускаю) 'Stretch') має інший метод за замовчуванням. Дивіться тут альтернативний підхід.
d3noob

5

Перш ніж почати, переконайтесь, що ваш Pi підключений до мережі Інтернет \ Ethernet \ wifi.

Відкрийте термінал і введіть такі команди:

Отримати Pi IP-адресу для віддаленого з'єднання (для використання пізніше)

hostname -I

Встановіть TightVncServer

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

Перший раз, коли це запускається, ви повинні ввести пароль і перевірити його. Не потрібно вводити лише пароль для перегляду.

Щоб налаштувати автоматичний запуск як послугу, коли Pi завантажується:

Відкрийте nano (текстовий редактор), щоб створити файл для автоматичного запуску Tight VNC Server sudo nano /etc/init.d/tightvncserver

Введіть наступне (або скопіюйте та вставте ):

#!/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

Натисніть Ctrl + x, потім y для збереження та Enter, щоб зберегти те саме ім'я файлу.

Відредагуйте дозволи цього файлу, щоб зробити його виконуваним та активним:

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

Перезавантажте для перевірки перезавантаження sudo

Встановіть клієнт vnc для вашої ОС та спробуйте підключитися після перезавантаження Pi!

Для Windows: Клієнт TightVNC, наприклад . Не потрібно встановлювати сервер.

Запустіть VNC Client Connect, використовуючи IP-адресу вгорі цієї публікації. Змініть IP-адресу на свою. Номер порту в ряді публікацій в Інтернеті вказаний лише як 2 цифри. Це коротка рука, і якщо ви використовуєте вищезазначений сценарій, ваш pi працює на порту 1, тоді вам слід використовувати 590 1 . Якщо 2, то 590 2 і т.д.

192.168.1.123:5901

Ваше рішення працює для мене ідеально, за винятком того, що я не отримую повний екран. Як я можу отримати повний екран? ( vncserver -geometry 1366x768 -depth 24 -dpi 96. Я використовував цю команду раніше, щоб отримати повний екран. Чи є спосіб додати рядок у свій код?)
opu 웃

@opu 웃 Рядок su $VNCUSER -c '/usr/bin/tightvncserver :1'- це те, що виконує команду, на яку ви посилаєтесь. Просто додайте параметри до кінця цього рядка, в результаті чого вийде щось на кшталтsu $VNCUSER -c '/usr/bin/tightvncserver :1' -geometry 1366x768 -depth 24 -dpi 96
Трент,

Як встановити налагодження, якщо це не працює? Якщо я запускаю жорсткий сервер у командному рядку користувача pi, він запускається, і я можу віддалятися, але не запускається автоматично, використовуючи це або рішення /etc/rc.local.
Алан МакДонлі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.