컨테이너: 중얼거림을 시작할 수 없습니다(그놈 세션이 있는 헤드리스 Wayland 합성기로서).

컨테이너: 중얼거림을 시작할 수 없습니다(그놈 세션이 있는 헤드리스 Wayland 합성기로서).

내가 하고 싶은 일은

  • 호스트 세션 관리자 인터페이스 "내부"를 노출하지 않고 작동하는 컨테이너(OCI 컨테이너 선호)
  • Wayland 컴포지터 실행
  • 모든 UI 요소를 포함하는 >= gnome40 세션이 있습니다.
  • RDP 또는 VNC를 통한 원격 디스플레이 및 상호 작용 허용

따라서 이들은 각각 도구로 규정/권장됩니다.

  • podman
  • mutter(이것이 Gnome이 원하는 것입니다)
  • gnome-shell
  • gnome-remote-desktop, Gnome42와 함께 제공

내가 현재 하고 있는 일은

podman run -it --rm -p 9999:9999 ubuntu:22.04
#           ^---------------------------------Interactive
#               ^-----------------------------Don't keep state after finishing
#                    ^------------------------We'll need a port fwd into the container for RDP/VNC
#                                ^------------Not a great fan of Canonical, but 22.04 brings Gnome42

root@container$> apt update; apt install -y mutter gnome-remote-desktop gnome-shell
[… [success]]

root@container$> mutter --no-x11 --wayland --headless --virtual-monitor 1600x1000 
mutter-Message: 10:30:35.151: Running Mutter (using mutter 42.0) as a Wayland display server
mutter-Message: 10:30:35.191: Created surfaceless renderer without GPU
mutter-Message: 10:30:35.205: Disabling DMA buffer screen sharing (not hardware accelerated)
mutter-Message: 10:30:35.205: Added virtual monitor Meta-0

(mutter:13413): mutter-WARNING **: 10:30:35.211: WL: error: XDG_RUNTIME_DIR not set in the environment
(mutter:13413): mutter-ERROR **: 10:30:35.211: Failed to create socket
root@container$> export XDG_RUNTIME_DIR=/run/user/0/ ; mkdir -p ${XDG_RUNTIME_DIR}
root@container$> mutter --no-x11 --wayland --headless --virtual-monitor 1600x1000 
mutter-Message: 10:30:47.657: Running Mutter (using mutter 42.0) as a Wayland display server
mutter-Message: 10:30:47.698: Created surfaceless renderer without GPU
mutter-Message: 10:30:47.712: Disabling DMA buffer screen sharing (not hardware accelerated)
mutter-Message: 10:30:47.712: Added virtual monitor Meta-0
mutter-Message: 10:30:47.717: Using Wayland display name 'wayland-0'
**
mutter:ERROR:../src/wayland/meta-wayland.c:379:set_gnome_env: assertion failed: (session_bus)
Bail out! mutter:ERROR:../src/wayland/meta-wayland.c:379:set_gnome_env: assertion failed: (session_bus)

[1]+  Aborted                 (core dumped) mutter --sm-disable --no-x11 --wayland --headless --virtual-monitor 1600x1000

여기서 어디로 가야할지 잘 모르겠습니다. gnome Shell을 직접 시작해야 합니까?

# fresh container to avoid any conflicts
root@7396d1bb8693:/> gnome-shell --no-x11 --wayland --headless --virtual-monitor 1600x1000
mutter-Message: 10:45:06.276: Running GNOME Shell (using mutter 42.0) as a Wayland display server
mutter-Message: 10:45:06.323: Created surfaceless renderer without GPU
mutter-Message: 10:45:06.337: Disabling DMA buffer screen sharing (not hardware accelerated)
mutter-Message: 10:45:06.338: Added virtual monitor Meta-0
Failed to connect to session bus: Cannot autolaunch D-Bus without X11 $DISPLAYroot@7396d1bb8693:/>

아니요.

  • 권한이 없는 컨테이너에서 헤드리스 그놈 wayland 세션을 시작하는 방법은 무엇입니까?

답변1

나는 GitHub Actions에서 다음을 수행했습니다(OCI처럼 권한이 없는지 확실하지 않으므로 제대로 작동하지 않을 수도 있습니다).

  run: |
    sudo apt-get install mutter dbus-x11;
    dbus-launch --auto-syntax > dbus-env;
    source dbus-env;
    mutter --no-x11 --headless --virtual-monitor 1920x1080 &

그러면 source dbus-env모니터에 연결된 추가 프로세스에 대한 올바른 환경 변수가 설정됩니다.

관련 정보