我正在使用 systemd-nspawn 启动 Linux 容器并将其 lxsession 加载到 VNC 样式的嵌套 X 服务器中。 (Xephyr)
我创建了一个脚本去做这个。该脚本的主要问题之一是在通过 /etc/profile 启动 GUI 之前需要登录到容器的控制台。
这是我的问题:我正在寻找一种自动启动图形应用程序的方法,而无需首先要求用户手动登录。我试过了:
- 让控制台自动登录使用lightdm。这不起作用,因为 lightdm 总是无法启动。
- 寻找一个可以在前台运行lxsession的自动启动方法。我只知道/etc/rc.local。它有点工作,但是环境变量全乱了,并且有一个对话框显示“没有 PID XXX 的会话”
- 让脚本输入用户名和密码。坏主意,因为许多容器使用默认“raspberry”以外的密码。
答案1
要为 systemd-nspawn 容器配置自动登录,请覆盖 console-getty.service:
# /etc/systemd/system/console-getty.service.d/override.conf [Service] ExecStart= ExecStart=-/sbin/agetty --noclear --autologin username --keep-baud console 115200,38400,9600 $TERM
如果
machinectl login my-container
使用方法访问容器,还要添加--autologin USERNAME
到[email protected]
管理pts/[0-9]
伪 ttys 的模板中:# /etc/systemd/system/[email protected]/override.conf [Service] ExecStart= ExecStart=-/sbin/agetty --noclear --autologin username --keep-baud pts/%I 115200,38400,9600 $TERM
我在实践中使用过这个NS盒,并且它运行得很好,有一个问题:agetty 还将继续启动一个 shell,因此您的 bashrc/zshrc 将运行,并且您可能会在运行 nspawn 的控制台上打印出一个丑陋的提示。这不是一个破坏交易的事情,但值得注意的是......