Package: xen-utils-4.1
Version: 4.1.3-4
Severity: important
Tags: patch
Bug presented in sid, with patch attached.
Similar bug is also present in stable and testing versions.
How to reproduce:
Install xen-utils-4.1 in a domU, and run:
/etc/init.d/xen start
Expected result:
xenstored running
(or to have any other easy way to get it running within a domU)
xenstored is not just something you need to run in a dom0, it can also
be useful in a domU.
Example of informations you can retrieve:
# domid=`xenstore-read domid`
# xenstore-ls /local/domain/$domid
[...]
As some might not be aware of why else it might be usefull, here are
some presentation of what I'm using it for:
------------------------------------------------------------------------
It is also required to get backends within a specific VM, rather than a
dom0. Isn't it nice to have 2 domU able to have direct network
connection, rather than having to go through the dom0 bridge, that might
have a firewall to bypass (multiple copy, lag, ...)
Example of vif configuration, to get the backend in a vm :
'mac=00:16:3E:de:ad:01,backend=firewall,script=vif-bridge,vifname=sandbox,bridge=brmisc',
That require xen-utils to run in the domU named firewall. The script
vif-bridge will be launched there, expecting to get put in a bridge
'brmisc'. The interface will also have a nice name, instead of 'vifX.Y'.
Catch: it NEED to have xenstored running. I'd appreciate not to have to
patch debian init script each time I install a vm that is supposed to
receive backends.
------------------------------------------------------------------------
On the other hand, my dom0 is a debian/stable. So, when I checked if
debian/sid would run xenstore or not, I found an other bug that also
need to get fixed to have it work nicely.
xen-version (used by xen-dir) checks what hypervisor is running. Which
makes it search 4.0 directory (hypervisor from stable), though I have
xen 4.1 utils installed (sid).
Ugly patch attached, in case someone try to run a sid domU on a squeeze
dom0 with 4.0 hypervisor. (not expecting that part to get anywhere near
the repository)
-- System Information:
Debian Release: wheezy/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 3.2.0-4-amd64 (SMP w/1 CPU core)
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/dash
Versions of packages xen-utils-4.1 depends on:
ii e2fslibs 1.42.5-1
ii libc6 2.13-37
ii libgnutls26 2.12.20-2
ii libncurses5 5.9-10
ii libpci3 1:3.1.9-6
ii libtinfo5 5.9-10
ii libuuid1 2.20.1-5.2
ii libxen-4.1 4.1.3-4
ii libxenstore3.0 4.1.3-4
ii python 2.7.3-3
ii python2.7 2.7.3-5
ii xen-utils-common 4.1.3-4
ii zlib1g 1:1.2.7.dfsg-13
Versions of packages xen-utils-4.1 recommends:
ii bridge-utils 1.5-6
pn qemu-keymaps <none>
pn qemu-utils <none>
pn xen-hypervisor-4.1 <none>
Versions of packages xen-utils-4.1 suggests:
pn xen-docs-4.1 <none>
-- no debconf information
diff -ur sid/etc/init.d/xen patched/etc/init.d/xen
--- sid/etc/init.d/xen 2012-05-22 10:22:34.000000000 +0200
+++ patched/etc/init.d/xen 2012-12-02 12:19:19.000000000 +0100
@@ -38,6 +38,8 @@
XENSTORED="$ROOT"/bin/xenstored
XENSTORED_PIDFILE="/var/run/xenstore.pid"
+ISDOM0=1
+
modules_setup()
{
modprobe xenfs 2>/dev/null
@@ -57,7 +59,10 @@
capability_check()
{
[ -e "/proc/xen/capabilities" ] || return 1
- grep -q "control_d" /proc/xen/capabilities || return 1
+ grep -q "control_d" /proc/xen/capabilities || {
+ XENSTORED_ARGS="$XENSTORED_ARGS --no-domain-init"
+ ISDOM0=0
+ }
return 0
}
@@ -186,7 +191,8 @@
start-stop-daemon --start --quiet --pidfile "$XENSTORED_PIDFILE" --exec "$XENSTORED" -- \
$XENSTORED_ARGS --pid-file="$XENSTORED_PIDFILE" \
|| return 2
- xenstore-write "/local/domain/0/name" "Domain-0"
+ [ "$ISDOM0" = 1 ] &&
+ xenstore-write "/local/domain/0/name" "Domain-0"
}
case "$1" in
@@ -208,6 +214,10 @@
0|1) ;;
*) log_end_msg 1; exit ;;
esac
+ case "$ISDOM0" in
+ 1) ;;
+ *) log_end_msg 255; exit ;;
+ esac
xenconsoled_start
case "$?" in
0|1) ;;
@@ -228,6 +238,7 @@
esac
log_daemon_msg "Stopping $DESC"
ret=0
+ [ "$ISDOM0" = 1 ] &&
xend_stop
case "$?" in
0|1) ;;
@@ -248,6 +259,7 @@
esac
log_daemon_msg "Restarting $DESC"
ret=0
+ [ "$ISDOM0" = 1 ] &&
xend_restart
case "$?" in
0|1) ;;
diff -ur sid/usr/lib/xen-common/bin/xen-version patched/usr/lib/xen-common/bin/xen-version
--- sid/usr/lib/xen-common/bin/xen-version 2012-11-20 16:01:16.000000000 +0100
+++ patched/usr/lib/xen-common/bin/xen-version 2012-12-02 11:59:58.000000000 +0100
@@ -28,4 +28,5 @@
error "Can't find hypervisor information in sysfs!"
fi
-echo "$VERSION"
+#echo "$VERSION"
+echo 4.1