- AlektroNik
- Система виртуализации QEMU
- Установка пакетов
- Calculate Container Games
- Настройка хост-машины
- Установка и настройка Calculate Container Games
- Подготовка LXC-контейнера
- Настройка видеодрайвера
- Добавление пользователя
- Настройка проприетарного драйвера Nvidia
- Установка и настройка
- Обновление
- Настройка произвольного разрешения
- Видеокарта Nvidia
- Видеокарты Intel и AMD
- Настройка Xorg-сервера для работы без монитора
- Видеокарта Nvidia
- Видеокарты Intel и AMD
- Подключение к графическому сеансу контейнера
- Запуск игр
- Возможные проблемы
- Моргание экрана
- Изображение плохого качества
- Настройка Steam-контроллера
AlektroNik
Протокол VNC предусматривает подключение к удалённому рабочему столу. Он является аналогом RAdmin из Windows, но в отличии от последнего является кроссплатформенным и поддерживает шифрование передаваемых данных.
Сразу оговорюсь что в этой статье я никоим образом не отрицаю других способов удалённого администрирования Linux. Просто появилось желание осветить возможности VNC — протокола, более удобного для начинающих пользователей чем, например, SSH.
Как и большинство моих статей, эта статья будет ориентирована в первую очередь на пользователей дистрибутива Gentoo, одним из которых я являюсь. Однако 95% того что здесь написано применимо и для других дистрибутивов.
Для начала нам нужно установить пакет VNC. Обязательно с включенным флагом server. Для этого достаточно выполнить следующую команду:
Если по какой-то причине сборка пройдёт не удачно — обновите ваше дерево portage при помощи emerge —sync, emerge-webrsync или emerge-delta-webrsync (Тут уж на ваше усмотрение). Всё дело в том что в какой-то момент в дереве уже был X.Org 7, но имеющаяся версия VNC не
поддерживала его. Именно поэтому и нужно обновить дерево (Хотя по идее поможет и откат на X.Org 6, но я не думаю что кто-то использует это решение).
Следующим шагом нужно добавить в секцию Module файла /etc/X11/xog.conf следующую строчку:
Теперь нужно решить вопрос с аврторизацией. Для анонимного доступа добавьте в секцию Screen того же файла строчку:
или, если вы хотите защитить свой рабочий стол паролем, то в секцию Screen нужно добавить строки:
Option «SecurityTypes» «VncAuth»
Option «UserPasswdVerifier» «VncAuth»
Option «PasswordFile» «/etc/vncpasswd»
После этого вам понадобится задать пароль для подключения. Для этого выполните от имени пользователя root:
и введите желаемый пароль (само собой два раза:)).
После этого вам необходимо перезапустить X-сервер.
Теперь вы можете ввести команду vncviewer и получить доступ к вашему рабочему столу. Если вы хотите изменить какие-то параметры VNC-сервера (например разрешение, глубину цвета или порт, на котором «слушает» сервер) то вам нужно дописывать соответствующие параметры в секекцию Screen файла xorg.conf. Список опций и их подробное описание (на английском языке) есть в man-странице Xvnc
Всё это, практически один в один описано в FAQ на официальном сайте Real VNC, однако в man-страницах в самом пакете VNC про это ничего не сказано. Поэтому и была написана эта статья.
Система виртуализации QEMU
KVM (Kernel-based Virtual Machine) — это программное решение, обеспечивающее виртуализацию в среде Linux, которая поддерживает аппаратную виртуализацию на базе Intel VT (Virtualization Technology) либо AMD SVM (Secure Virtual Machine).
QEMU — свободная программа с открытым исходным кодом для эмуляции аппаратного обеспечения различных платформ, которая может работать и без использования KVM, но использование аппаратной виртуализации значительно ускоряет работу гостевых систем, поэтому использование KVM в QEMU (enable-kvm) является предпочтительным вариантом.
Первоначально разработка велась в рамках проекта Linux KVM (Kernel-based Virtual Machine), в котором, помимо собственно KVM (поддержки технологий аппаратной виртуализации x86-совместимых процессоров на уровне ядра Linux), разрабатывались патчи для QEMU, позволяющие QEMU использовать функциональность KVM. Однако недавно разработчики QEMU в содружестве с разработчиками KVM приняли решение интегрировать поддержку KVM в основную ветку QEMU (mainline).
Используя KVM, вы может запустить несколько виртуальных машин с немодифицированными образами Linux и Windows. Каждая виртуальная машина имеет собственную приватную среду, в которой она работает: сетевую карту, диск, графический адаптер и т.д.
Поддержка KVM вошла в ядро Linux начиная с версии 2.6.20.
libvirt — это интерфейс и демон для управления виртуальными машинами различных технологий (qemu/kvm, xen, virtualbox), он позволяет удобно настраивать и манипулировать виртуальными машинами. Также к нему есть много разных сторонних приложений для управления, web-интерфейсов и т.д. Например, весьма полезным может быть графический интерфейс управления виртуальными машинами virt-manager .
Установка пакетов
По умолчанию QEMU поддерживает архитектуры i386 и x86_64. Отредактируйте флаги для поддержки необходимых гостевых машин. Пример добавления поддержки архитектуры arm :
QEMU_SOFTMMU_TARGETS="arm i386 x86_64"
Для установки QEMU и libvirt выполните:
Calculate Container Games
Calculate Container Games — это контейнер, предназначенный для запуска Steam на сервере Calculate Scratch Server. Для запуска Steam игр можно использовать Steam Link, запущенный под Android/iOS, AppleTV, Raspberry Pi, Samsung Smart TV или Steam клиент с запуском игр в режиме трансляции. Calculate Container Games позволяет запускать Steam с неподдерживаемым разрешением монитора или на системе без подключенного монитора, задействуя простаивающие возможности вашего домашнего сервера.
Настройка хост-машины
Установите firmware для полноценной поддержки видеокарт:
emerge -a sys-kernel/linux-firmware
Укажите тип системы — «host» для поддержки запуска контейнеров с графическим окружением:
Обновите настройки системы и перезагрузите хост-машину:
Установка и настройка Calculate Container Games
Подготовка LXC-контейнера
Выполните установку контейнера Calculate Container Games, настроив его согласно инструкции, указав имя дистрибутива , а имя контейнера — games .
Настройка видеодрайвера
Выполните настройку видеокарты, используя утилиту cl-setup-video . Для отображения списка поддерживаемых видеодрайверов выполните:
Видео драйвер: [default] Автоопределение системой * [radeon] AMD Radeon (radeon) [amdgpu] AMD AMDGPU (amdgpu) [modesetting] Framebuffer device (modesetting) [intel] Intel (intel) [nouveau] Nvidia Nouveau (nouveau)
Для выбора AMDGPU и разрешения 1920×1080 выполните:
cl-setup-video —video amdgpu -X 1920×1080
Добавление пользователя
Добавьте пользователя guest в контейнере, настройте его профиль и автовход:
useradd —groups audio,input,video guest
Для начальной настройки Steam вам понадобится либо физический доступ к серверу с монитором, либо удаленный. Для включения удалённого доступа по VNC, задайте пароль доступа для пользоватля guest :
su guest -c «x11vnc -storepasswd»
Enter VNC password: Verify password: Write password to /home/guest/.vnc/passwd? [y]/n y Password written to: /home/guest/.vnc/passwd
При наличии пароля, VNC сервер будет запускаться вместе с Xorg сервером.
Настройка проприетарного драйвера Nvidia
Установка и настройка
В отличии от открытых видеодрайверов, проприетарный драйвер Nvidia необходимо установить как на хост-машину, так и в контейнер, причём одинаковую версию. Так же для сборки драйвера внутри контейнера необходимо подключить каталог с исходным кодом ядра из хост-машины, а для полноценной работы драйвера дать доступ на модификацию устройств 195 char .
Установите и настройте пакет с драйвером Nvidia на хост-машине:
emerge -a x11-drivers/nvidia-drivers
cl-setup-video —video nvidia
Перезагрузите хост-машину и убедитесь, что модуль Nvidia загружен:
nvidia_drm 53248 5 nvidia_modeset 1175552 9 nvidia_drm nvidia 33525760 374 nvidia_modeset drm_kms_helper 200704 1 nvidia_drm drm 462848 8 drm_kms_helper,nvidia_drm i2c_core 49152 4 drm_kms_helper,nvidia,i2c_piix4,drm
Добавьте доступ к видеокарте и подключите исходный код ядра в контейнер, раскомментировав две строки в конфигурационном файле контейнера:
# Nvidia driver support lxc.cgroup.devices.allow = c 195:* rwm lxc.mount.entry = /usr/src usr/src none bind,create=dir
Остановите контейнер и запустите его заново:
Установите и настройте драйвер Nvidia в контейнере, указав разрешение 1920×1080 :
emerge -a x11-drivers/nvidia-drivers
cl-setup-video —video nvidia -X 1920×1080
Обновление
Для обновления драйверов Nvidia или ядра, обновите на хост-машине ядро, затем драйвер Nvidia:
emerge -a sys-kernel/calculate-sources x11-drivers/nvidia-drivers
Перезапустите контейнер с остановкой для подключения исходного кода ядра:
Обновите Nvidia драйвер в контейнере:
emerge -a x11-drivers/nvidia-drivers
Настройка произвольного разрешения
Если монитор не поддерживает разрешение, которым вы хотите транслировать изображение, то его можно будет указать через файл настроек Xorg сервера. В примерах ниже транслируемое разрешение — Full HD ( 1920×1080 ).
Видеокарта Nvidia
При использовании видеокарты раскомментируйте следующие строки:
# Nvidia settings Section "Screen" Identifier "Monitor" Option "UseEDID" "true" Option "CustomEDID" "DFP-0:/usr/share/edid/1920x1080.bin" EndSection
Видеокарты Intel и AMD
При использовании видеокарты или , определите название порта к которому подключен монитор:
==> /sys/class/drm/card0-DP-1/status connected ==> /sys/class/drm/card0-DP-2/status /sys/class/drm/card0-HDMI-A-1/status /sys/class/drm/card0-HDMI-A-2/status /sys/class/drm/card0-HDMI-A-3/status
Раскомментируйте следующие строки, указав вместо Monitor-DVI-I-0 ваш (в примере выше ):
# Intel, AMDGPU settings Section "Monitor" Identifier "StandardMonitor" ModeLine "1920x1080" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync EndSection Section "Device" Identifier "Video" Option "Monitor-DVI-I-0" "StandardMonitor" EndSection
Настройка Xorg-сервера для работы без монитора
Без подключенного монитора, Steam не сможет определить поддерживаемые разрешения и не будет запускать игры.
Видеокарта Nvidia
Nvidia драйвер позволяет решить эту проблему программно: вы можете принудительно указать выход видеокарты, даже если к нему не подключен монитор. Для этого раскомментируйте следующие строки:
# Nvidia displayless Section "Device" Identifier "Video" Option "ConnectedMonitor" "DFP-0" EndSection
Видеокарты Intel и AMD
Решение проблемы на видеокартах Intel и AMD без потери производительности только аппаратное: можно сделать заглушку по инструкции. Либо воспользоваться эмулятором HDMI подобным этому:
Подключение к графическому сеансу контейнера
Для доступа к контейеру вы можете использовать подключенный к серверу монитор, либо, используя протокол VNC, подключиться удаленно, например при помощи клиента Remmina. Для подключения укажите протокол и IP адрес контейнера 192.168.0.10 :
При первом запуске контейнера с настроенной учётной записью пользователя guest будет выполнена автоматическая установка Steam по сети:
После установки будет запущен Steam в режиме Big Picture:
Запуск игр
Для трансляции игр с сервера необходимо, чтобы клиент и сервер находились в одной сети. Если же они находятся в разных сетях, то их можно объединить в одну, используя VPN.
Для подключения ОС Android к запущенному Steam используйте клиент Steam Link:
К сожалению, версии Steam Link под Linux нет. Вместо этого вы можете установить Steam, залогиниться той же учётной записью и подключиться к серверу, выбрав , для использования его вычислительной мощности:
Для установки Steam в Calculate Linux Desktop выполните:
emerge -a games-util/steam-launcher
Возможные проблемы
Моргание экрана
В некоторых случаях при трансяции изображения в Steam Link на видеокартах Nvidia может появляться моргание экрана. Чтобы исправить это, выйдите из Steam и запустите NVIDIA X Server Settings. В настройках OpenGL выключите опции и :
После этого снова запустите Steam из меню.
Изображение плохого качества
Может случиться, что качество транслируемого по сети изображения может сильно ухудшиться. Это может быть связано не только с проблемой работы сети, но и с автоопределением скорости сети в Steam, из-за чего он может занизить передачу до 3 Мбит/сек. Для решения этой проблемы укажите фиксированную минимально достаточную скорость. Например для трансляции Full HD вам вполне хватит скорости 10-15 Мбит/сек. Эти настройки можно выполнить как в Steam Link, так и в Steam, запущенном на сервере, перейдя в Настройки -> Remote Play -> Расширенные настройки клиента -> Предельная пропускная способность и выбрав 15 Мбит/с :
Настройка Steam-контроллера
Могут возникнуть сложности подключения Steam контроллера к Android через USB адаптер. В таком слуае для полключения используйте Bluetooth соединение. Возможно для этого может потребоваться обновить прошивку контроллера. Подробная инструкция доступна на сайте.
Так же в Steam понадобится включить поддержку Xbox контроллера. Это можно сделать перейдя в меню "Настройки" -> "Настройки контроллера" и включить "Пользовательская настройка контроллера xbox":