玩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:
说明: http : //bugs.launchpad.net/bugs/191889