启动 systemd 容器 - 如何绕过控制台登录?

启动 systemd 容器 - 如何绕过控制台登录?

我正在使用 systemd-nspawn 启动 Linux 容器并将其 lxsession 加载到 VNC 样式的嵌套 X 服务器中。 (Xephyr) 在此输入图像描述
我创建了一个脚本去做这个。该脚本的主要问题之一是在通过 /etc/profile 启动 GUI 之前需要登录到容器的控制台。

这是我的问题:我正在寻找一种自动启动图形应用程序的方法,而无需首先要求用户手动登录。我试过了:

  • 让控制台自动登录使用lightdm。这不起作用,因为 lightdm 总是无法启动。
    在此输入图像描述
  • 寻找一个可以在前台运行lxsession的自动启动方法。我只知道/etc/rc.local。它有点工作,但是环境变量全乱了,并且有一个对话框显示“没有 PID XXX 的会话”
  • 让脚本输入用户名和密码。坏主意,因为许多容器使用默认“raspberry”以外的密码。

答案1

来自 Arch 维基

要为 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 的控制台上打印出一个丑陋的提示。这不是一个破坏交易的事情,但值得注意的是......

相关内容