getty 与串口控制台
getty 负责在终端设备上提供登录提示,systemd 把每个终端封装成一个实例单元:getty@tty1 是本地虚拟终端,serial-getty@ttyS0 是串口控制台。它们是「不经过网络也能登录」的后门通道,云主机的串口控制台与救援模式都依赖它们。这类单元平时不显眼,出问题时却往往是最关键的一根救命绳。
基本信息
| 所属 | systemd 实例单元,配合 util-linux 的 agetty |
|---|---|
| 常见单元 | getty@tty1、serial-getty@ttyS0、getty@tty2 等 |
| 查看方式 | systemctl status getty@tty1 或 list-units 'getty*' |
| 依赖条件 | 串口登录还需内核 console= 参数配合 |
典型使用场景
- 确认本地虚拟终端是否可用,物理机断网时靠它登录
- 云主机串口控制台打不开,检查 serial-getty 是否在运行
- 为物理机启用串口控制台做远程救援
- 排查启动期没有登录提示的问题
- 批量核对实例上启用了哪些终端单元
- 内核早期日志与登录提示是否同时可见
常用示例
常用示例
systemctl status getty@tty1 --no-pager # 查看本地终端状态
systemctl start serial-getty@ttyS0 # 启动串口控制台登录
systemctl enable serial-getty@ttyS0 # 开机自动启用
systemctl list-units 'getty*' --all # 列出所有终端相关单元
systemctl list-units 'serial-getty*' --all | head # 只看串口终端
systemctl daemon-reload # 改动单元后重新加载
journalctl -u serial-getty@ttyS0 -n 20 # 看该单元日志常见单元与用途
| 单元 | 对应设备 | 用途 |
|---|---|---|
| getty@tty1 | 第一个虚拟终端 | 本地控制台登录 |
| getty@tty2 | 第二个虚拟终端 | 多终端并行登录 |
| serial-getty@ttyS0 | 串口 0 | 云主机串口控制台、物理机串口救援 |
| serial-getty@ttyAMA0 | ARM 平台串口 | 部分 ARM 服务器使用 |
| autovt@tty1 | 自动虚拟终端 | 由 logind 按需拉起 |
云主机串口控制台打不开时,先确认 serial-getty@ttyS0 是否 active,再检查 grub 里是否有 console=ttyS0 这类参数,两者缺一都只能看到单方向输出。
只启用 getty 而不配内核 console= 参数时,登录提示可能有了,但看不到内核早期日志;救援场景下缺少的往往正是这段信息。
串口设备名随平台不同:x86 常见 ttyS0,ARM 常见 ttyAMA0,还有 tty0 这类虚拟终端。套错设备名会表现为完全没有输出,先确认硬件平台再写单元名。