Systemd-nspawn启动容器,然后自动运行lxsession;这个怎么做?

Systemd-nspawn启动容器,然后自动运行lxsession;这个怎么做?

我正在制作一个脚本,它使用 systemd-nspawn 来启动容器中的第二个 Linux 根文件系统。

该脚本当前使用此行来启动容器: systemd-nspawn -b --machine virtualdesktop -D "/mnt/virtualdesktop" 主机和容器基于 Debian 并使用 systemd。 (确切地说是 Raspbian Buster)

来宾正确启动并登录后,给我一个 shell。
但这不是我想要的全部 - 脚本还应该加载来宾的图形。主机打开了一个 Xephyr 窗口,在 上运行第二个 X 显示:1。然后,访客将在显示屏上运行 lxsession:1。

通过在来宾 shell 中键入以下命令可以轻松手动执行此操作:DISPLAY=:1 lxsession -s LXDE-pi -e LXDE,但是这是我需要帮助的:运行该命令自动地,不需要操作员输入访客密码并输入 lxsession 命令。

我努力了:

  • 将所需的lxsession命令附加到命令末尾systemd-nspawn,如下所示: systemd-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 不显示任何内容并且journalctl 报告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...]]

相关内容