我正在制作一个脚本,它使用 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...]]