首页/系统/Linux 运维命令速查/systemctl getty 与串口控制台
systemd 与服务42 条

systemctl getty 与串口控制台

getty@tty1、serial-getty@ttyS0 管理控制台登录:不登录也要留的后门通道,云主机串口/VNC 救援依赖它们。

Linux 运维命令速查系统更新于 2026-10-13

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@ttyAMA0ARM 平台串口部分 ARM 服务器使用
autovt@tty1自动虚拟终端由 logind 按需拉起
云主机串口控制台打不开时,先确认 serial-getty@ttyS0 是否 active,再检查 grub 里是否有 console=ttyS0 这类参数,两者缺一都只能看到单方向输出。
只启用 getty 而不配内核 console= 参数时,登录提示可能有了,但看不到内核早期日志;救援场景下缺少的往往正是这段信息。
串口设备名随平台不同:x86 常见 ttyS0,ARM 常见 ttyAMA0,还有 tty0 这类虚拟终端。套错设备名会表现为完全没有输出,先确认硬件平台再写单元名。

易错点

  • 只在 systemd 侧启用 getty 而忽略内核 console= 参数:无法看到早期启动日志,救援时缺少关键信息
  • 串口设备名套用错平台:单元启动成功但控制台没有任何输出,容易误判成硬件故障
  • 为了「安全」直接禁用全部 getty:一旦网络配置出错就没有本地登录通道
  • 在物理机上不做串口登录测试:真正需要救援时才发现通道从未验证过

数据来源与参考

  • man 5 systemd-getty-generator
  • man 8 agetty

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌