--S
Quoting Bruce Edge, who wrote the following on Thu, 20 May 2010:
There's a bug in certain hypervisor versions where it drops the first
parameter. This is the accepted workaround, pass a dummy param as the first
entry.
-Bruce
On Thu, May 20, 2010 at 4:45 PM, Seth Goldberg <address@hidden>wrote:
What is this 'dummy=dummy' on the multiboot line?
--S
Quoting Bruce Edge, who wrote the following on Thu, 20 May 2010:
Hi
Apologies in advance if this is already in the works.
I wanted to provide an etc/grub.d rule for generating boot stanzas for Xen
based systems such that it would end up in the upstream grub release.
If this conforms to the appropriate conventions, could someone possibly
add
it ?
It's basically a copy of etc/grub.d/10_linux and adds checks for dom0
capable kernels. I picked "09_" as I assumed that one would want to
default
to the Xen boot entry, but that may be a matter of some debate.
Thanks
-Bruce
#!/bin/bash -e
#===============================================================================
#
# FILE: 09_xen
#
# USAGE: update-grub ... with this in /etc/grub.d
#
# DESCRIPTION: Generate grub2 boot stanza for Xen systems
# Xen boot entries are automatically added
to
grub.cfg
# The 09-... name prefix puts the Xen boot
entries before
# the linux kernel entries
#
# OPTIONS: ---
# REQUIREMENTS: --- grub2, Xen hypervisor
# BUGS: --- probably
# NOTES: --- Copied from 10_linux with a few hacks to make ir
work
for Xen.
# Incorporated suggestions to only
do
this for valid dom0 kernels
# AUTHOR: Bruce Edge (BRE), address@hidden
# COMPANY: LSI
# VERSION: 1.0
# CREATED: 05/19/2010 02:32:34 PM PDT
# REVISION: ---
#===============================================================================
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
. ${libdir}/grub/update-grub_lib
if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
OS=GNU/Linux
else
OS="${GRUB_DISTRIBUTOR}"
fi
# Source grub defaults
. /etc/default/grub
# loop-AES arranges things so that /dev/loop/X can be our root device, but
# the initrds that Linux uses don't like that.
case ${GRUB_DEVICE} in
/dev/loop/*|/dev/loop[0-9])
GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e
"s/^[^(]*(\([^)]\+\)).*/\1/"`
;;
esac
if [ "x${GRUB_DEVICE_UUID}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" =
"xtrue" ] \
|| ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" ; then
LINUX_ROOT_DEVICE=${GRUB_DEVICE}
else
LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
fi
test_gt ()
{
local a=`echo $1 | sed -e
"s,.*/vmlinu[zx]-,,g;s/[._-]\(pre\|rc\|test\|git\|old\)/~\1/g"`
local b=`echo $2 | sed -e
"s,.*/vmlinu[zx]-,,g;s/[._-]\(pre\|rc\|test\|git\|old\)/~\1/g"`
if [ "x$b" = "x" ] ; then
return 0
fi
dpkg --compare-versions "$a" gt "$b"
return $?
}
find_latest ()
{
local a=""
for i in $@ ; do
if test_gt "$i" "$a" ; then
a="$i"
fi
done
echo "$a"
}
list=`for i in /boot/vmlinu[xz]-* /vmlinu[xz]-* ; do
if grub_file_is_not_garbage "$i" && grep -q 'DOM0=y'
${i/vmlinu[xz]/config} ; then echo -n "$i " ; fi
done`
while [ "x$list" != "x" ] ; do
linux=`find_latest $list`
echo "Found linux image: $linux" >&2
basename=`basename $linux`
dirname=`dirname $linux`
rel_dirname=`make_system_path_relative_to_its_root $dirname`
version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
alt_version=`echo $version | sed -e "s,\.old$,,g"`
linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
initrd=
for i in "initrd.img-${version}" "initrd-${version}.img" \
"initrd.img-${alt_version}" "initrd-${alt_version}.img"; do
if test -e "${dirname}/${i}" ; then
initrd="$i"
break
fi
done
if test -n "${initrd}" ; then
echo "Found initrd image: ${dirname}/${initrd}" >&2
else
# "UUID=" magic is parsed by initrds. Since there's no initrd, it can't
work here.
linux_root_device_thisversion=${GRUB_DEVICE}
fi
cat << EOF
insmod lvm
set root=(system-dom0_0)
menuentry "Xen ${OS}, linux ${version}" {
multiboot dummy=dummy /boot/xen.gz $GRUB_CMDLINE_XEN_DEFAULT
module ${rel_dirname}/${basename}
root=${linux_root_device_thisversion} $GRUB_CMDLINE_LINUX_DEFAULT
EOF
if test -n "${initrd}" ; then
cat << EOF
module ${rel_dirname}/${initrd} ${rel_dirname}/${initrd}
EOF
fi
cat << EOF
}
EOF
list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '`
done
_______________________________________________
Grub-devel mailing list
address@hidden
http://lists.gnu.org/mailman/listinfo/grub-devel
_______________________________________________
Grub-devel mailing list
address@hidden
http://lists.gnu.org/mailman/listinfo/grub-devel