利用 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

參考:

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個用戶界面(也就是啟動時一堆OKFAILED的那些信息)。

其它設置項請參考: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

(未實驗成功,日后補上)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM