getty

来自 Arch Linux 中文维基

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

安装[编辑 | 编辑源代码]

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/[失效链接 2022-09-18 ⓘ] || 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#修改现存单元文件

注意:

参考资料[编辑 | 编辑源代码]