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

修改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. Unity: Passing Constructor Parameters to Resolve

    In this tutorial we will go through of couple different ways of using custom constructor parameters ...

  2. openx中如何使用site-variable(参数)限制(关键词)广告显示

    openx是个很强大的广告管理系统,可以根据不同的情况显示不同的广告.其中可以根据get参数值的不同来显示,即delivery limitation中的site-variable选项,name表示变量 ...

  3. CI框架入门1

    CI框架入门: 1.url的特点             2.目录结构/布局             3.MVC分别在哪里,如何依葫芦画瓢             4.安全性             ...

  4. spring mvc异常统一处理(ControllerAdvice注解)

    首先我的项目是一个为移动端提供的json数据的,当后台报错时如果为移动端返回一个错误页面显得非常不友好,于是通过ControllerAdvice注解返回json数据. 首先创建一个异常处理类: pac ...

  5. OLAP在大数据时代的挑战

    转行做数据相关的工作有近两年时间,除了具体技术,还有许多其它思考. 数据的价值 在涉及具体的技术前,先想一想为什么需要OLAP这样的系统,它有什么价值或者说在公司或部门这是不可取代的么? 可以带来哪些 ...

  6. web自动化测试中绕开验证码登陆的方式

    web自动化测试中登陆需验证码是很大的一个困扰.现推荐一种简单的避开验证码登陆的方式,先代码进入登录页,人工输入验证码登录后浏览器自动保存cookie,再在新的标签中登录. 具体代码如下: publi ...

  7. 张小龙在2017微信公开课PRO版讲了什么(附演讲实录和2016微信数据报告)

    今天2017微信公开课PRO版在广州亚运城综合体育馆举行,这次2017微信公开课大会以“下一站”为主题,而此次的微信公开课的看点大家可能就集中在腾讯公司高级副总裁.微信之父——张小龙的演讲上了!今天中 ...

  8. 带你玩转JavaWeb开发之六-mysql基本语法详解及实例(1)

    1.1.1    对数据库的表进行操作 1.1.1.1   对数据库中表进行创建 [语法:] create table 表名( 列名 列类型 [列约束], 列名 列类型 [列约束], 列名 列类型 [ ...

  9. struts2项目启动报错。关于jar的问题

    严重: Exception starting filter struts2 Unable to load configuration. - bean - jar:file:/D:/apache-tom ...

  10. iOS学习路线图

    一.iOS学习路线图   二.iOS学习路线图--视频篇       阶 段 学完后目标 知识点 配套学习资源(笔记+源码+PPT) 密码 基础阶段 学习周期:24天       学习后目标:    ...