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 <seth.goldb...@oracle.com>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), bruce.e...@lsi.com >> # 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 > Grub-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/grub-devel >
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel