使用串口调试Xen

栏目: 服务器 · 发布时间: 6年前

内容简介:在使用Xen的过程中,会遇到各种问题,掌握一些常见的调试技巧,对于解决问题能起到事半功倍的效果。网上一些Xen调试相关的资源:Xen hypervisor的运行信息写到了内存中,可以通过使用串口调试Xen,需要两台物理机,通过串口线连接,一台运行Xen,另一台通过串口查看输出信息。

在使用Xen的过程中,会遇到各种问题,掌握一些常见的调试技巧,对于解决问题能起到事半功倍的效果。网上一些Xen调试相关的资源:

  1. Debugging Xen
  2. Xen Serial Console
  3. Xen Debugging

Xen hypervisor的运行信息写到了内存中,可以通过 xl dmesg 命令显示,并没有写入到日志文件,所以不太方便查看。如果遇到更严重的情况,Xen在启动阶段就出错了,则无法进入Dom0运行 xl dmesg 命令查看启动信息,只能通过串口查看。

使用串口调试Xen,需要两台物理机,通过串口线连接,一台运行Xen,另一台通过串口查看输出信息。

串口线选择

串口线注意选择交叉线而不是直连线,一端用于发送,一端用于接收。

使用串口调试Xen

接口也要选对,看是公对公,母对母,还是公对母。

使用串口调试Xen

串口连通性测试

在对Xen进行串口配置之前,可以先测试下串口连通性。

查看串口信息,这里有两个串口(COM1和COM2),Linux下叫做ttyS0和ttyS1。

$ dmesg  | grep tty
console [tty0] enabled
00:03: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A
serial8250: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A

在两台设备上同时运行 minicom -s ,配置串口。

使用串口调试Xen

配好后,输入任意字符,如果在另一台设备的 minicom 中能看到对应的输出,说明串口连接正常。

Xen串口配置

在运行Xen的设备上,配置Grub开机启动项,Xen参数添加 loglvl=all guest_loglvl=all console=com2 com2=115200,8n1 ,Dom0内核参数添加 console=hvc0

如果不想在串口中错过每一条信息,可在Xen参数添加 sync_console ,强制同步串口输出,当然这只适用于调试,因为需要将所有信息从串口输出,严重影响hypervisor性能,虚拟机会特别卡。

串口调试Xen

Xen设备配置好后,在另一台设备上运行 minicom -s -C xen.log ,( -C xen.log 将串口输出同时保存在xen.log文件,方便后续查看),重启Xen设备。

Xen设备启动成功后,在串口上看到是Dom0,按6次 Ctrl-a 进入Xen。就可以看到虚拟机运行过程中,hypervisor的输出信息,可以更改Xen源码,添加更多printk()日志输出。也可以通过Xen debug keys获取相应信息,输入 h ,输出可用的kyes,输入key,输出对应信息。

(XEN) 'h' pressed -> showing installed handlers
(XEN)  key '%' (ascii '25') => trap to xendbg
(XEN)  key '*' (ascii '2a') => print all diagnostics
(XEN)  key '0' (ascii '30') => dump Dom0 registers
(XEN)  key 'A' (ascii '41') => toggle alternative key handling
(XEN)  key 'D' (ascii '44') => dump VT-x EPT tables
(XEN)  key 'H' (ascii '48') => dump heap info
(XEN)  key 'I' (ascii '49') => dump HVM irq info
(XEN)  key 'M' (ascii '4d') => dump MSI state
(XEN)  key 'N' (ascii '4e') => trigger an NMI
(XEN)  key 'Q' (ascii '51') => dump PCI devices
(XEN)  key 'R' (ascii '52') => reboot machine
(XEN)  key 'V' (ascii '56') => dump iommu info
(XEN)  key 'a' (ascii '61') => dump timer queues
(XEN)  key 'c' (ascii '63') => dump ACPI Cx structures
(XEN)  key 'd' (ascii '64') => dump registers
(XEN)  key 'e' (ascii '65') => dump evtchn info
(XEN)  key 'g' (ascii '67') => print grant table usage
(XEN)  key 'h' (ascii '68') => show this message
(XEN)  key 'i' (ascii '69') => dump interrupt bindings
(XEN)  key 'm' (ascii '6d') => memory info
(XEN)  key 'n' (ascii '6e') => NMI statistics
(XEN)  key 'o' (ascii '6f') => dump iommu p2m table
(XEN)  key 'q' (ascii '71') => dump domain (and guest debug) info
(XEN)  key 'r' (ascii '72') => dump run queues
(XEN)  key 's' (ascii '73') => dump softtsc stats
(XEN)  key 't' (ascii '74') => display multi-cpu clock info
(XEN)  key 'u' (ascii '75') => dump NUMA info
(XEN)  key 'v' (ascii '76') => dump VT-x VMCSs
(XEN)  key 'w' (ascii '77') => synchronously dump console ring buffer (dmesg)
(XEN)  key 'z' (ascii '7a') => dump IOAPIC info

参考:


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

众声喧哗

众声喧哗

胡泳 / 广西师范大学出版社 / 2008-9 / 35.00元

本书触及了网络政治学中的一个重大话题——网络空间中的私域与公域。随着科技的进步,在信息时代的开端,公与私的含义和边界都出现了不容忽视的游移。《众声喧哗》主要探讨,经由新的共有媒体的作用,传统的公私两分如何在社会和政治的双重压力下产生消长和易位。在这里,公域与私域不能看做结构性的东西,而必须视之为一种流和一种过程。在网络时代,我们既要追求生机勃勃的公共生活,又要保证私人领域一定的自主性。共有媒体也许......一起来看看 《众声喧哗》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具