修改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位以上、必须包括大写字母、小写字母、数字、特殊符号(如[email protected]#等,但不能有‘:’、‘,‘、‘"‘)。更改后的密码切记保管好……
设置网络:
依次进入配置界面:
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
进入Linux后,在控制台下输入命令:vi /boot/grub/grub.conf
在 default 前插入:
serial --unit=0 --speed=115200 terminal --timeout=10 console serial
添加一项引导项,参考可引导的引导项,并添加串口的配置:
title CentOS (3.1.2-xen-SOL) root(hd0,0) kernel /xen.gz console=tty0 console=com1 com1=115200,8n1 module /vmlinuz-3.1.2 ro root=/dev/mapper/vg_livecd-lv_root xencons=ttyS0 console=ttyS0 module /initramfs-3.1.2.img
以上加粗是添加的部分,然后保存退出,重启后使用新添加的引导项引导试试。
3. 测试:使用 minicom 传数据
在命令行中查看SOL是否已启用:
dmesg | grep ttyS
若有以下输出,则说明已启用,注意最后一行出现了才说明 grub.conf 配置正确:
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
安装 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 的调试信息输出环境