[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug #30257] 10_linux ignores xen hypervisor entries and dom0 kernels
From: |
Bruce Edge |
Subject: |
[bug #30257] 10_linux ignores xen hypervisor entries and dom0 kernels |
Date: |
Thu, 24 Jun 2010 22:38:34 +0000 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.427.0 Safari/534.1 |
URL:
<http://savannah.gnu.org/bugs/?30257>
Summary: 10_linux ignores xen hypervisor entries and dom0
kernels
Project: GNU GRUB
Submitted by: bruce_edge
Submitted on: Thu 24 Jun 2010 10:38:34 PM GMT
Category: Configuration
Severity: Major
Priority: 5 - Normal
Item Group: Feature Request
Status: None
Privacy: Public
Assigned to: None
Originator Name:
Originator Email: address@hidden
Open/Closed: Open
Discussion Lock: Any
Release:
Release: 1.98
Reproducibility: Every Time
Planned Release: None
_______________________________________________________
Details:
The current /etc/grub.d/10_linux generates boot stanzas for linux kernels
only and ignores xen hypervisors.
Boot entries could be generated for the default hypervisor and any dom0
compatible kernels by default.
This behavior could be controlled through additional variables in
/etc/default/grub to specify the xen boot args.
I posted a version of such script that worked for 1.96 on Ubuntu 9.04, but
that needs work for 1.98.
I had made it as a separate script, 09_xen as opposed to integrating into
10_linux, but I think that if it were integrated into 10_linux, then it would
fit better with the original intent of that script.
Perhaps have an additional variable that disables the hypervisor stuff
completely? Although, I don't think that anyone who installs a hypoervisor is
going to wonder where the subsequent boot entries came from.
FWIW, here's the original version (Yes it is just a hacked up copy of an old
10_linux):
#!/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`
grep -q GRUB_CMDLINE_XEN_DEFAULT /etc/default/grub || list=""
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 /boot/xen.gz dummy=dummy $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
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/bugs/?30257>
_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/
- [bug #30257] 10_linux ignores xen hypervisor entries and dom0 kernels,
Bruce Edge <=