Был момент, когда я только установил Raspbery Pi OS на свою малинку, и поскольку она мне необходима не только для доступа с консоли, стал думать, как сделать так, чтобы можно было подключиться к ней по VNC.
Сам VNC-Server уже установлен в Raspbery Pi OS, необходимо только пометить галочкой VNC Enable в меню Paspberry Pi Configuration.

Но счастье было не долгим, и как оказалось, этого мало 🙂
Этот пункт лишь включает VNC в текущей сессии пользователя, и никак не стартует после перезагрузки.
Ну что ж. Теперь добавим VNC-сервер в автозагрузку:
После открытия терминала, сразу вводим следующие команды:
cd .config
Теперь необходимо создать папку autostart куда мы будем добавлять наши приложение, для которых необходима автозагрузка. командой ls проверяем, не существует ли она уже (если вдруг ранее, что-то мы уже делали и забыли).
Вывод будет примерно следующим:
[email protected]:~/.config $ ls
chromium libfm lxpanel lxtask.conf lxterminal menus pcmanfm user-dirs.dirs user-dirs.locale
Как можно заметить, нужно папки у нас нет, а значит создаем папку:
mkdir autostart
Затем переходим внутрь:
cd autostart
И создаем файл, автоматически открыв его в редакторе nano:
nano tightvnc.desktop
Файл может быть произвольного названия, но старайтесь давать файлам краткие и говорящие названия, чтобы потом не запутаться, для чего у нас существует этот файл. Очень сложно будет потом понять, что именно у нас стоит в автозагрузках, если файл будет называться например «avtozagruzka» 🙂
Ну и наконец, в открывшемся редакторе, необходимо указать сами параметры:
[Desktop Entry]
Type=Application
Name=TightVNC
Exec=vncserver :1 -geometry 1280×1024 -depth 24
StartupNotify=false

На этом все. Можно смело выполнять reboot и VNC-сервер у нас стартует автоматом с системой.
И все ведь хорошо, правда? Но только до тех пор, пока у вас подключен какой-нибудь монитор/телевизор к вашей малинке. И видеовыход определяется. Если же нет, есть шанс в VNC Viewer увидеть следующую печальную картину:

А происходит это потому, что VNC не может определить, в каком разрешении отдавать вам картинку, т.к. никакого видео-сигнала в данный момент нет. Решение как оказалось довольно простое.
В том же терминале (предварительно подключившись по SSH, либо подключив монитор и зайдя в терминал уже непосредственно на малинке) вводим команду:
sudo raspi-config
Открывается окно с конфигурационным меню, и наc интересует пункт 7 Advanced Options. Выбираем его:

Теперь нас интересует пункт А5 Resolutions, который позволяет устанавливать необходимые параметры экрана:

Я установил себе немного: 1280х1024, т.к. использовать разрешение на максимум — а это значит, что по-умолчанию GUI будет использовать именно это разрешение даже тогда, когда вы не планируете подключаться к своему устройству, что может также негативно сказываться на производительности (насколько сильно, не тестировал, но нагрузка на ЦПУ возрастает).

Выбираем ОК, перезагружаемся, и благополучно наслаждаемся нашим удаленным рабочим столом, даже без подключенного физически монитора:

Дополнил статью пунктом про добавление VNC-сервера в автозагрузку. Совсем забыл об этом во время ее написания, действительно, сам по себе vncserver после перезагрузки малинки не перезапускается.
(без кавычек). Сохраняем файл, закрываем nano. Теперь можно перезапустить Малинку и убедится что все работает — при старте мы видим десктоп на котором происходит все то, что мы делаем на VNC сервере (смотрите в конец первой части если вы забыли как порулить происходящим на VNC сервере).