getty (简体中文)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

翻译状态:本文是 Getty翻译。上次翻译日期:2018-08-31。如果英文版本有所更改,则您可以帮助同步翻译。

getty 是管理终端线路及其所连终端的程序的通用名称。其目的是保护系统,防止未经授权的访问。通常,每个 getty 进程由 systemd 启动,一个进程管理一条终端线路。

安装

Tango-edit-clear.pngThis article or section needs language, wiki syntax or style improvements. See Help:Style for reference.Tango-edit-clear.png

Reason: TTY 设置和“台阶效应”在这里没有涉及到。TTY 的默认数量可以移到 #添加额外的虚拟控制台 一节,因为它不依赖于 agetty。 (Discuss in Talk:Getty (简体中文))

agetty 是 Arch Linux 中默认的 getty 程序,它是 util-linux 包的一部分。它在等待登录时修改 TTY 设置,使得换行符不会转换为 CR-LF,否则会使打印到控制台的消息产生“阶梯效应”。Agetty 管理着虚拟控制台,Arch Linux 中默认提供六个虚拟控制台。一般按 Ctrl+Alt+F1Ctrl+Alt+F6 来访问它们。

其他可选替代包括:

  • mingetty — 一个允许自动登录的最小化 getty。
mingettyAUR || mingettyAUR
  • fbgetty — 类似于 mingetty,支持帧缓冲。
http://projects.meuh.org/fbgetty/ || fbgettyAUR
  • mgetty — 在 Unix 下处理调制解调器各个方面功能的程序。
http://mgetty.greenie.net/ || mgettyAUR

添加额外的虚拟控制台

打开 /etc/systemd/logind.conf 文件并将 NAutoVTs=6 设置为你想要在启动时得到的虚拟控制台数量。

如果你想临时获取一个控制台,可以为所需的 TTY 启动一个 getty 服务,执行:

$ systemctl start getty@ttyN.service

自动登录到虚拟控制台

配置自动登录要使用 systemd 的 附加代码片段 (drop-in snippet) 功能来重写传递给 agetty 的默认参数。

虚拟控制台和串口控制台的配置是不同的。大多数情况下,你应该是想在虚拟控制台下设置自动登录(这种控制台的设备名称为 ttyN,其中 N 是一个数字)。串口控制台的自动登录配置稍有不同,它们的设备名称类似于 ttySN,其中 N 是一个数字。

虚拟控制台

注意: 根据用户报告这种方法可能会影响系统休眠。

修改现存单元文件,可以手动创建下列附加文件,或执行 systemctl edit getty@tty1 并输入附加代码片段 (drop-in snippet) 的内容:

/etc/systemd/system/getty@tty1.service.d/override.conf
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username --noclear %I $TERM
提示: 默认 getty@.service 中的 Type=idle 选项将会推迟该服务的启动时间,直到所有任务(该单元的前置任务)已经完成,防止启动信息淹没了登录提示符。当 自动启动 X 时,可以通过添加 Type=simple附加代码片段 (drop-in snippet) 来立即启动 getty@tty1.service,因为此时 init 进程和 startx 都被 屏蔽 了输出,避免残留启动时的信息。

如果你想用 tty 而不是 tty1,请参阅 Systemd 常见问题

串口控制台

创建以下文件(及目录):

/etc/systemd/system/serial-getty@ttyS0.service.d/autologin.conf
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username -s %I 115200,38400,9600 vt102

Nspawn 控制台

要为 systemd-nspawn 容器配置自动登录,需要重写 console-getty 服务:

/etc/systemd/system/console-getty.service.d/override.conf
[Service]
ExecStart=
ExecStart=-/sbin/agetty --noclear --autologin username --keep-baud console 115200,38400,9600 $TERM

将引导消息保留在 tty1 上

默认情况下,Arch 会启动 getty@tty1 服务。该服务单元文件已经写入了 --noclear 参数,它可以阻止 agetty 清空屏幕。但是 systemd 会在启动该服务之前清空屏幕。要关闭这项特性,请创建 /etc/systemd/system/getty@tty1.service.d/noclear.conf 文件:

/etc/systemd/system/getty@tty1.service.d/noclear.conf
[Service]
TTYVTDisallocate=no

这将仅改写 TTY1 上的 agettyTTYVTDisallocate 参数,并保持全局服务文件 /usr/lib/systemd/system/getty@.service 不变。可参阅 Systemd (简体中文)#修改现存单元文件

注意:

参考资料