Systemd-nspawn은 컨테이너를 시작한 다음 자동으로 lxsession을 실행합니다.

Systemd-nspawn은 컨테이너를 시작한 다음 자동으로 lxsession을 실행합니다.

컨테이너에서 두 번째 Linux 루트 파일 시스템을 시작하기 위해 systemd-nspawn을 사용하는 스크립트를 만들고 있습니다.

스크립트는 현재 다음 줄을 사용하여 컨테이너를 시작합니다. systemd-nspawn -b --machine virtualdesktop -D "/mnt/virtualdesktop" 호스트와 컨테이너는 Debian을 기반으로 하며 systemd를 사용합니다. (정확히는 Raspbian Buster)

게스트가 올바르게 시작하고 로그인하면 쉘이 제공됩니다.
그러나 그것이 내가 원하는 전부는 아닙니다. 스크립트는 게스트의 그래픽도 로드해야 합니다. 호스트는 Xepyr 창을 열고 두 번째 X 디스플레이를 실행합니다 :1. 그러면 게스트는 디스플레이에서 lxsession:1을 실행합니다.

게스트 셸에 다음 명령을 입력하면 이 작업을 수동으로 쉽게 수행할 수 있습니다. DISPLAY=:1 lxsession -s LXDE-pi -e LXDE그러나이것이 제가 도움이 필요한 것입니다:이 명령을 실행하세요자동으로, 운영자가 게스트 비밀번호를 입력하고 lxsession 명령을 입력할 필요가 없습니다.

나는 시도했다:

  • 다음과 같이 원하는 lxsession명령을 명령 끝에 추가 하지만 아무 일도 일어나지 않습니다.systemd-nspawnsystemd-nspawn -b --machine virtualdesktop -D "/mnt/virtualdesktop" 'DISPLAY=:1 lxsession -s LXDE-pi -e LXDE'
  • systemd-run권장대로 사용여기. 컨테이너가 실행되는 동안 다음 명령을 실행합니다. systemd-run --machine virtualdesktop "/usr/binlxsession -s LXDE-pi -e LXDE"그러나 Xephyr는 아무 것도 표시하지 않고 저널 CTL이 보고합니다.Failed to execute command: No such file or directory
    Failed at step EXEC spawning /usr/bin/lxsession -s LXDE-pi -e LXDE: No such file or directory

답변1

명령에서 따옴표를 제거하고 다음 -E, --setenv옵션을 사용하십시오.

systemd-nspawn --machine virtualdesktop -D "/mnt/virtualdesktop" -E DISPLAY=:1 lxsession -s LXDE-pi -e LXDE

또는

systemd-run --machine virtualdesktop -E DISPLAY=:1 /usr/bin/lxsession -s LXDE-pi -e LXDE

파일을 실행하려고 시도 'DISPLAY=:1 lxsession -s LXDE-pi -e LXDE'하고 다음을 수행합니다 '/usr/bin/lxsession -s LXDE-pi -e LXDE'.

systemd-run [OPTIONS...] COMMAND [ARGS...]
systemd-nspawn [OPTIONS...] [COMMAND [ARGS...]]

관련 정보