6.4. 使用命令行打开虚拟机串口控制台
通过使用 virsh console
命令,可以连接到虚拟机(VM)的串行控制台。
这在虚拟机中很有用:* 不提供 VNC 协议,因此没有为 GUI 工具提供视频显示。
- 没有网络连接,因此无法使用 SSH 进行交互。
先决条件
主机上的 GRUB 引导装载程序必须配置为使用串口控制台。要进行验证,请检查主机上的
/etc/default/grub
文件是否包含GRUB_TERMINAL=serial
参数。sudo grep GRUB_TERMINAL /etc/default/grub
$ sudo grep GRUB_TERMINAL /etc/default/grub GRUB_TERMINAL=serial
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 虚拟机必须配有一个串口控制台设备,如
console type='pty'
。要进行验证,请执行以下操作:virsh dumpxml vm-name | grep console
# virsh dumpxml vm-name | grep console <console type='pty' tty='/dev/pts/2'> </console>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 虚拟机必须在内核命令行中配置串口控制台。要验证这一点,虚拟机上的
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
# 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有在虚拟机中正确设置串口控制台,请使用 virsh 控制台连接到虚拟机,请将您连接到无响应的客户端控制台。但是,您仍然可以使用 Ctrl+] 快捷键退出无响应的控制台。
要在虚拟机上设置串行控制台,请执行以下操作:
在虚拟机上启用
console=ttyS0
内核选项:grubby --update-kernel=ALL --args="console=ttyS0"
# grubby --update-kernel=ALL --args="console=ttyS0"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 清除可能会阻止更改生效的内核选项。
grub2-editenv - unset kernelopts
# grub2-editenv - unset kernelopts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 重启虚拟机。
-
对于 AMD64 和 Intel 64:
必须启用
serial-getty@<console-name>
服务。例如,在 AMD64 和 Intel 64 上:systemctl status serial-getty@ttyS0.service
# 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)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
在您的主机系统上,使用
virsh console
命令。如果libvirt
驱动程序支持安全控制台处理,以下示例连接到 guest1 虚拟机:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 您还可以使用与标准命令行界面相同的方法与 virsh 控制台互动。