使用串口捕获 Xen Hypervisor 和内核消息
如何使用串口捕获 Xen hypervisor 和 dom0 内核消息
背景
某些 Xen 错误,例如崩溃的虚拟机或 Xen 本身崩溃,需要捕获 hypervisor 日志消息。捕获日志消息通常涉及通过串口将有问题的 Xen 机器连接到运行串口通信程序(如 minicom)的第二台机器。本文档介绍了如何配置 Xen 和 dom0 将日志消息输出到串口。涵盖了 grub1 和 grub2 的配置。还提供了 minicom 配置快速入门。
Grub1
对于使用 grub1 的系统(例如 SLE11 系列),请将“Xen Debug”条目添加到 /boot/grub/menu.lst 中定义的 GRUB 菜单。在 SLES11 SP4 Xen 主机上的一个示例条目是
title Xen Debug -- com1
root (hd0,1) kernel /boot/xen.gz vga=mode-0x317 crashkernel=512M@16M dom0_mem=4096M console=com1 com1=115200,8n1 loglvl=all guest_loglvl=all module /boot/vmlinuz-3.0.101-88.1-xen root=/dev/disk/by-id/ata-INTEL_SSDSC2BA200G3_BTTV314102LW200GGN-part2 quiet splash resume=/dev/disk/by-id/ata-INTEL_SSDSC2BA200G3_BTTV314102LW200GGN-part1 splash=silent showopts console=hvc0 vga=0x317 module /boot/initrd-3.0.101-88.1-xen
为了确保保留任何现有的 Xen 或内核参数,建议复制现有的 Xen 条目。在复制的条目上,更改标题,将 'console=com1 com1=115200,8n1 loglvl=all guest_loglvl=all' 添加到 Xen 参数,并将 'console=hvc0' 添加到 dom0 内核参数。
对 /boot/grub/menu.lst 所做的更改将在下次启动时生效。
Grub2
在 grub2 中,串口配置信息定义在 /etc/default/grub 中。Xen 参数附加到 GRUB_CMDLINE_XEN_DEFAULT,例如:
GRUB_CMDLINE_XEN_DEFAULT="dom0_mem4096M console=com1 com1=115200,8n1 loglvl=all guest_loglvl=all"
dom0 内核参数附加到 GRUB_CMDLINE_LINUX_XEN,例如:
GRUB_CMDLINE_LINUX_XEN="console=hvc0"
保存对 /etc/default/grub 的更改后,通过运行 'grub2-mkconfig -o /boot/grub2/grub.cfg' 重新生成 grub 配置。更改将在下次启动时生效。
minicom 配置
虽然通常默认情况下未安装,但 minicom 可在所有 SUSE 发行版中使用。使用 'zypper install minicom' 进行安装。要配置 minicom,请执行以下操作
从终端运行 "minicom -s"。选择“Serial port setup”(串口设置)并按 Enter。将“Serial Device”(串口设备)更改为 "/dev/ttyS0" 将“Bps/Par/Bits”(波特率/奇偶校验/数据位)更改为 "115200 8N1" 按 Enter 退出菜单。选择“Save setup as dfl”(将设置保存为默认设置),以便这些更改持久生效。退出 Minicom。
捕获日志消息
通过运行 'minicom -C filename' 在捕获机器上启动 minicom,filename 指定将保存捕获的日志消息的位置。重新启动有问题的 Xen 机器,如果使用 grub1,则选择“Xen Debug”条目。在重现错误后,通过退出 minicom(ctrl+a x)关闭捕获文件。然后可以将包含 hypervisor 和 dom0 日志消息的捕获文件附加到 bugzilla 条目。
在某些情况下,调试可能需要从 hypervisor 收集域、事件或寄存器信息。使用 Xen 的调试键收集此类系统状态。要获得 hypervisor 控制台的交互式访问权限,请六次按下“ctrl+a”。您将收到一条消息,表明输入已切换到 Xen。按“h”查看可用的调试键及其功能的简短描述。按所需的调试键以收集 bug 指定者请求的信息。例如,要收集域的状态信息,请按“q”键。(注意:通过六次按下“ctrl+a”返回到 dom0 控制台。换句话说,六次按下“ctrl+a”可在 dom0 和 hypervisor 控制台之间切换。)
收集到所有请求的日志消息和调试键输出后,退出 minico(ctrl+a x)并将捕获文件附加到 bugzilla 条目。
脚注
如果正在调查的 Xen 机器没有串口,则唯一的选择是使用 PCI 串口卡。USB-Serial 不起作用。