如有转载,请注明出处与本文连接,谢谢!

修改XEN的源码实现额外的功能,需要有一个调试环境来得到XEN的调试信息(有关源码编译并安装 XEN 请阅读我以前的博文:在CentOS下源码安装 Xen并搭建Windows虚拟机),这里有一篇很好的搭建方法:Xen Serial Console,可是光阅读它还不够,中间还会遇到许多问题,本博文介绍一下环境搭建的经过,以及遇到的问题的解决办法,希望对大家有用。

得到 XEN 的 Debug String 需要靠串口(Serial Port)来接收并输出,除了使用 RS232 线缆连接两台机器之外(一台运行被调试的 XEN,另一台接收 XEN 的调试信息),还可以使用 Serial Over Lan (SOL) 替代串口线来传输数据。前者需要购买 RS232 接口的串口线,对于现在没有串口的笔记本来说,还需要购买 Express Card 转串口的转接卡(或者 USB 转串口的转接卡,Xen Serial Console 一文中提到:若要调试XEN启动,不能使用USB转串口的转接卡);而对于现在 Intel AMT 技术已经广泛普及的新型笔记本来说,后者的方法更实惠简便。AMT技术可以将串口数据重定向到LAN口,使得LAN口模拟串口实现数据的传输。

本人系统环境:

Linux: CentOS 6.3
XEN: Xen 4.1.3
AMT: AMT 6.0

运行 XEN 的被调试机:

1. 配置 AMT

参考:

AMT SOL

amt-howto - Linux man page

Intel Management Engine BIOS Extention (MEBx) User Guides

开机时不停地按 Ctrl+P,即可进入 Intel(R) Management Engine BIOS Extension(MEBx)界面:

本人笔记本之前BIOS升级到1.45之后,不管如何按 Ctrl+P 都进入不了MEBx,后来降到 1.41 后就可以了,如果大家也遇到同样的问题,降低BIOS版本试试。

第一次进入MEBx需要更改密码,默认的初始密码是:admin,更改的密码要求复杂度比较高:8位以上、必须包括大写字母、小写字母、数字、特殊符号(如!@#等,但不能有‘:’、','、'"')。更改后的密码切记保管好……

设置网络:

依次进入配置界面:

Intel ME General Settings --> Intel (R) ME State Control --> ENABLE

Intel ME General Settings --> Activate Network Access --> Y

Intel ME General Settings --> Network Setup --> TCP/IP Settings --> Wired LAN IPV4 Configuration,使用DHCP,或将其设置为DISABLE后设置指定的IP、掩码、网关、DNS等

Intel AMT Configuration --> Manageability Feature Selection --> ENABLED

Intel AMT Configuration --> SOL/IDER --> SOL --> ENABLED

Intel AMT Configuration --> Legacy Redirection Mode --> ENABLED

最后退出保存即可。

2. 修改 grub.conf

参考:Xen_Serial_ConsoleXen and serial console over IPMI (SOL)

本文只给出传统 grub 的配置方法,grub2 的配置方法请参考上面的链接。

进入 Linux后,在命令行中查看SOL的端口信息:

dmesg | grep ttyS

若有以下输出,则说明SOL端口已启用:

Kernel command line: ro root=/dev/mapper/vg_livecd-lv_root xencons=ttyS0 console=ttyS0
console [ttyS0] enabled
0000:00:16.3: ttyS0 at I/O 0x1808 (irq = 17) is a 16550A

注意这里的 SOL 在系统中的代号是“ttyS0”,端口号是 0x1808,分配的中断号是 17,这信息很重要,不同的机器会不一样。

在控制台下输入命令:vi /boot/grub/grub.conf

在 default 前插入:

serial --unit=0 --speed=115200
terminal --timeout=0 console serial

这里的“--unit=0”要按照代号的数字来设置,如果上面查到的是“ttyS1”,这里就设置为“1”;设置“--timeout=0”可以令GRUB引导尽早出现。

添加一项引导项,参考可引导的引导项,并添加串口的配置:

title CentOS (3.1.2-xen-SOL)
root(hd0,0)
kernel /xen.gz dom0_mem=512M loglvl=all guest_loglvl=all sync_console console_to_ring console=vga,com1 com1=115200,8n1,0x1808,17
module /vmlinuz-3.1.2 ro root=/dev/mapper/vg_livecd-lv_root console=hvc0 console=tty0 earlyprintk=xen
module /initramfs-3.1.2.img

以上加粗是添加的部分,这里注意:

kernel行:
“com1”:前面是“ttyS0”就设置为“1”,如果是“ttyS1”就设置为“2”,依此类推。
“com1=115200,8n1,0x1808,17”:115200、8n1就是串口的速率和类型,0x1808、17就是上文查出的ttyS0端口的端口号和中断号,替换为自己的信息就行。
“sync_console”一定要设置,如果不设置的话,由于XEN使用SOL输出调试信息时默认是使用异步方式输出,这样会导致在开机时接收调试信息到这一行时“Platform timer is 14.318MHz HPET”就暂停接收信息了。
“console=vga,com1”表示XEN的输出信息从屏幕、COM1口(在这里就是SOL口)输出。

module行:
“console=hvc0 console=tty0”表示 Linux 的调试信息输出到 XEN 的命令行、第1个用户界面(也就是启动时一堆OK或FAILED的那些信息)。

其它设置项请参考:Xen Hypervisor Command Line OptionsKernel Boot Command-line Parameter Reference

然后保存退出,重启后使用新添加的引导项引导试试。

3. 测试:使用 minicom 传数据

参考:linux超级终端minicom的使用方法

安装 minicom,测试是否可以连接:

yum install minicom

配置:

minicom -s

出现配置菜单,选择“Serial port setup”,按“A”,输入“/dev/ttyS0”,按“E”,选择为 “115200 8N1”,按“F”,使得“Hardware Flow Control”配置为“No”,最后选择“Save setup as dfl”。

执行 minicom,当 minicom 启动后,上会出现“Port /dev/ttyS0”,按 Ctrl+A,控制台下方会出现一绿条,最右侧若显示“Online 00:00”,则说明已经连接上SOL,如下图所示:

接收调试信息的控制台:

1. Linux 平台

(1) 使用 amtterm

首先安装 amtterm,控制台中输入:

wget https://www.kraxel.org/releases/amtterm/amtterm-1.3.tar.gz

下载完后解压缩,并进入该目录进行编译安装:

tar xvf amtterm-1.3.tar.gz
cd amtterm-1.3
make
make install

安装完后,执行amterm进行连接:

amtterm -p 'AMT_PASSWORD' XEN_DEBUG_MACHINE_IP

其中“AMT_PASSWORD”是被调试机AMT的密码,由于包含特殊字符,所以需要前后使用单引号;“XEN_DEBUG_MACHINE_IP”是被调试机的IP
。如果连接成功,将有以下提示:

如果需要记录调试信息,执行 amtterm 时可加入以下参数:

amtterm -p 'AMT_PASSWORD' XEN_DEBUG_MACHINE_IP | tee debug_string.log

到此,双机配置已成功,从被调试机开机开始,调试机就可以使用 amtterm 进行连接并接收调试信息。

(2) 使用 ipmitool

(未实验成功,日后补上)

2. Windows 平台

(1) 使用 ipmiutil

(未实验成功,日后补上)

利用 Serial Over Lan(SOL)搭建 XEN 的调试信息输出环境的更多相关文章

  1. XEN的启动信息输出到“Platform timer is 14.318MHz HPET”就暂停接收的解决办法

    使用Serial Over Lan(SOL)来双机调试 XEN,在 XEN 启动时,引导信息输出到以下这一句时,就不再发送调试信息了: ...(XEN) Intel machine check rep ...

  2. 利用QEMU+GDB搭建Linux内核调试环境

    前言 对用户态进程,利用gdb调试代码是很方便的手段.而对于内核态的问题,可以利用crash等工具基于coredump文件进行调试. 其实我们也可以利用一些手段对Linux内核代码进行gdb调试,qe ...

  3. 利用grunt-contrib-connect和grunt-connect-proxy搭建前后端分离的开发环境

    前后端分离这个词一点都不新鲜,完全的前后端分离在岗位协作方面,前端不写任何后台,后台不写任何页面,双方通过接口传递数据完成软件的各个功能实现.此种情况下,前后端的项目都独立开发和独立部署,在开发期间有 ...

  4. 自我救赎 → 利用 IDEA 和 Spring Boot 搭建 SSM

    前言 开心一刻 儿子读高中放学回来了,一向不管他学习的我突然来了兴趣,想看看他的学习他的状况,抄起他的数学习题看了起来,当看到 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x ...

  5. 利用CodeBlocks结合freeglut快速搭建OpenGL开发环境

    利用CodeBlocks结合freeglut快速搭建OpenGL开发环境 2018-12-19 10:15:48 再次超越梦想 阅读数 180更多 分类专栏: 我的开发日记   版权声明:本文为博主原 ...

  6. android开发环境搭建日记和嵌入式Android开发环境初探

    非常感谢博客园的各位,按照你们的博文,还有利用百度和谷歌逐渐建立了android的开发环境,只是给自己备份参考查看,看过的人可以忽略这篇文章. 本文章大部分参考了:http://www.cnblogs ...

  7. Android开发学习总结(一)——搭建最新版本的Android开发环境

    Android开发学习总结(一)——搭建最新版本的Android开发环境(转) 最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是 ...

  8. 用grunt搭建自动化的web前端开发环境实战教程(详细步骤)

    用grunt搭建自动化的web前端开发环境实战教程(详细步骤) jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用!前端自动化, ...

  9. Window10中利用Windbg与虚拟机(window7)中调试驱动建立方法

    想起自己的windbg配置就转载:eqera的windows内核调试配置,真的是获益良多希望他不会介意我转载他的博客,帮了我很多,记录下来给我也给大家, 其中我主要看的是VMWare的pipe建立,而 ...

随机推荐

  1. SQL Server 日期字段作为查询标志字段的注意事项

    今天在做一个数据抽取程序时遇到一个问题困扰好久才解决,这不是技术问题,而是常识和细心的问题.写出来让大家引起重视一下. 由于之前的程序长期用Oracle,并且数据标志字段采用的日期类型.在Oracle ...

  2. GO语言练习:反射

    列举几个反射的例子:1)简单类型反射,2)复杂类型反射,3)对反射回来的数据的可修改属性 1.简单类型反射 1.1)代码 package main import ( "fmt" & ...

  3. About_PHP_验证码的生成

    验证码就是一张图片,用到几个关键字: <?php session_start(); $arr = array( 'a','b','c','d','e','f','g','h','i','j',' ...

  4. 球谐光照(Spherical Harmonics Lighting)及其应用-实验篇

    简介 之前在一篇实时深度图优化的论文中看到球谐光照(Spherical Harmonics Lighting)的应用,在查阅了许许多多资料之后还是无法完全理解,我个人觉得如果之前对实时渲染技术不是很了 ...

  5. NodeJs并发异步的回调处理

    这里说并发异步,并不准确,应该说连续异步.NodeJs单线程异步的特性,直接导致多个异步同时进行时,无法确定最后的执行结果来回调.举个简单的例子: for(var i = 0; i < 5; i ...

  6. Angular2 起步(1)

    1.安装 nodejs(最新稳定版)https://nodejs.org/en/ 安装 typescript npm install -g typescript 安装 angular-cli(关于CL ...

  7. css 文字溢出隐藏 带省略号

    .demo{ width:100px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } 注意宽度要设置

  8. 2017年8个UI设计流行趋势

    设计趋势变化的理由需要考虑各种各样的因素.让我们来一起看看2017年的设计流行趋势吧. 应用界面的设计趋势是不断变化的.随着时间的推移他也在不断的成长,进化.虽然有些趋势还有待检验,但我们还是需要不断 ...

  9. HTML第二本书学习后记

    1,换行标记<br>,不换行标记<nobr></nobr> 2,添加水平线 <hr> 3,插入特殊符号:   空格 &nbsp    " ...

  10. 使用天天模拟器开发Android应用

    自带的模拟器太慢,Genymotion配置过于复杂,天天模拟器旧版本直接可用于调试,由于新版本的天大模拟器端口号被修改为6555,要想用于开发,需要使用ADB命令进行连接. 下载天天模拟器 天天模拟器 ...