У мене є Raspberry Pi 2 і слідкував за публікацією на Raspberrypi.org, але Tight VNC Server не запускається при перезавантаженні. Здається, помилки не буває.
Як змусити TightVncServer запустити Pi-перезавантаження?
У мене є Raspberry Pi 2 і слідкував за публікацією на Raspberrypi.org, але Tight VNC Server не запускається при перезавантаженні. Здається, помилки не буває.
Як змусити TightVncServer запустити Pi-перезавантаження?
Відповіді:
Для цього ви можете використовувати трохи розумності 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 завантажується шляхом перезавантаження.
Якщо вищеописані звуки трохи довго намотується, НЕ соромтеся перевірити більш повне міркування тут .
Перш ніж почати, переконайтесь, що ваш 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
. Я використовував цю команду раніше, щоб отримати повний екран. Чи є спосіб додати рядок у свій код?)
su $VNCUSER -c '/usr/bin/tightvncserver :1'
- це те, що виконує команду, на яку ви посилаєтесь. Просто додайте параметри до кінця цього рядка, в результаті чого вийде щось на кшталтsu $VNCUSER -c '/usr/bin/tightvncserver :1' -geometry 1366x768 -depth 24 -dpi 96