使用运行基于 systemd 的容器的 LXC,可以自动进入容器上的控制台会话。通过创建并修改/etc/systemd/system/console-getty.service
为具有ExecStart
如下所示的行:
ExecStart=-/sbin/agetty --noclear -a <username> -s console 115200,38400,9600
可以跳过登录会话并直接进入以特定用户身份运行的会话。
我希望机器在该会话结束时自动停止。有没有办法在 systemd 或agetty 中配置它?作为参考,主机是 Ubuntu 12.04,容器运行的是最新的 Arch 基础。
答案1
答案可以在console-shell.service
:
ExecStopPost=-/bin/systemctl poweroff
顺便说一句,您不需要复制console-getty.service
即可进行这些修改。请尝试以下操作:
# rm /etc/systemd/system/console-getty.service
# mkdir /etc/systemd/system/console-getty.service.d
# cat > /etc/systemd/system/console-getty.service.d/custom.conf << EOF
[Service]
ExecStart=
ExecStart=-/sbin/agetty --noclear -a <username> -s console 115200,38400,9600
ExecStop=-/bin/systemctl poweroff
EOF
# systemctl daemon-reload
第一个空ExecStart=
条目清除从 继承的值/lib/systemd/system/console-getty.service
。有关此自定义 systemd 单元文件的方法的更多信息,请参阅系统单元(5):
foo.service
目录可能与单元文件一起foo.service.d/
存在。该目录中所有带有后缀的文件.conf
将在文件本身解析后进行解析。这对于更改或添加单元的配置设置非常有用,而无需修改其单元文件。确保包含的文件在任何指令之前都有适当的节标题。