getty - Arch Linux 中文维基

跳至內容

# getty

出自 Arch Linux 中文维基

翻譯狀態：

- 本文（或部分內容）譯自 Getty，最近一次同步於 2018-08-31，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

相關文章

- Display manager

getty 是管理終端線路及其所連終端的程序的通用名稱。其目的是保護系統，防止未經授權的訪問。通常，每個 getty 進程由 systemd 啟動，一個進程管理一條終端線路。

## 安裝

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/[失效連結 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 上的 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)

分類：​

- 啟動過程
- Linux 控制台
- 包含失效連結的頁面

getty
新增話題