如何在 Debian Jessie 中配置自动登录?

如何在 Debian Jessie 中配置自动登录?

我有一台装有 Debian Jessie 的无头计算机 (TS-7680),我可以通过 Putty 命令行访问它。该计算机没有任何 GUI,只能通过命令行访问。它将被放入现场,并带有一个程序,如果临时断电,需要自动重新启动。

我知道如何让程序自动运行。但是,我无法通过登录。每次启动计算机时,都会提示我进行 root 登录。我在这台计算机上没有密码。启动代码之后,如下所示:

Debian GNU/Linux 8 ts7680 ttyAMA0

ts7680 login:

此时,我必须键入root才能进入命令提示符root@ts7680:~#

有谁知道如何自动登录吗?我用谷歌搜索了所有内容,但找不到答案。我试过了这个解决方案没有运气。

答案1

假设 systemd 将ttyAMA0串行端口视为与 PC 上相同的方式ttyS0,您需要编辑[email protected].

(您可以检查是否systemctl status serial-getty@ttyAMA0显示它处于活动状态。)

基本版本在其中,我们在其中找到启动 getty 的命令:/lib/systemd/system/[email protected]

ExecStart=-/sbin/agetty --keep-baud 115200,38400,9600 %I $TERM

为服务创建一个覆盖文件来启动agetty--autologin root创建目录,并在其中调用一个包含以下内容的文件:/etc/systemd/system/[email protected]override.conf

[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin root --keep-baud 115200,38400,9600 %I $TERM

systemctl edit [email protected]将有助于做到这一点。

请注意,作为参数传递的终端类型agetty需要与您的串行终端的实际类型相匹配。多年来,这一直是 systemd 中各种方法的主题。它以各种方式硬连线到内核/引导加载程序vt102并(间接)从内核/引导加载程序继承。当前的方法(截至 2020 年)在如何做出决策方面相当复杂。

然而,它最终只会选择来自三个值linuxvt220以及内核/引导加载程序为 Linux 控制台所说的任何内容。第一个方法永远不适合任何真实的终端,甚至不可能与串行电缆上的终端仿真器大致匹配。第二种不太可能是正确的,尤其是在颜色方面。 两者都不与 PuTTY 匹配,正确的终端类型是putty( 或putty-256color)。第三个可能也不会putty;除非您已将 Linux 重定向/dev/console到串行终端和 PuTTY,使用一致的控制台终端类型正确重新配置引导加载程序。

TERM因此,为了获得最佳结果,您还需要在该覆盖文件中设置环境变量:

Environment=TERM=putty-256color

然后重新加载 systemd,我们可以检查新配置是否到位:

# systemctl daemon-reload
# systemctl cat serial-getty\@ttyAMA0 | grep Exec

(我们应该在最后一行看到新命令ExecStart。)

如果您只想在按键后自动登录,请将-p或添加--login-pauseagetty命令行。


您链接的页面讨论了在虚拟控制台上配置自动登录:它们是通过配置的[email protected],并且使用的命令行agetty有点不同(似乎只是缺少该--keep-baud选项)。在这种情况下,我们会使用for 来代替。/etc/systemd/system/[email protected]/override.conftty1

Ask Ubuntu 中的答案有关覆盖 systemd 配置的更多详细信息。


在使用 sysvinit 而不是 systemd 的系统上,您需要添加/修改与串口对应的行/etc/inittab

T0:23:respawn:/sbin/getty -L ttyAMA0 --autologin root 38400 vt100

相关内容