Meefik's Blog

Freedom and Open Source

Обзор графических подсистем Linux Deploy

Linux Deploy поддерживает несколько графических подсистем, вариантов вывода графики, которые можно использовать в зависимости от поставленной задачи.

VNC используется по умолчанию и представляет собой программный сервер, который запускается параллельно с работой Android и создает виртуальный рабочий стол, к которому можно подключиться через специальное приложение — VNC-клиент. По VNC можно подключиться как локально, прямо с устройства, так и удаленно, например, с компьютера или другого устройства. Единственным условием является то, чтобы устройства были в одной подсети, например, подключены к одному роутеру. VNC имеет два основных параметра: адрес сервера и номер дисплея. Адрес сервера — это IP или имя хоста, где запущен VNC-сервер. Номер дисплея — это номер виртуального рабочего стола с которым мы хотим работать и на котором запускается окружение рабочего стола. Номер дисплея находится в диапазоне от 0 до 99 и соответствует номеру порта VNC-сервера от 5900 до 5999 соответственно, именно этот порт будет открыт на сервере для ожидания подключения клиента. VNC прост в настройке, есть множество приложений-клиентов, кроссплатформенный, но не лишен своих недостатков. К таким недостаткам можно отнести относительно невысокую отзывчивости графики, отсутствие поддержки аппаратного ускорения, отсутствие мультитача, дополнительная нагрузка на систему и некоторые другие.

Для использования VNC в Linux Deploy достаточно зайти в параметры текущего профиля и выбрать VNC в качестве графической подсистемы (Параметры -> Графическая подсистема -> VNC). А затем, при необходимости, можно изменить настройки VNC-сервера в меню Параметры -> Параметры GUI. После этого, при запуске GNU/Linux, окружение рабочего стола будет запускаться внутри виртуального X-сервера, доступ к которому будет открыт для VNC-клиента. Для подключения к серверу в VNC-клиенте достаточно указать IP-адрес данного устройства (IP-адрес отображается в верхней строке приложения Linux Deploy) и номер дисплея, к которому следует подключиться.

Другой графической подсистемой, позволяющей запускать GNU/Linux параллельно с Android, является режим X Server (X Window System). Включается режим также в параметрах графической подсистемы (Параметры -> Графическая подсистема -> X Server). Данный режим позволяет запускать графическое окружение рабочего стола на стороннем X-сервере. Здесь сервер отвечает за прорисовку графики и отображение ее на видеоадаптере, а клиент — за выполнение приложений и передачу графики на сервер. Так, в данном случае, клиентом является GNU/Linux система и запускаемые в ней приложения, а сервером — другое приложение в Android (например, XServer XSDL), либо вообще на другом компьютере (например, Xorg, Xnest, Xephyr, Xming). X-сервер позволяет в некоторой степени решить вопрос производительности и существенно повысить отзывчивость графических интерфейсов, при этом не лишает возможности использовать необходимые функции Android-устройства в случае локального запуска сервера.

Для вывода графики на внешний X-сервер в параметрах Linux Deploy следует указать адрес сервера (IP или имя хоста) и дисплей сервера. Затем запустить X-сервер, а после запустить GNU/Linux через Linux Deploy. После этого на указанном X-сервера должно запуститься окружение рабочего стола. По такой схеме работают тонкие клиенты, только в данном случае роль тонкого клиента выполняет компьютер (или само устройство), а роль сервера — телефон/планшет.

И, наконец, следует упомянуть еще один режим графической подсистемы — фреймбуфер. В этом режиме при выводе графики GNU/Linux приложениями нет посредников, все работает как в полноценных десктопных дистрибутивах. Входящий в комплект дистрибутива X-сервер (Xorg) настраивается таким образом, что вывод графики осуществляется через специальный драйвер — fbdev. Отдельно настраивается адрес видеоустройства (например, /dev/graphics/fb0) и устройств ввода (например, /dev/input/event2 для тачскрина) для работы напрямую с железом. Данный режим дает указание X-серверу перенаправлять изображение напрямую на видеоустройство, а также использовать прямой доступ к устройствам ввода. В этом случае появляется выигрыш в производительности за счет прямого доступа к аппаратным ресурсам устройства. Однако тут есть обратная сторона. К сожалению, графическая подсистема Android и GNU/Linux не могут работать одновременно. Чтобы иметь возможность запустить графические приложения GNU/Linux в этом режиме, Linux Deploy приостанавливает работу Android на время, пока выполняются Linux-приложения. После завершения графического сеанса работа Android корректно возобновляется без необходимости перезагружать устройство (впрочем, есть и другие варианты, как с полной остановкой Android, так и вообще без остановки). Другим ограничением использования данного режима является проблема совместимости Xorg с аппаратными ресурсами устройства в некоторых случаях.

Для перевода Linux Deploy в режим фреймбуфера нужно выбрать соответствующую графическую подсистему (Параметры -> Графическая подсистема -> Framebuffer). Если в списке компонентов не выбран X-сервер, то это следует сделать (Параметры -> Выбрать компоненты) и выполнить переконфигурацию (Параметры -> Переконфигурировать) для установки необходимых пакетов. В параметрах графической подсистемы (Параметры -> Параметры GUI) следует указать видеоустройство и устройство ввода конкретного девайса. Также может потребоваться заморозить Android UI для корректной работы данного режима. Параметры Xorg сервера можно настроить более тонко в файле /etc/X11/xorg.conf внутри окружения установленного дистрибутива.