# getty (简体中文)

From ArchWiki
Jump to navigation Jump to search
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.

相关文章

- 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 (简体中文)#修改默认运行级别/目标[断开的链接：无效的部分]
- 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