Hi,
Ian Campbell sent this patch, which removes specialcasing for Xen. Please
can you confirm this fixes your problem?
Thanks
--
Robert Millan
<GPLv2> I know my rights; I want my phone call!
<DRM> What good is a phone call… if you are unable to speak?
(as seen on /.)
Index: trunk/debian/update-grub
===================================================================
--- trunk.orig/debian/update-grub 2008-05-05 17:30:19.000000000 +0100
+++ trunk/debian/update-grub 2008-05-05 17:30:28.000000000 +0100
@@ -777,14 +777,17 @@
echo "none found, skipping ..." >&2
fi
-
-xenKernels=""
-for ver in `grep -l CONFIG_XEN_PRIVILEGED_GUEST=y /boot/config* | sed -e s%/boot/config-%%`; do
+xen0Kernels=""
+# First old style non-CONFIG_PARAVIRT kernels with xen0 support.
+for ver in `grep -l CONFIG_XEN=y /boot/config* | sed -e s%/boot/config-%%`; do
+ if ! grep -q CONFIG_XEN_PRIVILEGED_GUEST=y /boot/config-$ver ; then
+ continue
+ fi
# ver is a kernel version
kern="/boot/vmlinuz-$ver"
if [ -r $kern ] ; then
newerKernels=""
- for i in $xenKernels ; do
+ for i in $xen0Kernels ; do
res=$(CompareVersions "$kern" "$i")
if [ "$kern" != "" ] && [ "$res" -gt 0 ] ; then
newerKernels="$newerKernels $kern $i"
@@ -796,30 +799,38 @@
if [ "$kern" != "" ] ; then
newerKernels="$newerKernels $kern"
fi
- xenKernels="$newerKernels"
+ xen0Kernels="$newerKernels"
fi
done
-in_domU=
-if [ -e /proc/xen/capabilities ] && ! grep -q "control_d" /proc/xen/capabilities; then
- in_domU=1
-fi
+# Second new style CONFIG_PARAVIRT kernels with xen support. There is
+# no distinction between xen0 and xenU in these kernels.
+for ver in `grep -l CONFIG_PARAVIRT=y /boot/config* | sed -e s%/boot/config-%%`; do
+ if ! grep -q CONFIG_XEN=y /boot/config-$ver ; then
+ continue
+ fi
+ # ver is a kernel version
+ kern="/boot/vmlinuz-$ver"
+ if [ -r $kern ] ; then
+ newerKernels=""
+ for i in $xen0Kernels ; do
+ res=$(CompareVersions "$kern" "$i")
+ if [ "$kern" != "" ] && [ "$res" -gt 0 ] ; then
+ newerKernels="$newerKernels $kern $i"
+ kern=""
+ else
+ newerKernels="$newerKernels $i"
+ fi
+ done
+ if [ "$kern" != "" ] ; then
+ newerKernels="$newerKernels $kern"
+ fi
+ xen0Kernels="$newerKernels"
+ fi
+done
sortedKernels=""
for kern in $(/bin/ls -1vr /boot | grep -v "dpkg-*" | grep "^vmlinuz-") ; do
- if `echo "$xenKernels" | grep -q "$kern "` || `echo "$kern" | grep -q "xen"`; then
- is_xen=1
- else
- is_xen=
- fi
-
- if [ ! "$in_domU" ] && [ "$is_xen" ]; then
- # skip xen kernels
- continue
- elif [ "$in_domU" ] && ! [ "$is_xen" ]; then
- # skip non-xen kernels
- continue
- fi
kern="/boot/$kern"
newerKernels=""
for i in $sortedKernels ; do
@@ -912,7 +923,7 @@
# Xen entries first.
-for kern in $xenKernels ; do
+for kern in $xen0Kernels ; do
if test ! x"$howmany" = x"all" ; then
if [ $counter -gt $howmany ] ; then
break