542505989 发表于 2015-4-13 10:46:38

How to Develop Xen

编写Xen的第一个程序 (转载注明出处:所有内容均为Superymk原创,版权归作者所有)

需要修改什么


[*] 这里均以Xen-3.4.2为例,需要注意以下几点

[*] 一般来说,导出函数,也就是头文件放在xen/include/对应地方,关于xen自己的一般是asm下
[*] .c文件放在相应arch下
[*] 别忘了修改.c文件同目录的makefile

需要include什么


[*] 新编写的文件需要include ,像这样:
#include
怎么编译安装


[*] 编译命令
make xen
或者在xen目录下
make
  强烈建议编译前先clean一下,以消除可能的future timestamp造成的不能增量编译的问题
进入xen目录
make clean


[*] 安装命令
make install-xen
或者直接找到xen/xen.gz 然后copy到/boot下
  或者用这个脚本(把它放在~bin下)
rm /boot/xen-3.4.2.gz
cp -f /root/Joan/xen-3.4.2/xen/xen.gz /boot/xen-3.4.2.gz
reboot
怎样调试Xen
串口调试


[*]使用串口调试的话要这样配置menu.lst
    title Xen Dom0, kernel 2.6.18.8-xen
    root (hd0,0)
    kernel /xen-3.4.gz dom0_mem=512M crashkernel=128M@32M loglvl=all guest_loglvl=all debug_stack_lines=80 com1=115200,8n1 iommu=1
    module /vmlinuz-2.6.18.8-xen ro root=/dev/VolGroup00/LogVol00 xencons=ttyS0,115200
    module /initrd.img-2.6.18.8-xen
  也可参考http://en.opensuse.org/How_to_Capture_Xen_Hypervisor_and_Kernel_Messages_using_a_Serial_Cable
打印调试


[*]打印调试使用到了dprintk宏,使用时需要引用
[*]查看输出可在dom0下console中输入 xm dmesg查看
How to enlarge xen ring buffer
1.Xen Ring Buffer的作用
  Xen Ring Buffer用来打印Xen Hypervisor的一系列调试信息

2.怎样扩大Ring Buffer
  如果遇到不能完整展示Ring Buffer内容的情况,可以通过修改xen代码来扩大ring buffer
Xen的ring buffer大小是hard code进去的,比较悲剧
参考自http://article.gmane.org/gmane.comp.emulators.xen.user/45026
修改/xen-3.4.2/tools/python/xen/lowlevel/xc/xc.c第1014行:
static PyObject *pyxc_readconsolering(XcObject *self,
                                    PyObject *args,
                                    PyObject *kwds)
{
    unsigned int clear = 0, index = 0, incremental = 0;
    char         _str, *str = _str;
页: [1]
查看完整版本: How to Develop Xen