利用 Serial Over Lan(SOL)搭建 XEN 的调试信息输出环境
如有转载,请注明出处与本文连接,谢谢!
修改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
参考:
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_Console、Xen 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 Options、Kernel Boot Command-line Parameter Reference
然后保存退出,重启后使用新添加的引导项引导试试。
3. 测试:使用 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 的调试信息输出环境的更多相关文章
- XEN的启动信息输出到“Platform timer is 14.318MHz HPET”就暂停接收的解决办法
使用Serial Over Lan(SOL)来双机调试 XEN,在 XEN 启动时,引导信息输出到以下这一句时,就不再发送调试信息了: ...(XEN) Intel machine check rep ...
- 利用QEMU+GDB搭建Linux内核调试环境
前言 对用户态进程,利用gdb调试代码是很方便的手段.而对于内核态的问题,可以利用crash等工具基于coredump文件进行调试. 其实我们也可以利用一些手段对Linux内核代码进行gdb调试,qe ...
- 利用grunt-contrib-connect和grunt-connect-proxy搭建前后端分离的开发环境
前后端分离这个词一点都不新鲜,完全的前后端分离在岗位协作方面,前端不写任何后台,后台不写任何页面,双方通过接口传递数据完成软件的各个功能实现.此种情况下,前后端的项目都独立开发和独立部署,在开发期间有 ...
- 自我救赎 → 利用 IDEA 和 Spring Boot 搭建 SSM
前言 开心一刻 儿子读高中放学回来了,一向不管他学习的我突然来了兴趣,想看看他的学习他的状况,抄起他的数学习题看了起来,当看到 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x ...
- 利用CodeBlocks结合freeglut快速搭建OpenGL开发环境
利用CodeBlocks结合freeglut快速搭建OpenGL开发环境 2018-12-19 10:15:48 再次超越梦想 阅读数 180更多 分类专栏: 我的开发日记 版权声明:本文为博主原 ...
- android开发环境搭建日记和嵌入式Android开发环境初探
非常感谢博客园的各位,按照你们的博文,还有利用百度和谷歌逐渐建立了android的开发环境,只是给自己备份参考查看,看过的人可以忽略这篇文章. 本文章大部分参考了:http://www.cnblogs ...
- Android开发学习总结(一)——搭建最新版本的Android开发环境
Android开发学习总结(一)——搭建最新版本的Android开发环境(转) 最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是 ...
- 用grunt搭建自动化的web前端开发环境实战教程(详细步骤)
用grunt搭建自动化的web前端开发环境实战教程(详细步骤) jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用!前端自动化, ...
- Window10中利用Windbg与虚拟机(window7)中调试驱动建立方法
想起自己的windbg配置就转载:eqera的windows内核调试配置,真的是获益良多希望他不会介意我转载他的博客,帮了我很多,记录下来给我也给大家, 其中我主要看的是VMWare的pipe建立,而 ...
随机推荐
- SQL Server 日期字段作为查询标志字段的注意事项
今天在做一个数据抽取程序时遇到一个问题困扰好久才解决,这不是技术问题,而是常识和细心的问题.写出来让大家引起重视一下. 由于之前的程序长期用Oracle,并且数据标志字段采用的日期类型.在Oracle ...
- GO语言练习:反射
列举几个反射的例子:1)简单类型反射,2)复杂类型反射,3)对反射回来的数据的可修改属性 1.简单类型反射 1.1)代码 package main import ( "fmt" & ...
- About_PHP_验证码的生成
验证码就是一张图片,用到几个关键字: <?php session_start(); $arr = array( 'a','b','c','d','e','f','g','h','i','j',' ...
- 球谐光照(Spherical Harmonics Lighting)及其应用-实验篇
简介 之前在一篇实时深度图优化的论文中看到球谐光照(Spherical Harmonics Lighting)的应用,在查阅了许许多多资料之后还是无法完全理解,我个人觉得如果之前对实时渲染技术不是很了 ...
- NodeJs并发异步的回调处理
这里说并发异步,并不准确,应该说连续异步.NodeJs单线程异步的特性,直接导致多个异步同时进行时,无法确定最后的执行结果来回调.举个简单的例子: for(var i = 0; i < 5; i ...
- Angular2 起步(1)
1.安装 nodejs(最新稳定版)https://nodejs.org/en/ 安装 typescript npm install -g typescript 安装 angular-cli(关于CL ...
- css 文字溢出隐藏 带省略号
.demo{ width:100px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } 注意宽度要设置
- 2017年8个UI设计流行趋势
设计趋势变化的理由需要考虑各种各样的因素.让我们来一起看看2017年的设计流行趋势吧. 应用界面的设计趋势是不断变化的.随着时间的推移他也在不断的成长,进化.虽然有些趋势还有待检验,但我们还是需要不断 ...
- HTML第二本书学习后记
1,换行标记<br>,不换行标记<nobr></nobr> 2,添加水平线 <hr> 3,插入特殊符号: 空格   " ...
- 使用天天模拟器开发Android应用
自带的模拟器太慢,Genymotion配置过于复杂,天天模拟器旧版本直接可用于调试,由于新版本的天大模拟器端口号被修改为6555,要想用于开发,需要使用ADB命令进行连接. 下载天天模拟器 天天模拟器 ...