不同的环境总能遇到不同的问题。之前安装Xen,没有把遇到的问题及解决方法记录下来。这次我把遇到的都一步步记录了,有以前遇到过的也有从未遇到过的。如下:
Xen安装遇到的问题
1. make[3]: *** ../../.config: Is a directory. Stop.
这是在 make xen 时遇到的,原因是在在根目录下有 /.config 目录。解决方法就是将 Config.mk 最后一行“-include $(XEN_ROOT)/.config”注释掉
2. 安装包缺失
在 make xen tools stubdom 过程中会遇到一些包依赖的问题,解决的方式自然是安装相关包:
apt-get install libncurses5-dev bcc bin86 gettext libx11-dev libssl-dev texinfo
具体的和每个人的环境有关,反正少什么就装什么。
3. ImportError: No module named xen.xend.server。
这是以前遇到的一个问题,在Xen重装后xend启动不了。后来通过 make install-tools PYTHON_PREFIX_ARG= 解决了。
Kernel编译遇到的问题
1. select-linux-image: cannot determine Linux image to use for x86 in build-linux-2.6.31-xen_x86_32
这个问题其实没解决,我只是换了条路走。直接在 make prep-kernels 后生成的目录 build-linux-2.6.31-xen_x86_32 里编译内核。
2. WARNING: vmlinux.o (__xen_guest): unexpected non-allocatable section
Did you forget to use "ax"/"aw" in a .S file?
Note that for example <linux/init.h> contains
section definitions for use in .S files.
WARNING: modpost: Found 1 section mismatch(es).
To see full details build your kernel with:
'make CONFIG_DEBUG_SECTION_MISMATCH=y'
GEN .version
CHK include/linux/compile.h
UPD include/linux/compile.h
CC init/version.o
LD init/built-in.o
LD .tmp_vmlinux1
ld: kernel image bigger than KERNEL_IMAGE_SIZE
ld: kernel image bigger than KERNEL_IMAGE_SIZE
解决方式是在 make menuconfig 时设置“Xen version compatibility” 为“3.0.4 or later”,默认是 “3.0.2 or later”。
3. error: you need to load the kernel first
failed to boot default entries.
这是在Kernel安装好后重启时遇到的问题。是因为9.10 使用的是GRUB2,在update-grub时自动生成的grub.cfg有问题,只要加入”multiboot /xen-3.4.2.gz“就可以了。如下:
menuentry "Ubuntu, Linux 2.6.31.12-xen" {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd0,1)
search --no-floppy --fs-uuid --set bd92ae61-8966-4685-b278-fe51718c776e
multiboot /xen-3.4.2.gz
module /vmlinuz-2.6.31.12-xen root=UUID=38e2a361-6553-45d7-98f4-360bd964f810 ro quiet splash
module /initrd.img-2.6.31.12-xen
}
不过,我现在还是无法进入Dom0。启动时仍有错误,而且屏幕一闪而过,来不及看清楚。所以,到现在还没解决,等解决后再来补充说明原因。
环境:Kubuntu 9.10、Kernel 2.6.31.12(xen pached)、Xen 3.4.2