xen提示hotplug scripts not working错误

最近安装xen,按照网上的安装教程 ,Xen版本是4.2.0,Kernel版本是3.2.30,安装过程很顺利。但是安装成功后,虚拟机怎么都启动不了。

虚拟机的配置文件为node1.cfg,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
kernel = "/boot/vmlinuz-3.2.30-kvm"
#ramdisk = "/boot/initramfs-3.2.30-kvm.img"
ramdisk = "/boot/initramfswithxenblk.img"
memory = 2048
name = "node1"
vcpus = 4
ip = "192.168.226.220"
netmask = "255.255.255.0"
gateway = "192.168.226.218"
vif = [ "bridge=xenbr0" ]

disk = [ 'file:/home/ganqt/img/node1.vmdisk,xvda1,w' ]
root = "/dev/xvda1 ro"
extra = "4 console=hvc0"

使用命令xm create -c node1.cfg,命令行会一直卡住,知道输出下面的错误提示,创建过程就终止了:

1
Error: Device 0 (vif) could not be connected. Hotplug scripts not working.

根据错误提示信息,我在网上看到Xen的官网和Stackoverflow上都有关于这个的说明,比如:http://stackoverflow.com/questions/7624696/how-to-solve-device-0-vif-could-not-be-connected-hotplug-scripts-not-working/7629846#7629846 ,都提到了,这个错误是因为xen-netback驱动没有安装。使用lsmod |grep xen检查驱动情况,没有任何输出。

那么问题就比较明了了,应该是有一些驱动模块没有安装,这应该是在编译内核的时候没有安装好。可是到底是哪些模块,怎么设置才能安装正确呢。。。

经过一番Google,我发现了这个网址,也是xen的文档: http://wiki.xen.org/wiki/Mainline_Linux_Kernel_Configs#Configuring_the_Kernel_for_dom0_Support ,上面讲了安装kernel的时候的一些注意事项。其中Configuring the Kernel for Dom0 Support部分,提到了Kernel应该设置哪些模块选项。经过一一对比,我发现,有一些模块要求是选为m的,而我选为了y,可能这就是导致问题的原因吧。于是make menuconfig然后将内核的配置选项与文章中进行严格对比匹配,再重新编译一遍。

安装模块的时候使用make modules_install | grep xen来查看有哪些与xen相关的模块。看到了好几个,其中就有xen-netback模块,估计这回是安装正确了。重新配置好grub文件,重启,重试创建虚拟机,真的好了。