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#修改現存單元文件

注意:

參考資料[編輯 | 編輯原始碼]