6.4. 使用命令行打开虚拟机串行控制台
通过使用 virsh console 命令,可以连接到虚拟机(VM)的串行控制台。
这在虚拟机:* 不提供 VNC 协议,因此不能为 GUI 工具提供视频显示时很有用。
- 没有网络连接,因此无法使用 SSH 进行交互。
先决条件
主机上的 GRUB 引导装载程序必须配置为使用串口控制台。要进行验证,请检查主机上的
/etc/default/grub文件是否包含GRUB_TERMINAL=serial参数。$ sudo grep GRUB_TERMINAL /etc/default/grub GRUB_TERMINAL=serial虚拟机必须配有一个串口控制台设备,如
console type='pty'。要进行验证,请执行以下操作:# virsh dumpxml vm-name | grep console <console type='pty' tty='/dev/pts/2'> </console>虚拟机必须在内核命令行中配置串口控制台。要验证这一点,虚拟机上的
cat /proc/cmdline命令输出应包含 console=<console-name>,其中 <console-name> 是特定的架构:-
对于 AMD64 和 Intel 64:
ttyS0 对于 ARM 64:
ttyAMA0注意此流程中的以下命令使用
ttyS0。# cat /proc/cmdline BOOT_IMAGE=/vmlinuz-6.12.0-0.el10_0.x86_64 root=/dev/mapper/rhel-root ro console=tty0 console=ttyS0,9600n8 rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb如果没有在虚拟机中正确设置串口控制台,请使用 virsh 控制台连接到虚拟机,请将您连接到无响应的客户端控制台。但是,您仍然可以使用 Ctrl+] 快捷键退出无响应的控制台。
要在虚拟机上设置串行控制台,请执行以下操作:
在虚拟机上启用
console=ttyS0内核选项:# grubby --update-kernel=ALL --args="console=ttyS0"清除可能会阻止更改生效的内核选项。
# grub2-editenv - unset kernelopts- 重启虚拟机。
-
对于 AMD64 和 Intel 64:
必须启用
serial-getty@<console-name>服务。例如,在 AMD64 和 Intel 64 上:# systemctl status serial-getty@ttyS0.service ○ serial-getty@ttyS0.service - Serial Getty on ttyS0 Loaded: loaded (/usr/lib/systemd/system/serial-getty@.service; enabled; preset: enabled)
流程
在您的主机系统上,使用
virsh console命令。如果libvirt驱动程序支持安全控制台处理,则以下示例连接到 guest1 虚拟机:# virsh console guest1 --safe Connected to domain 'guest1' Escape character is ^] Subscription-name Kernel 3.10.0-948.el7.x86_64 on an x86_64 localhost login:- 您还可以使用与标准命令行界面相同的方法与 virsh 控制台互动。