01 | Внимание: |
Статья потеряла свою актуальность — вместо неё предлагается ознакомиться с её актуализированной версией
|
|
02 | На заметку: |
Автор настоятельно не рекомендует использовать более быстрые пути с использованием PuTTY и Xming X Server — они подойдут лишь в качестве удаленной командной строки — визуальная составляющая этих подходов оставляет желать лучшего. В данной статье показан один из самых вменяемых по отношению к результату способ удаленного подключения.
|
|
03 |
Метод, представленный в данной статье, позволит осуществлять ограниченный перечень действий, включающий работу в терминале. Он не позволит запускать полноэкранные графические приложения, вроде игр или медиаплееров. Тем не менее, он обеспечит полноценное окружение, такое же, как если бы оно было выведено напрямую на монитор. |
Проверено — автор рекомендует: http://ali.pub/wob8z Raspberry Pi 3 Model B (3 в 1)
Официальный корпус для Rasberry Pi 3 — http://ali.pub/kslog Все одним комплектом — http://ali.pub/puqa9, http://ali.pub/wdsti Видео-инструкция о покупке со скидками на Aliexpress |
04 |
Удаленный рабочий стол Рано или поздно, возникнет необходимость управлять компьютером Raspberry Pi удаленно, будь то сервер умного дома, центр сбора данных, либо мозги умного телевизора. И не придумано ещё более удобного способа, чем удаленный рабочий стол. В этом разделе будет показано, как настроить связку Raspberri Pi 3 + ПК на Windows, находящиеся в одной локальной сети таким образом, чтобы осуществлять администрирование Малинкой, сидя на своем привычном месте, так, как будто вместо ПК к монитору подключена Малинка. |
|
05 |
Настройка на стороне Raspberry Pi 3
|
|
06 |
Первым делом обновляем операционку Raspbian: |
|
07 |
1 2 sudo apt-get update
sudo apt-get upgrade |
|
08 |
Опцией update утилита apt-get запускает проверку в репозиториях новых версий программ, доступных для загрузки и обновляет кэш в системе. Опцией upgrade запускается обновление системы до последней версии. Как правило обе команды используются вместе. Можно использовать обе команды в одной строке, для последовательного выполнения обеих команд, для этого нужно разделить их точкой с запятой — sudo apt-get update; sudo apt-get upgrade или амперсандом — sudo apt-get update & sudo apt-get upgrade. Это весьма долгая процедура. |
|
09 | На заметку: |
Для корректного исполнения важных команд используется комбинация && — следующая команда будет выполнена, только если предыдущая завершена без ошибок: sudo apt-get update && sudo apt-get dist-upgrade
|
|
10 |
Далее на Raspbery Pi 3 необходимо установить серверный компонент VNC-системы (Virtual Network Computing) для осуществления доступа к удаленному рабочему столу — в нашем случае будем устанавливать TightVNC Server. Он позволит подключаться к малинке различным VNC-клиентам (просмотрщикам, viewer). Также он будет осуществлять от имени пользователя, взаимодействие с системой, эмулируя нажатия кнопок и работу с мышью. Устанавливается очень просто: |
|
11 |
1 sudo apt-get install tightvncserver |
|
12 |
После установки сервера, необходимо настроить статический IP-адрес, для того чтобы VNC-клиент мог обращаться к устройству по конкретному адресу. |
|
13 |
Следующими действиями, мы отменяем режим DHCP (англ. Dynamic Host Configuration Protocol — протокол динамической настройки узла, используется для автоматического динамического присвоения IP-адресов устройствам сети) и все параметры сети устанавливаем вручную. |
|
14 |
Для этого сначала нужно выполнить команду (открыть файл /etc/dhcpcd.conf для редактирования в текстовом редакторе nano): |
|
15 |
1 sudo nano /etc/dhcpcd.conf |
|
16 |
И в самом конце файла под строкой nohook lookup-hostname указать данные своей сети и желаемый IP-адрес устройства (он должен быть свободен, чтобы не было конфликтов) в сети: |
|
17 |
1 2 3 4 interface eth0
static ip_address=192.168.0.99
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 192.168.0.2 |
|
18 | На заметку: |
Обратите внимание, что настройка для Wi-Fi и Ethernet происходит раздельно. Для Wi-Fi в первой строке кода нужно указать interface wlan0.
|
|
19 |
После того как все настроено, нужно перезагрузить систему и убедиться что, установленные параметры вступили в силу: |
|
21 |
Установленный IP-адрес можно всегда узнать командой (параметр -I чувствителен к регистру): |
|
22 |
1 hostname -I |
|
23 |
Запуск сервера осуществляется следующей командой: |
|
24 |
1 tightvncserver :1 -geometry 1920x1080 -depth 24 |
|
25 |
В качестве параметров указаны дисплей 1, разрешение дисплея и глубина цвета. При первом запуске VNCServer запросит установить 2 пароля — основной для доступа и пароль только для просмотра. Второй пароль можно не устанавливать. Пароли устанавливаются последовательным нажатием клавиш и подтверждением клавишей Enter. На экране во время ввода пароля ничего не будет происходить. После запуска, система оповестит о том, что запуск прошел нормально: |
|
27 |
На серверной стороне (Raspberry Pi 3) все готово... |
|
28 |
Настройка на стороне Windows (на примере Windows 7)
|
|
29 |
Теперь необходимо настроить клиентскую сторону, в нашем случае Windows, но по сути она может быть любой, в т. ч. и Android. Скачиваем и запускаем VNC-клиент VNC Viewer и в меню File → New Connection создаем новое соединение: |
|
31 |
В настройках соединения нужно указать только IP-адрес устройства к которому будет осуществлено подключение — он задавался в файле dhcpcd.conf. Через двоеточие указываем номер дисплея, заданный при запуске VNC-сервера. В поле name можно указать имя соединения, например, Raspberry Pi 3 |
|
33 |
Вновь созданное соединение появляется в главном окне: |
|
35 |
Если все настройки сделаны корректно, то при двойном клике должно появиться окно с запросом пароля — он задавался при первом запуске VNC-сервера: |
|
36 |
Можно установить галочку Remember Password — в этом случае вводить пароль больше не потребуется
|
|
37 |
После ввода пароля появляется рабочий стол системы с заданными параметрами — разрешением и цветностью: |
|
39 |
Убираем ошибку GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: An authentication agent already exists for the given subject Очень вероятно, что при первом удаленном подключении на вновь отображенном рабочем столе будет висеть окно с ошибкой: |
|
40 |
GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: An authentication agent already exists for the given subject
|
|
41 |
Окно закрывается по кнопке ОК, и на работу никак не влияет, но жутко раздражает. Для того чтобы это окно больше не всплывало, при подключении к VNC-серверу, нужно проделать несложные манипуляции. |
|
42 |
Сначала в редакторе главного меню, нужно добавить пункт Default applications for LXSession: |
|
44 |
Далее зайти по добавленному пункту меню Default applications for LXSession и из вкладки Core applications, удалить значение lxpolkit поля Polkit agent, оставив это поле пустым. |
|
46 |
После этого перезагружаем систему, запускаем VNC-сервер и при подключении VNC-клиента такой ошибки уже не будет. |
|
47 |
Борьба с Х-курсором в терминале На этом месте, кого-то может все устроить и на этом все закончится, но некоторых будет смущать X-образный курсор, вместо привычной стрелки. |
|
49 |
Для того, чтобы вернуть курсору стандартный стрелочный вид, вместо Х, необходимо в файле /home/pi/.vnc/xstartup (не путать с /etc/vnc/xstartup): |
|
50 |
1 sudo nano /home/pi/.vnc/xstartup |
|
51 |
добавить к строке xsetroot -solid grey параметры: |
|
52 |
1 xsetroot -solid grey -cursor_name left_ptr |
|
53 |
Перезагружаем и переподключаемся. Теперь результат такой, как надо: |
|
55 |
Настройка автозапуска VNC-сервера, и включение его как службы Внимательный читатель наверняка заметил одну неприятность — при перезагрузке Малинки для повторного подключения к ней, придется снова запускать TightVNC Server из терминала самой Малинки, что очень неудобно. Неудобство усугубляется необходимостью постоянно вводить дополнительные параметры. Устраним этот недостаток. |
|
56 |
Способ №1, простой — создание файла в папке autostart
|
|
57 |
Заходим в папку .config/autostart (если папки нет, создать её можно средствами стандартного оконного менеджера): |
|
58 |
1 cd .config/autostart |
|
59 |
Создаем файл tightvnc.desktop: |
|
60 |
1 sudo nano tightvnc.desktop |
|
61 |
Следующего содержания: |
|
62 |
1 2 3 4 5 [Desktop Entry]
Type=Application
Name=TightVNC
Exec=vncserver :1 -geometry 1920x1080 -depth 24
StartupNotify=false |
|
63 |
Сохраняем файл Ctrl+X, перезагружаем Малинку и снова подключаемся к ней из Windows, уже не запуская TightVNCServer в ручном режиме. |
|
64 |
Способ №2, сложнее — с настройкой VNC-сервера как службы
|
|
65 | На заметку: |
Этот способ несовместим с предыдущим, поэтому нужно выбирать только один из них.
|
|
66 |
Настройка VNC-сервера как службы, может быть полезна для быстрого запуска и остановки сервера без ввода дополнительных параметров. Для этого нужно создать файл vncsrver в папке /etc/init.d/: |
|
67 |
1 sudo nano /etc/init.d/vncserver |
|
68 |
Следующего содержания: |
|
69 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #!/bin/sh
### BEGIN INIT INFO
# Provides: VNC
# Required-Start: $local_fs
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start or stop the VNC server
### END INIT INFO
PATH="$PATH:/usr/bin/"
export USER="pi"
case "$1" in
start)
su ${USER} -c "/usr/bin/vncserver :1 -geometry 1920x1080 -depth 24"
echo "Started VNC server."
;;
stop)
su ${USER} -c "/usr/bin/vncserver -kill :1"
echo "Stopped VNC server."
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: vncserver [start|stop]" >&2
exit 3
;;
esac
: |
|
70 |
Сохраняем файл Ctrl+X. Далее изменяем владельца на root (chown), назначаем права доступа на выполнение (chmod 755) и устанавливаем ссылку сценария инициализации (update-rc.d): |
|
71 |
1 2 3 sudo chown root:root /etc/init.d/vncserver
sudo chmod 755 /etc/init.d/vncserver
sudo update-rc.d vncserver defaults |
|
72 |
После перезагружаем компьютер. При загрузке компьютера, VNC-сервер запустится автоматически. |
|
73 |
Теперь можно управлять VNC-сервером как службой, например, чтобы остановить его необходимо выполнить команду: |
|
74 |
1 sudo service vncserver stop |
|
75 |
А чтобы перезагрузить: |
|
76 |
1 sudo service vncserver restart |
|
77 |
Добавлено 06.04.2017
|
Копирование и вставка текста из приложений рабочего компьютера в приложения VNC-клиента Работая в режиме уделенного рабочего стола, постоянно перемещаясь между сервером и клиентом, досадной и раздражающей, окажется невозможность копирования текста на рабочем компьютере (Windows) и вставки его на удаленном клиенте (Raspbian OS). Буферы обмена будут жить каждый своей обособленной жизнью. К сожалению, утилита vncconfig не включена в состав TightVNC-сервера, поэтому ею воспользоваться не получится. Зато можно установить другую специальную утилиту autocutsel. |
|
78 |
1 sudo apt-get install autocutsel |
|
80 |
После этого её можно запускать вручную командой autocutsel, а можно добавить в файл запуска VNC-сервера, чтобы утилита запускалась вместе с ним. Для этого в файл /home/pi/.vnc/xstartup нужно добавить строку autocutsel -s CLIPBOARD -fork: |
|
81 |
|
В случае использования параметра PRIMARY вместо CLIPBOARD, копирование осуществляется только в одну сторону — от сервера (Raspbian OS) на клиент (Windows).
|
82 |
После перезагрузки утилита autocutsel будет запущена автоматически и операции копирования/вставки можно осуществлять между компьютерами, как если бы это был один компьютер. |
|
83 |
В завершение Когда все настроено и работает, перед началом экспериментов, автор рекомендует, при помощи программы Win32DiskImager, сделать образ настроенной системы, чтобы в случае неудачных опытов её всегда можно было развернуть с этой точки. |
|
85 |
Похожие запросы:
|
|