해결 방법을 찾다가 비슷한 글을 많이 봤는데 해결 방법이 없어 이렇게 글을 올립니다.
문제는 vncserver
터미널이나 스크립트에서 명령을 실행하여 세션을 시작하여 GNOME 데스크탑을 생성할 수 있다는 것입니다. 그러나 부팅 시 스크립트나 systemd를 통하지 않고 시스템에 ssh를 연결하거나 시스템에서 직접 연결할 때만 가능합니다. ~/.vnc/xstartup
스크립트 는 다음과 같습니다 .
#!/bin/sh
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey -cursor_name left_ptr
xsetroot -solid grey left_ptr
vncconfig -iconic &
dbus-launch --exit-with-session /usr/bin/gnome-session &
세션을 시작하는 명령은 다음과 같습니다 vncserver :1 -localhost no -geometry 2560x1440 -depth 24
.
ssh
모든 것이 컴퓨터 자체에서 완벽하게 작동합니다. 직접 터미널 명령을 사용하거나 이를 포함하는 스크립트를 통해 말이죠.
하지만시작 스크립트로 사용하면 동일한 스크립트가 실패합니다., 그리고systemd를 통해 동일한 명령을 실행하면 실패합니다.. 글쎄, "실패"는 강력합니다. 결과적으로 반기능적인 GNOME 데스크탑 세션이 발생합니다. 즉, 내가 액세스할 수 있는 세션이 시작되고 해당 세션이 내 시작 애플리케이션(예: 및 ) vnc
을 시작했습니다 . 하지만gnome-terminal
nautilus
기본 데스크탑제대로 시작되지 않아서 창을 이동할 수 없고(종료할 수는 있지만) 상단 표시줄도 없으며 바탕 화면이 있어야 할 위치에 "안돼! 문제가 발생했습니다!"라는 오류가 표시됩니다.
내 생각에는 이것이 시작 시 작업이 어떻게 실행되는지와 관련이 있는 것 같지만 ~/.vnc/xstartup
알 수는 없습니다. tigervnc
그놈과 함께 작업하기에 충분해 보이는 유일한 제품이기 때문에 이를 사용하고 있습니다 .
답변1
VNC의 예전에는 단일 세션에 대해 여러 클라이언트에 서비스를 제공하는 VNC 서비스를 실행했습니다(세션에는 로그인이 필요하지 않았으며 VNC에서 로컬 사용자로 로그인할 수 있었습니다). 세상 모든 것이 밝고 좋습니다. (나는 이런 일을 하는 방식에 안주했고 처음에는 변화를 받아들이기 어렵다고 느꼈습니다.)
그런 다음 사용자와 관리자는 여러 사용자가 VNC를 사용하여 VNC를 통해 독립적인 세션을 실행할 수 있기를 원합니다. 이렇게 하려면 VNC 서버 소프트웨어의 별도 인스턴스를 실행해야 합니다. Systemd는 템플릿 서비스 단위 파일을 제공하여 이를 지원합니다. 이를 통해 하나의 VNC 서버 단위 파일이 서비스의 여러 인스턴스를 제공할 수 있으며 서비스를 실행/사용하는 사용자의 사용자 이름이 매개변수화됩니다. "서비스 템플릿"을 참조하십시오.https://www.man7.org/linux/man-pages/man5/systemd.service.5.html.
TigerVNC 서버와 함께 제공되는 템플릿 서비스 단위 파일을 사용해야 합니다(새 복사본은 다음 위치에 있어야 함)./lib/systemd/시스템/[이메일 보호됨]). 그러면 각 사용자는 필요할 때 서비스 인스턴스를 시작할 수 있습니다. 이로 인해 사용자는~/.vnc/passwd그리고~/.vnc/xstartup서비스 인스턴스를 위해.
이렇게 하면 원하는 "부팅 시" 기능이 다소 방해되지만(부팅 시 다양한 서비스를 활성화할 수 있지만 해당 포트 번호는 변경될 수 있음) 어쨌든 SSH를 통해 VNC 세션을 전달해야 합니다(VNC는 안전하지 않기 때문입니다. )