Авторские статьи

Mir и графика в Ubuntu Core.


Многие считают что Canonical, идя к своей цели конвергенции, сделает свою классическую Ubuntu Desktop в виде мобильной Ubuntu Phone (Touch). Дескать и будущая Unity 8 визуально ближе к мобильному миру. Это совсем не так! Canonical хоть и славится тем, что многое из разрабатываемого ею задерживается и откладывается, но давайте не забывать о мелькнувших кадрах Ubuntu Personal. Ибо она итоговая цель, а не традиционная Ubuntu Desktop с Unity 8 на борту.

Итак, кадры что мелькнули. Ещё раз подскажу что мы видим. Центральной основой, к которой придут все ветки Ubuntu с графикой, - это Ubuntu Personal, использующая технологию Snappy.

Ubuntu Personal

Какой новый мир Canonical? Есть основа всего в виде Ubuntu Core, где нет места deb с его зависимостями и есть только snap с безопасностью мандатного доступа и возможностью отката софта и самой ОСи. Эта основа в будущем, возможно, заменит текущий Ubuntu Server, так как уже сейчас Ubuntu Core без графики трудится в маломощных устройствах из мира IoT (дроны, роботы, коммутаторы и т.д.). Согласен, что того же стека LAMP или LEMP в snap пакетах пока НЕТ, но уже есть postgresql и mysql. То есть Ubuntu Core без графики в будущем плавно заменит Ubuntu Server.

Проект KDE Neon уже решил взять Ubuntu Core основой своего детища. По образному выражению их разработчиков - наконец-то они взяли управление в свои руки. Любой, как проект KDE Neon, может взять Ubuntu Core и поверх данной операционной системы реализовать свою задумку. Так как в мире Snappy операционная система отделена от софта и софт отделён друг от друга, то Canonical пилит Ubuntu Core и отвечает за неё головой, а вы отвечаете головой за свой слой и не мешаете друг другу и не зависите друг от друга. Не согласовываете планы, версии библиотек, версии фреймворков и так далее.

Для десктопа нужна "графика" и в новом мире старому Xorg (X11) не место! У Canonical есть свой дисплейный сервер Mir, который заменит Xorg. Новая Ubuntu Desktop с Mir + Unity 8 всего лишь промежуточный этап в будущем, ибо в будущем чуть дальше во времени появится Ubuntu Personal, как сумма Ubuntu Core + Mir + Unity N. Ubuntu Personal отличает от традиционной Ubuntu Desktop, тот факт что используется транзакционная модель Snappy, а не deb.

Ubuntu Personal - итоговая цель Canonical как для десктопа, так и для мобильной версии. То есть в порыве конвергенции, как сходимости в одну точку, НЕ десктоп стремится к мобильной сфере и НЕ мобильная сфера склоняется к десктопу, а обе ветки стремятся к Ubuntu Personal. Уже писа́л вам, что Ubuntu Phone (Touch) перестала выпускать свои обновления OTA и остановилась на OTA-15, как заплатки к кодовой базе Ubuntu 15.04 (да-да! телефон основан на этой кодовой базе). Разработчики Ubuntu Phone прыгают на ветку 16.04 и переводят всё на рельсы snappy. Дальше появятся новые OTA, но они уже будут заплатками к кодовой базе 16.04, а новый софт для телефона уже принимается в Ubuntu Store только в виде snap!

Здесь моя аналитика закончилась и дальше хочу представить вам статью Симона Раффейнера (Simon Raffeiner ака sturmflut) под названием Mir and graphics on Ubuntu Core, которая и вдохновила меня на написание статьи, ибо в ней автор самостоятельно создаёт прообраз Ubuntu Personal. В своей первой статье он смог пройти часть этапов и представил "графику" без Unity 8, но с дисплейным сервером Mir, что позволило запустить ряд игр. В следующей статье он дожмёт тему и мы увидим работу Unity 8 поверх Mir и поверх Ubuntu Core. Тем не менее результат Симона впечатляющий и позволяющий прямо сейчас "пощупать будущее".

Что такое Mir?

Mir - это набор библиотек для реализации дисплейного сервера Linux, разрабатываемого Canonical с 2012 года и направленного на замену X Window. Mir находится в конкуренции к Wayland. Оба предназначены стать быстрой и безопасной заменой X11, так как последний позволяет любому приложению перехватывать события других программ и захватывать экран. Да и в целом X11 это древняя технология, разработанная для подключения к удалённым мэйнфреймам.

Wayland, технически говоря, это протокол, а не реализация. В его дизайне задумано, что всё, от взаимодействия с драйверами железяк до управления окнами приложений, консолидировано в единый процесс - compositor. Программы "общаются" c compositor'ом и если его процесс умирает, то и программы тоже. Вот по этой причине вы не можете рестартить GNOME Shell, когда он запущен в режиме Wayland.

Существует эталонная реализация compositor'а Wayland по имени Weston, но некоторые среды рабочего стола типа KDE, GNOME и некоторые тулкиты типа Qt обладают своими реализациями. GNOME on Wayland используется по умолчанию в Fedora 25 и использует XWayland для прозрачного запуска старых приложений Иксов.

Mir, с другой стороны, предоставляет собой набор библиотек, прячущий протокол, основанный на Google Protocol Buffers. В общих чертах дизайн похож на X11, так как есть серверный процесс (server process) и отдельный shell, который занимается управлением окнами. И программы и shell разговаривают с server, но shell имеет привилегию.

Многие не приняли Mir, так как им казалось, что Mir не разрывен с Ubuntu и Unity. Есть несколько реализаций server и shell частей Mir, одну из которых рассмотрим в данной статье чуть ниже. Mir должен был придти на десктопы в Ubuntu 13.10, но этого так и не случилось. Mir работает в Ubuntu Phone и в Aquaris M10, показывая умение работать как в мобильном режиме, так и в десктопном.

Ставим Mircade

Есть Mir для Ubuntu Core от разработчика Canonical Алана Гриффитса (Alan Griffiths). Будут просканированы все установленные игры, предоставлен полноэкранный лончер, который поможет запустить и поиграть в игры. Игры сами могут "разговаривать" с дисплейным сервером Mir или использовать слой совместимости XMir.

Для использования графики в QEMU нужно передать флаг -vga qxl. Полная команда будет типа
qemu-system-x86_64 -enable-kvm -smp 2 -m 1500 -netdev user,id=mynet0,hostfwd=tcp::8022-:22,hostfwd=tcp::8090-:80 -device virtio-net-pci,netdev=mynet0 -vga qxl -drive file=ubuntu-core-16-amd64.img,format=raw

Перезагружайте виртуальную машину при изменениях, если это необходимо. Нужно установить два пакета: mir-libs и mir-kiosk.
$ snap install --edge mir-libs
$ snap install --devmode --edge mir-kiosk

Если окно QEMU внезапно краснеет и затухает, становясь чёрным, после установки mir-kiosk, то дисплейный сервер работает и можно ставить Mircade - $ snap install --devmode --edge mircade

Тут нужно разъяснить один технический вопрос про интерфейсы.

Интерфейсы

Программы в snap полностью ограничены системой мандатного доступа и не могут украсть ваши данные, помешать другим приложениями или системе. Но приложению нужен доступ к определённым вещам: аппаратуре, системным сервисам и даже к файлам, которые предоставят другие snap пакеты. Времена когда snap таскал всё своё с собой прошли! Калькулятор размером 460 Мб в прошлом!

Решением являются интерфейсы. Snap может предложить slot, к примеру, для доступа к сокету, D-Bus или файлу, а другой snap подключится к нему через свой plug. Большинство интерфейсов представлено через snap пакет самой системой (ubuntu-core). Некоторые из интерфейсов могут быть запрошены в автоматическом режиме и при установке вашего snap пакета вас подсоединят к ним автоматом.

Весь список интерфейсов, который постоянно актуализируется, вы найдёте в официальной документации Interfaces reference.

Сейчас внутри виртуальной среды, если попросить выдать список, то получится следующее (добавил фильтрирующий grep)
$ snap interfaces | grep -F mir

Slot                    Plug
:network                mircade
:opengl                 mir-kiosk,mircade
mir-kiosk:mir           mircade
mir-libs:mir-libs       mir-kiosk
-                       mircade:mir-libs

Все имена интерфейсов, начинающиеся с двоеточия (типа :network) представлены системой (ubuntu-core), то есть в полной нотации должно было бы быть типа ubuntu-core:network. В нашем примере mircade разрешён доступ к сети. Обоим, mircade и mir-kiosk, разрешено использовать OpenGL.

Как мы видим, :network и :opengl относятся к разряду автоподключаемых, но последняя строка вывода сигнализирует нам о том, что mircade:mir-libs не имеет связи. Название намекает нам, что нужен коннект к mir-libs:mir-libs.

Сейчас такие коннекты можно делать только в Терминале, так как графическая утилита ещё только в проекте.
$ snap connect mircade:mir-libs mir-libs:mir-libs
$ snap interfaces

(..)
mir-kiosk:mir           mircade
mir-libs:mir-libs       mir-kiosk,mircade

Желателен рестарт. sudo reboot

Mircade

По списку представленных игр можно перемещаться клавишами управления курсора и выбирать нужную с помощью Enter. Список игр: Chess, Mahjongg, Neverball, Neverputt, Pingus, AisleRiot Solitaire, Project: Starfighter, SuperTux 2.

Project: Starfighter работает хорошо в полном экране и показывает неплохую производительность в среде QEMU.

Project: Starfighter

SuperTux в полном экране работает с переменным успехом. От стадии к стадии варьируется производительность, что не очень хорошо. Иногда теряется управление.

У Neverball с производительностью хорошо, но, как можно видеть на скриншоте, вывод графики не полноэкранный, в то время как движок рендерит в его правильном разрешении, часть управления находится за пределами отрисовки. Так же есть много артефактов в виде чёрных квадратов, которые на короткое время появляются по всему экрану.

neverball

Pingus является примером игры, которая не может войти в полный экран.

pingus

Playing Games on Ubuntu Core.

Если захотите самостоятельно пощупать Ubuntu Core и/или повторить шаги Симона, то начните с его первой статьи Setting up an All-Snap Ubuntu Core image in a QEMU/KVM virtual machine
Личное знакомство с Ubuntu Snappy Core. Часть 1.

Дата последней правки: 2023-12-27 12:00:01

RSS vasilisc.com   


Разделы

Главная
Новости
Ворох бумаг
Видео Linux
Игры в Linux
Безопасность
Статьи об Astra Linux
Статьи о FreeBSD
Статьи об Ubuntu
Статьи о Snappy
Статьи об Ubuntu Phone
Статьи о Kubuntu
Статьи о Xubuntu
Статьи о Lubuntu
Статьи об Open Source
Карта сайта