Как настроить вложенную среду рабочего стола Wayland с контейнером systemd-nspawn, например, VirtualBox

Это Q&A, чтобы поделиться своим взломом по поводу названия, основанного на правиле / поощрении stackru

https://stackru.blog/2011/07/01/its-ok-to-ask-and-answer-your-own-questions/

https://stackru.com/help/self-answer

Могу ли я ответить на свой вопрос?

Да! Stack Exchange всегда явно поощрял пользователей отвечать на свои вопросы. Если у вас есть вопрос, на который вы уже знаете ответ, и вы хотели бы задокументировать эти знания публично, чтобы другие (в том числе и вы) могли найти его позже, то вполне нормально задавать и отвечать на свои вопросы на сайте Stack Exchange.,

Оригинальный репо

https://github.com/kenokabe/wayland-desktop-container

1 ответ

Решение

Как настроить вложенную среду рабочего стола Wayland с помощью контейнера systemd-nspawn, например VirtualBox

Из этого туториала Вы узнаете, как настроить Wayland Desktop Environment с помощью контейнера linux systemd-nspawn на вашем компьютере. Это похоже на VMware Workstation или VirtualBox, но в Linux только с минимальными накладными расходами.

Беглый взгляд на конечный результат

Особенности и преимущества

✓ Аппаратно-независимый контейнер OS с помощью аппаратной абстракции с чрезвычайно эффективным методом минимизации производительности при использовании технологии контейнера systemd-nspawn
✓ 100% переносимость среди хостов Linux с поддержкой systemd, простота резервного копирования и восстановления
✓ Прямой рендеринг, например, эффекты рабочего стола 3D
✓ видео и звук работает
✓ Сеть работает из коробки
✓ С меньшей вероятностью испортить hostOS и нечастые операции перезагрузки для hostOS и оборудования, вместо этого наслаждайтесь мгновенной виртуальной загрузкой, отключением питания и перезагрузкой containerOS.

Резюме Как

  1. запуск kwin_wayland окно,
    это вложено в вашу текущую рабочую среду.

  2. Загрузите свою контейнерную ОС с systemd-nspawn

  3. Из консоли containerOS:
    (a) Запустите среду рабочего стола, такую ​​как XFCE или LXQt, для целевой kwin_wayland окно.
    (b) Просто подготовьте ваше любимое приложение для запуска, такое как synapse или xfce4-panel, для минимальной настройки.

Прохождение

HostOS с минимальными приложениями

HostOS может быть любой linuxOS с systemd, а среда рабочего стола может быть либо Wayland, либо устаревшей X11.

Хотя, конечно, предпочтительнее использовать Wayland hostOS, но ситуация все еще незрелая. По состоянию на март 2017 года только Fedora 25 использует сессию GNOME на базе Wayland по умолчанию, а не на X11, но другие дистрибутивы этого не делают. Последняя версия KDE-Plasma стабильна с X11/Xorg, но нестабильна с Wayland.

Возможно, если вы используете GNOME для хост-среды, перейдите на Wayland, но если Plasma или другое DE, будьте осторожны, чтобы использовать X11 / Xorg для стабильности.

Этот метод очень хорошо работает в обоих условиях, и лично я использую Arch Linux с KDE-Plasma (X11 / Xorg).

устанавливать systemd-nspawn а также kwin_wayland

Некоторые дистрибутивы, такие как Arch, уже есть systemd-nspawn, но другие, такие как Ubuntu нет.

Systemd-nspawn

Бинарный пакет "systemd-container" в Ubuntu xenial

KWin-Wayland

Бинарный пакет "Kwin-Wayland" в Ubuntu Xenial

Арка, вероятно, имеет kwin_wayland в xorg-server-xwayland пакет.

Запустить окно kwin_wayland

KWin известен как один из наиболее полнофункциональных и стабильных оконных менеджеров. Это прямой рендеринг включен wayland пространство окна управляется KWin и вложены в вашу текущую рабочую среду.

Запуск вложенного KWin @ KWin / Wayland - KDE Community Wiki
Начиная с версии 5.3, можно запустить вложенный экземпляр KWin под X11 или Wayland:

export $(dbus-launch); \
kwin_wayland --xwayland &;

за fish ракушка

export (dbus-launch);

Загрузите свой контейнер OS

sudo systemd-nspawn \
-bD /YOUR_MACHINE_ROOT_DIRECTORY \
--volatile=no \
--bind-ro=/home/YOUR_USERNAME/.Xauthority \
--bind=/run/user/1000 \
--bind=/tmp/.X11-unix \
--bind=/dev/shm \
--bind=/dev/dri \
--bind=/run/dbus/system_bus_socket \
--bind=/YOUR_DATA_DIRECTORY

привязывать /YOUR_DATA_DIRECTORY из hostOS в containerOS, так что вы можете совместно использовать каталог данных между обеими одновременно, ваша containerOS может оставаться настолько маленькой и чистой, насколько это возможно, и хорошей для переносимости и резервного копирования / восстановления.

Войдите в консоль containerOS.

Как правило, вы создаете свою дистрибутивную контейнерную ОС из минимальных / серверных образов ОС.

Помните, что вам не нужно устанавливать сервер отображения X11 / Xorg или Wayland для containerOS, поскольку kwin_wayland Окно играет роль.

Запустите DesktopEnvironment (XFCE) для целевой kwin_wayland окно.

Помните, KWin уже запущен, и это полнофункциональный и мощный WindowManager. Вы можете запускать и переключать задачи с помощью KWin с помощью сочетаний клавиш или подготовить свое любимое приложение для запуска, например synapse или же xfce4-panel для минимальной настройки.

Однако, если нам нужны более удобные для пользователя среды рабочего стола, просто установите и запустите XFCE или же LXQt которые могут работать вместе с KWin,

Из консоли containerOS:

export XAUTHORITY=/home/YOUR_USERNAME/.Xauthority; \
export XDG_RUNTIME_DIR=/run/user/1000; \
export CLUTTER_BACKEND=x11; \
export QT_X11_NO_MITSHM=1; \
xfce4-session --display :1;

Разверните и удалите рамку окна kwin_wayland по умолчанию

Вероятно, вы хотите убрать рамку контейнера OS, это как на Plasma (DE от HostOS).

Конечный результат

Подтвердите, что среда XFCE распознает, что работает на дисплее XWAYLAND.

XWayland реализует уровень совместимости для беспроблемного запуска устаревших приложений X11 на Wayland.

До сих пор, как в исключительных случаях, если вы устанавливаете графические библиотеки Wayland с определенным флагом, вы можете видеть, что приложения GUI изначально работают на Wayland.

Слева есть kate окно с режимом совместимости Xorg/X11.
Справа находится окно с родным режимом Wayland.

Как вы можете видеть, родное приложение Wayland не отражает текущую тему окна, а панель XFCE не отображает задачу приложения, и вы не сможете определить разницу в производительности, если используете обычные приложения ПК.

Так что, вероятно, нет особой причины преследовать приложение Wayland в родном режиме. но ситуация может быть иной для 3D-игр и значительно отличаться на небольших устройствах, таких как Raspberry Pi.

(Необязательно) Legacy X11/Xorg

Несмотря на то, что это руководство фокусируется на вложенном окне Wayland, Xephyr (вложенный X-сервер, который работает как X-приложение) существует уже давно.

В отличие от kwin_wayland, Xepher не оптимизирован для прямого рендеринга, а менеджер окон KWin не входит в пакет, поэтому если вы запускаете KWin или другой компоновщик прямого рендеринга поверх Xepher, дела идут медленно и неэффективно, поэтому не рекомендуется, но вот как:

Xephyr -ac -screen 1200x700 -resizeable -reset :1 &;

Взаимодействие HostOS и ContainerOS

Вы не можете копировать и вставлять между HostOS и ContainerOS.
Вы можете использовать GoogleKeep для обмена контентом между HostOS и ContainerOS, и, конечно, у вас должны быть общие каталоги через привязку systemd-nspawn.

портативность

Вы можете "копировать / восстанавливать" или "копировать" или "перемещать" сервер ContinerOS в любое место независимо от

  • Обновления ядра
  • Аппаратные драйверы
  • Дисковые разделы (/etc/fstab так далее.)
  • Конфигурации GRUB/UEFI

или любые другие типичные глюки интеграции!

Просто будьте в курсе версий ядра хоста.

Резервное копирование

каталог ваших машин ./machines
каталог резервного копирования вашей машины ./machines-bak
каталог образов вашей машины arch1

cd ~/machines/
sudo tar -cpf ~/machines-bak/arch1.tar arch1 --totals

восстановление

cd ~/machines/
sudo tar -xpf ~/machines-bak/arch1.tar --totals

Инструменты резервного копирования

tar приведенные выше команды могут быть не самым умным методом, однако это проверенный надежный метод без каких-либо дополнительных установок инструмента. Часто просто лучше всего.

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

Синхронизация и резервное копирование программ @ArchWIKI

Git base bup выглядит хорошо и ново.

Что вы можете рассмотреть, чтобы удалить из контейнера ОС

Любые аппаратно-зависимые факторы, такие как:

  • ядра Linux с различными драйверами
  • /etc/fstab
  • NetworkManager.service из systemd

Лицензия MIT

Другие вопросы по тегам