getty (简体中文) - ArchWiki

# getty (简体中文)

From ArchWiki
Jump to navigation Jump to search

相关文章

- Display manager (简体中文)

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

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

## 安装

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

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

agetty 是 Arch Linux 中默认的 getty 程序，它是 util-linux 包的一部分。它在等待登录时修改 TTY 设置，使得换行符不会转换为 CR-LF，否则会使打印到控制台的消息产生“阶梯效应”。Agetty 管理着虚拟控制台，Arch Linux 中默认提供六个虚拟控制台。一般按 `Ctrl+Alt+F1` 到 `Ctrl+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 上的 agetty 的 `TTYVTDisallocate` 参数，并保持全局服务文件 `/usr/lib/systemd/system/getty@.service` 不变。可参阅 Systemd (简体中文)#修改现存单元文件。

注意:

- 确保从 内核参数 中移除了 `quiet`。
- KMS 晚启动可能会造成部分早期启动信息丢失。请参阅 Kernel mode setting (简体中文)#KMS 早启动 或 Kernel mode setting (简体中文)#禁用 KMS。

## 参考资料

- Systemd (简体中文)#修改默认运行级别/目标[broken link: invalid section]
- The TTY demystified
- Wikipedia:Tty (unix)

Categories:

- Boot process (简体中文)
- Linux console (简体中文)

Hidden categories:

- Pages or sections flagged with Template:Style
- Pages with broken section links