vnc


[ Пред. ] [ Содержание ] [ След. ]

vnc


Created Вторник 20 Март 2018
Ubuntu: первоначальная настройка Raspberry Pi без монитора
https://dgrafov.blogspot.ru/2016/06/ubuntu-raspberry-pi.html
Настройка удаленного рабочего стола
Устанавливаем VNC сервер на Raspberry:
sudo apt-get install tightvncserver

Настраиваем курсор в VNC сервер (обычный указатель мыши вместо крестика):
открываем файл /home/pi/.vnc/xstartup:
nano /home/pi/.vnc/xstartup

и дописываем к xsetroot параметр:
-cursor_name left_ptr
Настраиваем автозагрузку VNC сервера вместо lightdm (монитора-то все равно нет, lightdm стартовать не имеет смысла).
Переходим в режим superuser:
sudo su
Переходим в /etc/init.d/:
cd /etc/init.d/
Создаем новый файл vncboot:
nano vncboot
Копируем туда следующий скрипт:
#! /bin/sh# /etc/init.d/vncboot
### BEGIN INIT INFO
# Provides: vncboot
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start VNC Server at boot time
# Description: Start VNC Server at boot time.
### END INIT INFO
USER=pi
HOME=/home/pi
export USER HOME
case "$1" in
start)
echo "Starting VNC Server"
#Здесь можно использовать свои любимые настройки VNC
su - $USER -c "/usr/bin/vncserver :1 -geometry 1366x768 -depth 24"
;;
stop)
echo "Stopping VNC Server"
/usr/bin/vncserver -kill :1
;;
*)
echo "Usage: /etc/init.d/vncboot {start|stop}"
exit 1
;;
esac
exit 0
и сохраняем.
Делаем его исполняемым:
chmod 755 vncboot
Заменяем выполнение lightdm на vncboot при загрузке:
update-rc.d -f lightdm remove
update-rc.d vncboot defaults
Теперь можно перезагрузить Raspberry и, когда она загрузится, подключиться к ней из под Ubuntu с помощью, например, Remmina Remote Desktop Client (который в Ubuntu установлен по умолчанию).

======================================================================================================



Raspberry Pi как информационное табло — с помощью VNC на localhost
https://habrahabr.ru/post/212661/
Часть первая — Установка VNC
Устанавливаем Tight VNC server и Tight VNC viewer:
sudo apt-get install tightvncserver
sudo apt-get install xtightvncviewer

Делаем автозапуск VNC сервера:
Создаем файл /etc/init.d/vncboot с помощью текстового редактора nano (думаю разобратся с ним будет не сложно даже если вы видите его впервые).
sudo nano /etc/init.d/vncboot

Заполняем файл следующим контентом:
#!/bin/sh
# /etc/init.d/tightvncserver
# Customised by Stewart Watkiss
#http://www.penguintutor.com/linux/tightvnc
# Set the VNCUSER variable to the name of the user to start tightvncserver under
VNCUSER='pi'
eval cd ~$VNCUSER
case "$1" in
start)
su $VNCUSER -c '/usr/bin/tightvncserver -localhost -geometry 1000x760 :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
Ремарки:
здесь в VNCUSER='pi' указано имя пользователя под которым будет запущен VNC сервер. При желании можно сменить pi на другого пользователя.
т.к. VNC протокол сам по себе не очень безопасен, в параметрах запуска VNC сервера прописан "-localhost" — таким образом к нему можно приконнектится только с localhost, либо через SSH туннель. Если вам это не нужно, и вы хотите коннектится в VNC напрямую — можете убрать "-localhost"
подстройте параметр "-geometry" под размеры вашего монитора. Во избежание появления скроллеров в VNC просмотрщике советую поставить несколько меньшую ширину и высоту, например 1000x760 для мониторов, работающих в режиме 1024x768.

Сохраняем файл, выходим из nano, исполняем следующие комманды:
sudo chmod 755 /etc/init.d/vncboot
sudo update-rc.d vncboot defaults
Результат второй комманды должен выглядет так: "update-rc.d: using dependency based boot sequencing".
Теперь VNC сервер будет запускатся автоматически при старте Raspberry, но ему еще нужно указать пароли.
Для этого запустите комманду tightvncpasswd от имени того пользователя, под которым будет запускатся VNC сервер. В нашем случае это пользователь pi:
tightvncpasswd
Задайте разные пароли для контроля и для отображения (view password). Пароль для отображения может быть простым, допустим 123123.
Для проверки работоспособности перезапустите Raspberry и попробуйте приконнектится к VNC серверу.
Для создания SSH туннеля можно воспользоватся следующей коммандой: "ssh pi@айпи-малины -L 5901:localhost:5901 -N -f" — запускать ее следует не на Raspberry, а на той машине, с которой вы коннектитесь (для Windows погуглите как сделать SSH туннель через Putty (-: ), после чего смело коннектитесь VNC клиентом на localhost с display = 1, и вводите пароль, который вы задали для VNC сервера.
Часть вторая — автозапуск VNC просмотрщика
Для начала создадим пользователя, от имени которого просмотрщик будет запускатся.
sudo useradd guest
sudo mkdir /home/guest
sudo chown guest /home/guest
sudo cp /home/pi/.profile /home/guest/
sudo chown guest /home/guest/.profile
sudo chmod +x /home/guest/.profile
И зададим ему какой-нибудь пароль (хотя может это и лишнее)
sudo passwd guest
Создадим файл .bashrc в домашней директории пользователя guest
sudo nano/home/guest/.bashrc
Заполним файл таким контентом:
startx
Сохраняем файл, закрываем nano. Запускаем комманды:
sudo chown guest /home/guest/.bashrc
sudo chmod +x /home/guest/.bashrc
Теперь создадим еще файл .xsession в домашней директории пользователя guest
sudo nano/home/guest/.xsession
Заполним файл таким контентом:
echo 123123 | xvncviewer -shared -viewonly -autopass :1
Здесь 123123 это view-пароль для VNC сервера который мы задавали в предыдущей части. Если у вас он отличается — впишите свой.
Сохраняем файл, закрываем nano, исполняем комманды:
sudo chown guest /home/guest/.xsession
sudo chmod +x /home/guest/.xsession
Ремарка: возможно у пользователя guest нужно отобрать права на редактирование его .xsession, .profile и .bashrc файлов, и вообще посильнее ограничить, но я пока с этим не разобрался. Буду рад конструктивным замечаниям.
Итого при логине под юзером guest у нас автоматически запустится VNC просмотрщик, который покажет нам то, что происходит на VNC сервере. Но нам еще нужно сделать так, чтоб Raspberry автоматически логинился под юзером guest при запуске. Для этого делаем следующее:
sudo nano /etc/inittab
Находим в файле строку "1:2345:respawn:/sbin/getty 115200 tty1" и заменяем ее на такую "1:2345:respawn:/bin/login -f guest tty1 </dev/tty1 >/dev/tty1 2>&1" (без кавычек). Сохраняем файл, закрываем nano.
Часть четвертая — отключаем скринсейверы
Оказалось что задача эта не так проста как кажется — через какое-то время неактивности клавиатуры/мыши (которые у меня лично в Малину вообще не включены, т.к. все делается по SSH, и которые для подвешенного где-нибудь под потолком информационного табло определенно не будут включены) экран все время гасне, и как-то сложно разобратся кто же за это отвечает. Поэтому если я здесь что-то упустил — опять же буду рад комментариям.
Для начала редкатируем /etc/lightdm/lightdm.conf
sudo nano /etc/lightdm/lightdm.conf
Находим строку "#xserver-command=X" идущую где-то после строки "[SeatDefaults]", и заменяем ее на такое "xserver-command=X -s 0 -dpms" (без кавычек). Сохраняем, закрываем.
Потом, ставим x11-xserver-utils:
sudo apt-get install x11-xserver-utils
И создаем .xinitrc файл в домашнем каталоге пользователя guest:
sudo nano /home/guest/.xinitrc
Наполняем его следующим содержимым:
xset s off # don't activate screensaver
xset -dpms # disable DPMS (Energy Star) features.
xset s noblank # don't blank the video device
Сохраняем, закрываем. Запускаем:
sudo chown guest /home/guest/.xinitrc
sudo chmod +x /home/guest/.xinitrc

=========================================================================================================




http://www.penguintutor.com/linux/tightvnc
Добавление Tightvnc в автозагрузку systemd
Чтобы Tightvnc запускался автоматически, нам нужно создать новый файл запуска, который должен храниться в каталоге / etc / systemd / system / и заканчиваться суффиксом «.service». Я позвонил в эту службу tightvncserver.service. Его необходимо создать как пользователь root, поэтому используйте sudo
sudo nano /etc/systemd/system/tightvncserver.service
[Unit]
Description=TightVNC remote desktop server
After=sshd.service
[Service]
Type=dbus
ExecStart=/usr/bin/tightvncserver :1
User=pi
Type=forking
[Install]
WantedBy=multi-user.target
You may need to change the user name on line 8. It is currently set to pi which is the default username on the Raspberry Pi Raspbian image. Set this to whatever username you want to login to TightVNC as. Do not put root as the user.
Change the file so it is owned by root
sudo chown root:root /etc/systemd/system/tightvncserver.service
Make the file executable by running
sudo chmod 755 /etc/systemd/system/tightvncserver.service
It's a good idea to test the script at this point rather than waiting until after a reboot. This is done using:
sudo systemctl start tightvncserver.service
Don't worry if you get the following error message, which is because you've already started tightvnc
A VNC server is already running as :1
Enable startup at boot using
sudo systemctl enable tightvncserver.service
TightVNC will now start at startup. I'd recommend you reboot at this point to make sure it's working but youc an just stop and start the service using the systemctl command instead.
Note that this is designed for running only one instance of TightVNC on the computer. If you want to be able to start and stop specific instances of TightVNC then you will need to tweak the startup script appropriately.

установка Xvnc (X сервер на vds)
https://unixforum.org/viewtopic.php?t=71717#entry684513
1 Создаем файл с паролем.
# su username -c "x11vnc -storepasswd password /vnc_pass.txt"

2 Создаем виртуальный дисплей в памяти
# su username -c "/usr/bin/Xvnc :20 -geometry 800x600 -depth 16 -nolisten tcp &"
su tux -c "/usr/bin/Xvnc :20 -geometry 1024x600 -depth 16 -nolisten tcp &"

3 Запускаем на этом дисплее gnome
# su username -c "DISPLAY=:20.0 /usr/bin/gnome-session &"
su tux -c "DISPLAY=:20.0 /usr/bin/gnome-session &"

4 Запускаем VNC сервер
# su tux -c "x11vnc -forever -rfbauth /home/tux/.vnc/passwd -nolookup -display :20 -o /home/tux/x11errors.txt -bg > /dev/null &"

5 Запускаем на нашем рабочем столе иксовое приложение
# su tux -c "DISPLAY=:20.0 /usr/bin/gcalctool &"

x11vnc -storepasswd password /vnc_pass.txt
/usr/bin/Xvnc :20 -geometry 1280x720 -depth 16 -nolisten tcp &
DISPLAY=:20.0 /usr/bin/gnome-session & # mate-session xfce4-session
x11vnc -forever -rfbauth /home/tux/.vnc/passwd -nolookup -display :20 -o /home/tux/x11errors.txt -bg > /dev/null &
DISPLAY=:20.0 /usr/bin/gcalctool &

Запуск при загрузке
Если вы хотите, чтобы ваш VNC-сервер запускался при загрузке системы, нам нужно будет изменить сценарии запуска init. Для CentOS:
chkconfig vncserver --levels 2345 on

Для Debian / Ubuntu сервер VNC должен быть автоматически настроен для запуска при загрузке. В противном случае вам может потребоваться обновить сценарии rc:
update-rc.d vnc4server defaults


Установка и настройка VNC-сервера
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
User=tux
PAMName=login
PIDFile=/home/tux/.vnc/%H:%i.pid
# Clean any existing files in /tmp/.X11-unix environment
###ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
###ExecStart=/sbin/runuser -l tux -c "/usr/bin/vncserver %i -geometry 1280x720"
###ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target


systemctl daemon-reload
$ systemctl start vncserver@:1
systemctl status vncserver@:1
systemctl enable vncserver@:1
ss -tulpn| grep vnc

Дополнительные настройки для Xfce
Если вы решили использовать Xfce, вам также потребуется изменить файл, который выполнялся при запуске сеанса VNC. Для этого отредактируйте файл /home/<user>/.vnc/xstartup и измените запись exec (обычно строка 4) с etc/X11/xinit/xinitrc на startxfce4, как показано ниже:

#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
vncserver -kill $DISPLAY















Содержание