Xen 4.0.1 vifname从configuration文件?

xen 4.0.1,试图设置一个简单的domU。

当我把参数放入vif时

vif = [ 'ip=192.168.1.41,mac=00:16:3E:2F:F4:78,bridge=xenbr0,vifname=domu1' ] 

它失败

 error: Device 0 (vif) could not be connected. ip link set vif5.0 name domu1 failed 

另外,从dom0运行命令:

 ip link set vif5.0 name domu1 

回报

 RTNETLINK answers: Device or resource busy 

任何想法 ?

从我可以告诉vifname=命令不正确支持许多版本的Xen。

我的猜测是,只能在某些使用前重命名设备,而Xen vif脚本太晚了。

vif-common.sh查看源vif-common.sh

 vifname=$(xenstore_read_default "$XENBUS_PATH/vifname" "") if [ "$vifname" ] then if [ "$command" == "online" ] && ! ip link show "$vifname" >&/dev/null then do_or_die ip link set "$vif" name "$vifname" fi vif="$vifname" fi 

我没有看到任何明显的错误。 你应该看看你的vif-common.sh并确认它是一样的。

编辑 :我想也许vifX.Y接口可能不会在这一点上。 尝试注释掉do_or_die行。 这应该设置vif="$vifname" ,如果稍后创build设备,则没有理由对其进行重命名。

您的链接vif5.0被使用…

这个解决schemefunction非常好。 每次我build议你不要在生产服务器上使用它…

 *** scripts/vif-common.sh.old 2012-03-28 16:00:50.555630500 +0200 --- scripts/vif-common.sh 2012-03-28 15:59:58.775633091 +0200 *************** *** 70,88 **** --- 70,90 ---- # Check presence of compulsory args. XENBUS_PATH="${XENBUS_PATH:?}" dev="${dev:?}" vifname=$(xenstore_read_default "$XENBUS_PATH/vifname" "") if [ "$vifname" ] then if [ "$command" == "online" ] && ! ip link show "$vifname" >&/dev/null then + ip link set "$dev" down do_or_die ip link set "$dev" name "$vifname" + ip link set "$vifname" up fi dev="$vifname" fi elif [ "$type_if" = tap ]; then # Check presence of compulsory args. : ${INTERFACE:?} # Get xenbus_path from device name. # The name is built like that: "tap${domid}.${devid}". 

解决scheme3实施:

使用以下命令更新NetworkManager.conf:

 [main] plugins=keyfile [keyfile] unmanaged-devices=interface-name:vif* 

这是发生此问题的一个原因:

 ps auxw | grep -v grep | grep NetworkManager && service network-manager stop 

xm create …和祝你好运!

解决scheme1,2或3:

  1. dpkg – 清除networkingpipe理器
  2. 服务networkingpipe理员停止
  3. man NetworkManager.conf并search“非托pipe设备…

说明: http : //bugs.launchpad.net/bugs/191889