使用Serial Over Lan(SOL)来双机调试 XEN,在 XEN 启动时,引导信息输出到以下这一句时,就不再发送调试信息了:
...
(XEN) Intel machine check reporting enabled
(XEN) I/O virtualisation disabled
(XEN) Enabled directed EOI with ioapic_ack_old on!
(XEN) ENABLING IO-APIC IRQs
(XEN) -> Using old ACK method
(XEN) ..TIMER: vector=0xF0 apic1=0 pin1=2 apic2=-1 pin2=-1
(XEN) Platform timer is 14.318MHz HPET
(
相当奇怪,输出到上文的“(”时就不再有调试信息了,只有当 XEN 所在的 Linux 关机时,断电的瞬间才把剩下的所有调试信息一下子发送到接收端。后来查了相关信息,原来是因为 XEN 异步输出信息时会与 Intel AMT 相冲突。解决办法很简单,在 grub 中的“kernel”那一行中增加一个参数即可:“sync_console”:
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
这时再重启查看调试信息,问题就解决了,同时XEN的调试信息中也给出了提醒:
(XEN) **********************************************
(XEN) ******* WARNING: CONSOLE OUTPUT IS SYNCHRONOUS
(XEN) ******* This option is intended to aid debugging of Xen by ensuring
(XEN) ******* that all output is synchronously delivered on the serial line.
(XEN) ******* However it can introduce SIGNIFICANT latencies and affect
(XEN) ******* timekeeping. It is NOT recommended for production use!
(XEN) **********************************************
(XEN) 3... 2... 1...
大概意思就是为了调试方便可以添加这一项,但是在生成产品时要把这参数去掉,否则会影响性能。