virsh console 串口控制台
virsh console 通过虚拟串口登录 guest 的控制台,不依赖 guest 的网络,是服务器无图形界面时的主要救援通道。它需要 guest 侧配合:内核参数里带 console=ttyS0,并且启用串口上的 getty 服务,否则连上去只有空屏。网络不通、SSH 连不上、防火墙改错时,这条通道往往是最快的恢复路径。
基本信息
| 进入控制台 | virsh console vm1(可加 --force 强制接管) |
|---|---|
| 退出按键 | Ctrl+](停在 Escape character 提示后按该组合键) |
| guest 内核要求 | 启动参数含 console=ttyS0,115200 |
| guest 服务要求 | systemctl enable --now serial-getty@ttyS0 |
| 适用场景 | 无网络、无图形、启动阶段排障 |
典型使用场景
- 网络配置改错导致失联,从串口进去改回配置
- SSH 服务起不来或安全组放行遗漏时的应急登录
- 查看启动阶段输出,定位卡在哪个服务或内核阶段
- 进入单用户模式修复文件系统或重置 root 密码
- 云主机未提供图形界面时执行系统级维护
串口控制台准备与进入
串口控制台准备与进入
# guest 内执行:启用串口登录服务
sudo systemctl enable --now serial-getty@ttyS0
# 同时在 grub 内核命令行追加 console=ttyS0,115200
# 宿主侧进入:
virsh console vm1
# 退出:Ctrl+]进去之后没反应的排查
| 现象 | 常见原因 | 处理 |
|---|---|---|
| 一直空屏 | guest 未启用串口 getty | 启用 serial-getty@ttyS0 |
| 看到启动日志但无登录提示 | 内核参数缺 console= | 添加后重启 guest |
| 输入无回显 | 串口被其他会话占用 | 退出其他 console 会话 |
| 连接立即断开 | 域已停止或被关机 | 先确认域状态 |
停在 Escape character is ^] 不是故障:按 Ctrl+] 即可退出控制台返回宿主,退出不会影响 guest 运行。
对运行中的域,console 通常只允许一个有效会话:多个人同时进入会互相看到对方输出,救援时段要有约定,避免争抢。
把串口 getty 与内核 console 参数写进基础镜像,之后由这个镜像创建的虚机天然带一条不依赖网络的救援入口;只在个别虚机上临时配置,往往在真出故障时才发现缺失。
控制台输出不会回看:需要保留启动日志时,同时开启内核日志落盘或平台侧采集,退出前把关键输出复制出来,之后再想找回同一段输出只能重启复现。