12.05.2017 Headless Ubuntu

Материал из SRNS
Перейти к: навигация, поиск
(systemd)
(systemd)
Строка 59: Строка 59:
 
== systemd ==
 
== systemd ==
  
Теперь надо сделать, чтобы всё это запускалось при перезагрузке. В Ubuntu сейчас всё сделано на systemd. В качестве образца для настройки systemd я использовал данную статью: http://c-nergy.be/blog/?p=8984. Управление порядком запуска модулей описано здесь: https://fedoramagazine.org/systemd-unit-dependencies-and-order/
+
Теперь надо сделать, чтобы всё это запускалось при перезагрузке. Сначала запускаем '''Xfvb'''. Для этого необходимо, чтобы в ''/etc/systemd/system/'' был файл '''xvfb.service''' со следующим содержанием:
 
+
Сначала запускаем Xfvb (/lib/systemd/system/Xvfb.service):
+
 
<source lang="bash">
 
<source lang="bash">
 
[Unit]
 
[Unit]
Description=Start Xvfb at startup.
+
Description=Virtual Frame Buffer X Server
After=multi-user.target
+
After=network.target
 +
 
 
[Service]
 
[Service]
Type=simple
 
 
ExecStart=/usr/bin/Xvfb :1 -screen 0 1024x768x24 -fbdir /var/tmp
 
ExecStart=/usr/bin/Xvfb :1 -screen 0 1024x768x24 -fbdir /var/tmp
 +
 
[Install]
 
[Install]
 
WantedBy=multi-user.target
 
WantedBy=multi-user.target
 
</source>
 
</source>
  
После этого x11vnc (/lib/systemd/system/x11vnc_xvfb.service)
+
После этого запускаем '''x11vnc'''. Для этого необходимо, чтобы в ''/lib/systemd/system/x11vnc_xvfb.service'' был файл '''x11vnc.service'''
 
<source lang="bash">
 
<source lang="bash">
 
[Unit]
 
[Unit]
 
Description=Start x11vnc at startup.
 
Description=Start x11vnc at startup.
Wants=Xvfb.service multi-user.target
+
After=multi-user.target
After=Xvfb.service
+
 
[Service]
 
[Service]
 
Type=simple
 
Type=simple
ExecStart=/usr/bin/x11vnc -display :1 -nopw -listen 192.168.0.94 -xkb
+
ExecStart=/usr/bin/x11vnc -display :1 -nopw -listen 192.168.0.94 -xkb
 
+
 
[Install]
 
[Install]
 
WantedBy=multi-user.target
 
WantedBy=multi-user.target
 
</source>
 
</source>
  
Записав настроечные файлы, надо разрешить из запуск в systemd:
+
Для проверки состояния запуска '''Xfvb''' необходимо ввести ''"sudo systemctl status xvfb.service"''. Должно быть примерно так:
<source lang="bash">
+
systemctl daemon-reload
+
systemctl enable Xvfb.service
+
systemctl enable x11vnc_xvfb.service
+
</source>
+
 
+
После этого можно, как написано в указанной статье, перезагрузиться ( ;) ), или дать команду "systemctl start x11vnc_xvfb.service".
+
  
Если что не так - надо смотреть "systemctl status x11vnc_xvfb.service".
+
[[File:Xvfb.jpg|601px]]
  
 
== Результат ==
 
== Результат ==

Версия 18:00, 15 июня 2017

20170512 hellowin.jpeg

Содержание

Для тестирования приёмников был выделен специальный компьютер. Предполагается, что данный компьютер будет круглосуточно гонять подключенные к нему тем или иным способом приёмники и собирать различную статистику.

И тут возникла проблема. Для работы с приёмником Piksi понадобилась программа Swift console, которая предполагает наличие графической среды. А тестовый компьютер не имеет монитора, в результате чего X-ы не запускаются.

Надо это решать.

Варианты

Вариантов, на самом деле, много, и гуглятся они под запросу "X11 headless".

Наиболее прямолинейный - настроить X-сервер для работы без монитора. Для этого можно установить драйвер x11-dummy. Он подменяет физическую видеоплату и монитор, в результате чего система думает, что всё нормально, хотя монитора фактически нет.

Но с установкой этого драйвера в Ubuntu возникли непонятные сложности (он потянул за собой много всего дополнительного). В результате я пошёл другим путём.

Xvfb

Программа Xvfb подменяет собой X-сервер. Описание её установки можно найти здесь: https://habrahabr.ru/sandbox/20989/

В результате её работы приложения думают, что X-сервер есть, посылают ему запросы, как обычно. Но вместо X-сервера Xvfb.

Из командной строки можно запустить так:

Xvfb :1 -screen 0 1024x768x24 -fbdir /var/tmp &

В данной команде указано, что номер экрана DISPLAY=:1. Это нужно будет указывать при запуске программ. Если на компьютере параллельно запустить стандартный X-сервер, он будет :0 и конфликта не произойдёт.

Запустить программу с GUI-интерфейсом можно так:

DISPLAY=:1 ./console

x11vnc

Так, проблему с X-сервером закрыли, приложения запускаются. Но ничего не видно! Хотелось бы иметь доступ к запущенным программам через сеть. Для этого служит x11vnc - программа, транслирующая всё, что видно на экране (даже если его нет!) в сеть по протоколу VNC.

x11vnc -display :1 -bg -nopw -listen 192.168.0.94 -xkb

Здесь всё с делано по-простому - указано, к какому дисплею подключаться (:1), указано работать без пароля (nopw), уходить в фон (bg), указан IP-адрес данного компьютера (так надо).

После этого можно подключаться с другого компьютера с помощью клиента VNC, например, так:

ssvncviewer 192.168.0.94:5900

systemd

Теперь надо сделать, чтобы всё это запускалось при перезагрузке. Сначала запускаем Xfvb. Для этого необходимо, чтобы в /etc/systemd/system/ был файл xvfb.service со следующим содержанием:

[Unit]
Description=Virtual Frame Buffer X Server
After=network.target

[Service]
ExecStart=/usr/bin/Xvfb :1 -screen 0 1024x768x24 -fbdir /var/tmp

[Install]
WantedBy=multi-user.target

После этого запускаем x11vnc. Для этого необходимо, чтобы в /lib/systemd/system/x11vnc_xvfb.service был файл x11vnc.service

[Unit]
Description=Start x11vnc at startup.
After=multi-user.target
[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -display :1 -nopw -listen 192.168.0.94 -xkb
[Install]
WantedBy=multi-user.target

Для проверки состояния запуска Xfvb необходимо ввести "sudo systemctl status xvfb.service". Должно быть примерно так:

Xvfb.jpg

Результат

Результат выглядит, конечно, странно:

20170512 Swift Console.png

Программа запущена на чёрном фоне, нет никакого менеджера окно, нет ничего. Но именно это и требовалось - запустить программу по-минимуму, без загрузки всяких KDE. Если хочется запустить полноценную сессию, нужно настроить нормальный X, а потом аналогичным образом запустить x11vnc.

[ Хронологический вид ]Комментарии

(нет элементов)

Войдите, чтобы комментировать.

Персональные инструменты
Пространства имён

Варианты
Действия
SRNS Wiki
Рабочие журналы
Приватный файлсервер
QNAP Сервер
Инструменты