session-c3.scope는 스냅 cgroup 22.04 가상 데스크탑(nomachine)이 아닙니다.

session-c3.scope는 스냅 cgroup 22.04 가상 데스크탑(nomachine)이 아닙니다.

nomachine 가상 데스크탑이나 x2go에서 시작할 때 Ubuntu의 스냅 앱은 오류를 발생시키고 실행되지 않습니다. 이는 대부분 제한된 스냅에만 적용됩니다.

nomachine 가상 데스크톱은 기본 nomachine 데스크톱 공유 클라이언트가 아닌 nomachine 워크스테이션 서버 또는 기타 터미널 서버 스타일 제품과 연결됩니다. 저는 x2go를 사용하지 않지만 사용자들이 동일한 문제를 보고하므로 가상 데스크톱도 공유하고 있는 것 같습니다.

알려진 해결 방법은 cgroups v2를 비활성화하여 스냅 샌드박싱을 변경하거나 DBUS_SESSION_BUS_ADDRESS의 일반 값을 수동으로 시뮬레이션하는 것입니다. 첫 번째는 cgroups v2가 최신 Linux 경험의 큰 부분을 차지하기 때문에 간단하지만 극적이며, 두 번째 솔루션은 여러 사용자가 침입할 수 있는 해킹입니다.

nomachine 또는 x2go가 세션을 시작할 때 DBUS_SESSION_BUS_ADDRESS가 왜 잘못된지 모르겠습니다. 이러한 원격 액세스 앱을 사용하여 가상 데스크톱 세션에 액세스하는 경우 기존 디스플레이 관리자가 관리하는 로그인이 없습니다. Nomachine은 로그인 자체를 수행한 다음 그래픽 세션을 시작합니다. 나는 x2go가 같은 일을 한다고 가정합니다. DBUS_SESSION_BUS_ADDRESS에 예상치 못한 값이 발생하는 코드 경로에 약간의 차이가 있습니다. 내 생각에는 시스템 세션 시작 논리의 일부가 nomachine 또는 x2go에 의해 호출되지 않는 것 같습니다. 하지만 나로서는 이해하기 어려웠다. 나는 Linux 로그인이 어떻게 작동하는지에 대해 기본 지식이 없으며 내가 이해할 수 있는 문서를 찾을 수 없다는 것을 깨달았습니다.

(제 생각엔 노머신 데스크탑과 같이 물리적으로 존재하는 세션에 연결하는 "화면 공유" 세션은 디스플레이 관리자를 우회하지 않기 때문에 이런 문제가 없다고 생각합니다)

내 경험에는 nomachine이 있지만 x2go 사용자는 동일한 문제를 보고하고 있으며 동일한 해결 방법이 거기에서도 작동합니다.

xubuntu 또는 ubuntu에서 nomachine 가상 데스크탑을 사용하면 firefox와 같은 제한된 스냅을 시작할 수 없습니다(cgroups v2가 커널 매개변수를 통해 비활성화되지 않는 한).

터미널에서 시작할 때 발생하는 오류는 다음과 같습니다.

tim@ubuntu ~/Desktop $ firefox /user.slice/user-1000.slice/session-c3.scope는 스냅 cgroup이 아닙니다.

하지만 문제의 근본 원인 중 하나는
DBUS_SESSION_BUS_ADDRESS가 잘못 설정되었기 때문인 것 같습니다. 여기에는 값이 있지만 일반적인 디스플레이 관리자 세션과는 매우 다릅니다.

일반적인 Ubuntu 로그인에서는 다음과 같은 내용을 볼 수 있습니다.

DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus

하지만 손상된 nomachine 세션에서는 다음과 같은 내용을 볼 수 있습니다.

DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-ELpK0GVRdC,guid=877c270e0667562ac373497b63ebf31c

DBUS_SESSION_BUS_ADDRESS를 수동으로 설정하면 제한된 스냅이 작동합니다.

예를 들어, nomachine에서 다음과 같이 xfce를 시작하면:

DefaultDesktopCommand "env
    DBUS_SESSION_BUS_ADDRESS=unix:path=$XDG_RUNTIME_DIR/bus /usr/bin/startxfce4"

스냅이 작동합니다.

문제는 cgroups v2가 실행 중일 때 제한된 스냅에 대해서만 나타납니다. 따라서 제한된 스냅, 즉 샌드박스도 중요한 요소가 되어야 합니다. 이러한 이유로 많은 사람들은 이것이 스냅 버그라고 확신하지만 스냅 개발자들은 그렇지 않습니다.

DBUS_SESSION_BUS_ADDRESS의 이상한 값을 살펴보면 세션이 올바르게 설정되지 않은 것으로 결론을 내렸습니다. nomachine이 세션을 시작하는 방식은 디스플레이 관리자가 작동하는 방식과 달라야 합니다. DBUS_SESSION_BUS_ADDRESS는 그래픽 세션이 시작되기 전에 systemd 로그인 프로세스에서 설정됩니다.

또 다른 가능성은

DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-ELpK0GVRdC,guid=877c270e0667562ac373497b63ebf31c

완벽하게 유효한 값이지만 해당 스냅의 샌드박스는 이를 좋아하지 않습니다(제한되지 않은 스냅 앱에는 문제가 없음).

번거로움이 가장 적은 해결 방법은 cgroups v2를 비활성화하는 것이며 이는 nomachine이 권장하는 것입니다.

nomachine 또는 x2go가 로그인을 수행할 때 DBUS_SESSION_BUS가 다른 이유는 무엇입니까?

관련 정보