[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [OSSTEST PATCH v2 20/23] grub: Move 20_linux_xen to suite-specific overlays



stretch still needs some of this, in particular the XSM changes.

Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
---
 overlay-jessie/etc/grub.d/20_linux_xen  | 220 ++++++++++++++++++++++++++++++++
 overlay-stretch/etc/grub.d/20_linux_xen | 220 ++++++++++++++++++++++++++++++++
 overlay-wheezy/etc/grub.d/20_linux_xen  | 220 ++++++++++++++++++++++++++++++++
 overlay/etc/grub.d/20_linux_xen         | 220 --------------------------------
 4 files changed, 660 insertions(+), 220 deletions(-)
 create mode 100755 overlay-jessie/etc/grub.d/20_linux_xen
 create mode 100755 overlay-stretch/etc/grub.d/20_linux_xen
 create mode 100755 overlay-wheezy/etc/grub.d/20_linux_xen
 delete mode 100755 overlay/etc/grub.d/20_linux_xen

diff --git a/overlay-jessie/etc/grub.d/20_linux_xen 
b/overlay-jessie/etc/grub.d/20_linux_xen
new file mode 100755
index 0000000..aaead1b
--- /dev/null
+++ b/overlay-jessie/etc/grub.d/20_linux_xen
@@ -0,0 +1,220 @@
+#! /bin/sh
+
+# Copied from the identically named file in grub-common 1.99-27+deb7u2.
+# This version fixes GRUB bug #43420.
+
+set -e
+
+# grub-mkconfig helper script.
+# Copyright (C) 2006,2007,2008,2009,2010  Free Software Foundation, Inc.
+#
+# GRUB is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GRUB is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
+
+prefix="/usr"
+exec_prefix="${prefix}"
+datarootdir="${prefix}/share"
+
+. "${datarootdir}/grub/grub-mkconfig_lib"
+
+export TEXTDOMAIN=grub
+export TEXTDOMAINDIR="${datarootdir}/locale"
+
+CLASS="--class gnu-linux --class gnu --class os --class xen"
+
+if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
+  OS=GNU/Linux
+else
+  OS="${GRUB_DISTRIBUTOR} GNU/Linux"
+  CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1) 
${CLASS}"
+fi
+
+# 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/"`
+    # We can't cope with devices loop-mounted from files here.
+    case ${GRUB_DEVICE} in
+      /dev/*) ;;
+      *) exit 0 ;;
+    esac
+  ;;
+esac
+
+if [ "x${GRUB_DEVICE_UUID}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" = 
"xtrue" ] \
+    || ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
+    || uses_abstraction "${GRUB_DEVICE}" lvm; then
+  LINUX_ROOT_DEVICE=${GRUB_DEVICE}
+else
+  LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
+fi
+
+# Allow overriding GRUB_CMDLINE_LINUX and GRUB_CMDLINE_LINUX_DEFAULT.
+if [ "${GRUB_CMDLINE_LINUX_XEN_REPLACE}" ]; then
+  GRUB_CMDLINE_LINUX="${GRUB_CMDLINE_LINUX_XEN_REPLACE}"
+fi
+if [ "${GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT}" ]; then
+  GRUB_CMDLINE_LINUX_DEFAULT="${GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT}"
+fi
+
+if [ "x`${grub_probe} --device ${GRUB_DEVICE} --target=fs 2>/dev/null || 
true`" = xbtrfs ] \
+    || [ "x`stat -f --printf=%T /`" = xbtrfs ]; then
+  rootsubvol="`make_system_path_relative_to_its_root /`"
+  rootsubvol="${rootsubvol#/}"
+  if [ "x${rootsubvol}" != x ]; then
+    GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} ${GRUB_CMDLINE_LINUX}"
+  fi
+fi
+
+linux_entry ()
+{
+  os="$1"
+  version="$2"
+  xen_version="$3"
+  recovery="$4"
+  args="$5"
+  xen_args="$6"
+  xsm="$7"
+  # If user wants to enable XSM support, make sure there's
+  # corresponding policy file.
+  if ${xsm} ; then
+      xenpolicy=`echo xenpolicy-$xen_version`
+      if test ! -e "${xen_dirname}/${xenpolicy}" ; then
+         return
+      fi
+      xen_args=`echo $xen_args flask=enforcing`
+      if ${recovery} ; then
+         title="$(gettext_quoted "%s, with Xen %s (XSM enabled) and Linux %s 
(recovery mode)")"
+      else
+         title="$(gettext_quoted "%s, with Xen %s (XSM enabled) and Linux %s")"
+      fi
+  else
+      xenpolicy=""
+      if ${recovery} ; then
+         title="$(gettext_quoted "%s, with Xen %s and Linux %s (recovery 
mode)")"
+      else
+         title="$(gettext_quoted "%s, with Xen %s and Linux %s")"
+      fi
+  fi
+  printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${xen_version}" 
"${version}"
+  if ! ${recovery} ; then
+      save_default_entry | sed -e "s/^/\t/"
+  fi
+
+  if [ -z "${prepare_boot_cache}" ]; then
+    prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | 
sed -e "s/^/\t/")"
+  fi
+  printf '%s\n' "${prepare_boot_cache}"
+  xmessage="$(gettext_printf "Loading Xen %s ..." ${xen_version})"
+  lmessage="$(gettext_printf "Loading Linux %s ..." ${version})"
+  cat << EOF
+       echo    '$xmessage'
+       multiboot       ${rel_xen_dirname}/${xen_basename} placeholder 
${xen_args}
+       echo    '$lmessage'
+       module  ${rel_dirname}/${basename} placeholder 
root=${linux_root_device_thisversion} ro ${args}
+EOF
+  if test -n "${initrd}" ; then
+    message="$(gettext_printf "Loading initial ramdisk ...")"
+    cat << EOF
+       echo    '$message'
+       module  ${rel_dirname}/${initrd}
+EOF
+  fi
+  if test -n "${xenpolicy}" ; then
+    message="$(gettext_printf "Loading XSM policy ...")"
+    cat << EOF
+       echo    '$message'
+       module  ${rel_dirname}/${xenpolicy}
+EOF
+  fi
+  cat << EOF
+}
+EOF
+}
+
+linux_list=`for i in /boot/vmlinu[xz]-* /vmlinu[xz]-* /boot/kernel-*; do
+    if grub_file_is_not_garbage "$i"; then
+       basename=$(basename $i)
+       version=$(echo $basename | sed -e "s,^[^0-9]*-,,g")
+       dirname=$(dirname $i)
+       config=
+       for j in "${dirname}/config-${version}" 
"${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
+           if test -e "${j}" ; then
+               config="${j}"
+               break
+           fi
+       done
+        if (grep -qx "CONFIG_XEN_DOM0=y" "${config}" 2> /dev/null || grep -qx 
"CONFIG_XEN_PRIVILEGED_GUEST=y" "${config}" 2> /dev/null); then echo -n "$i " ; 
fi
+    fi
+    done`
+if [ "x${linux_list}" = "x" ] ; then
+    exit 0
+fi
+xen_list=`for i in /boot/xen[-.]*; do
+        if grub_file_is_not_garbage "$i" ; then echo -n "$i " ; fi
+      done`
+prepare_boot_cache=
+
+while [ "x${xen_list}" != "x" ] ; do
+    list="${linux_list}"
+    current_xen=`version_find_latest $xen_list`
+    xen_basename=`basename ${current_xen}`
+    xen_dirname=`dirname ${current_xen}`
+    rel_xen_dirname=`make_system_path_relative_to_its_root $xen_dirname`
+    xen_version=`echo $xen_basename | sed -e "s,.gz$,,g;s,^xen-,,g"`
+    echo "submenu \"Xen ${xen_version}\" {"
+    while [ "x$list" != "x" ] ; do
+       linux=`version_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-${version}" "initrd.img-${alt_version}" \
+           "initrd-${alt_version}.img" "initrd-${alt_version}" \
+           "initramfs-genkernel-${version}" \
+           "initramfs-genkernel-${alt_version}" ; 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
+
+       linux_entry "${OS}" "${version}" "${xen_version}" false \
+           "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" 
"${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}" false
+       linux_entry "${OS}" "${version}" "${xen_version}" false \
+           "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" 
"${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}" true
+       if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
+           linux_entry "${OS}" "${version}" "${xen_version}" true \
+               "single ${GRUB_CMDLINE_LINUX}" "${GRUB_CMDLINE_XEN}" false
+           linux_entry "${OS}" "${version}" "${xen_version}" true \
+               "single ${GRUB_CMDLINE_LINUX}" "${GRUB_CMDLINE_XEN}" true
+       fi
+
+       list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '`
+    done
+    echo "}"
+    xen_list=`echo $xen_list | tr ' ' '\n' | grep -vx $current_xen | tr '\n' ' 
'`
+done
diff --git a/overlay-stretch/etc/grub.d/20_linux_xen 
b/overlay-stretch/etc/grub.d/20_linux_xen
new file mode 100755
index 0000000..aaead1b
--- /dev/null
+++ b/overlay-stretch/etc/grub.d/20_linux_xen
@@ -0,0 +1,220 @@
+#! /bin/sh
+
+# Copied from the identically named file in grub-common 1.99-27+deb7u2.
+# This version fixes GRUB bug #43420.
+
+set -e
+
+# grub-mkconfig helper script.
+# Copyright (C) 2006,2007,2008,2009,2010  Free Software Foundation, Inc.
+#
+# GRUB is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GRUB is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
+
+prefix="/usr"
+exec_prefix="${prefix}"
+datarootdir="${prefix}/share"
+
+. "${datarootdir}/grub/grub-mkconfig_lib"
+
+export TEXTDOMAIN=grub
+export TEXTDOMAINDIR="${datarootdir}/locale"
+
+CLASS="--class gnu-linux --class gnu --class os --class xen"
+
+if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
+  OS=GNU/Linux
+else
+  OS="${GRUB_DISTRIBUTOR} GNU/Linux"
+  CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1) 
${CLASS}"
+fi
+
+# 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/"`
+    # We can't cope with devices loop-mounted from files here.
+    case ${GRUB_DEVICE} in
+      /dev/*) ;;
+      *) exit 0 ;;
+    esac
+  ;;
+esac
+
+if [ "x${GRUB_DEVICE_UUID}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" = 
"xtrue" ] \
+    || ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
+    || uses_abstraction "${GRUB_DEVICE}" lvm; then
+  LINUX_ROOT_DEVICE=${GRUB_DEVICE}
+else
+  LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
+fi
+
+# Allow overriding GRUB_CMDLINE_LINUX and GRUB_CMDLINE_LINUX_DEFAULT.
+if [ "${GRUB_CMDLINE_LINUX_XEN_REPLACE}" ]; then
+  GRUB_CMDLINE_LINUX="${GRUB_CMDLINE_LINUX_XEN_REPLACE}"
+fi
+if [ "${GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT}" ]; then
+  GRUB_CMDLINE_LINUX_DEFAULT="${GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT}"
+fi
+
+if [ "x`${grub_probe} --device ${GRUB_DEVICE} --target=fs 2>/dev/null || 
true`" = xbtrfs ] \
+    || [ "x`stat -f --printf=%T /`" = xbtrfs ]; then
+  rootsubvol="`make_system_path_relative_to_its_root /`"
+  rootsubvol="${rootsubvol#/}"
+  if [ "x${rootsubvol}" != x ]; then
+    GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} ${GRUB_CMDLINE_LINUX}"
+  fi
+fi
+
+linux_entry ()
+{
+  os="$1"
+  version="$2"
+  xen_version="$3"
+  recovery="$4"
+  args="$5"
+  xen_args="$6"
+  xsm="$7"
+  # If user wants to enable XSM support, make sure there's
+  # corresponding policy file.
+  if ${xsm} ; then
+      xenpolicy=`echo xenpolicy-$xen_version`
+      if test ! -e "${xen_dirname}/${xenpolicy}" ; then
+         return
+      fi
+      xen_args=`echo $xen_args flask=enforcing`
+      if ${recovery} ; then
+         title="$(gettext_quoted "%s, with Xen %s (XSM enabled) and Linux %s 
(recovery mode)")"
+      else
+         title="$(gettext_quoted "%s, with Xen %s (XSM enabled) and Linux %s")"
+      fi
+  else
+      xenpolicy=""
+      if ${recovery} ; then
+         title="$(gettext_quoted "%s, with Xen %s and Linux %s (recovery 
mode)")"
+      else
+         title="$(gettext_quoted "%s, with Xen %s and Linux %s")"
+      fi
+  fi
+  printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${xen_version}" 
"${version}"
+  if ! ${recovery} ; then
+      save_default_entry | sed -e "s/^/\t/"
+  fi
+
+  if [ -z "${prepare_boot_cache}" ]; then
+    prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | 
sed -e "s/^/\t/")"
+  fi
+  printf '%s\n' "${prepare_boot_cache}"
+  xmessage="$(gettext_printf "Loading Xen %s ..." ${xen_version})"
+  lmessage="$(gettext_printf "Loading Linux %s ..." ${version})"
+  cat << EOF
+       echo    '$xmessage'
+       multiboot       ${rel_xen_dirname}/${xen_basename} placeholder 
${xen_args}
+       echo    '$lmessage'
+       module  ${rel_dirname}/${basename} placeholder 
root=${linux_root_device_thisversion} ro ${args}
+EOF
+  if test -n "${initrd}" ; then
+    message="$(gettext_printf "Loading initial ramdisk ...")"
+    cat << EOF
+       echo    '$message'
+       module  ${rel_dirname}/${initrd}
+EOF
+  fi
+  if test -n "${xenpolicy}" ; then
+    message="$(gettext_printf "Loading XSM policy ...")"
+    cat << EOF
+       echo    '$message'
+       module  ${rel_dirname}/${xenpolicy}
+EOF
+  fi
+  cat << EOF
+}
+EOF
+}
+
+linux_list=`for i in /boot/vmlinu[xz]-* /vmlinu[xz]-* /boot/kernel-*; do
+    if grub_file_is_not_garbage "$i"; then
+       basename=$(basename $i)
+       version=$(echo $basename | sed -e "s,^[^0-9]*-,,g")
+       dirname=$(dirname $i)
+       config=
+       for j in "${dirname}/config-${version}" 
"${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
+           if test -e "${j}" ; then
+               config="${j}"
+               break
+           fi
+       done
+        if (grep -qx "CONFIG_XEN_DOM0=y" "${config}" 2> /dev/null || grep -qx 
"CONFIG_XEN_PRIVILEGED_GUEST=y" "${config}" 2> /dev/null); then echo -n "$i " ; 
fi
+    fi
+    done`
+if [ "x${linux_list}" = "x" ] ; then
+    exit 0
+fi
+xen_list=`for i in /boot/xen[-.]*; do
+        if grub_file_is_not_garbage "$i" ; then echo -n "$i " ; fi
+      done`
+prepare_boot_cache=
+
+while [ "x${xen_list}" != "x" ] ; do
+    list="${linux_list}"
+    current_xen=`version_find_latest $xen_list`
+    xen_basename=`basename ${current_xen}`
+    xen_dirname=`dirname ${current_xen}`
+    rel_xen_dirname=`make_system_path_relative_to_its_root $xen_dirname`
+    xen_version=`echo $xen_basename | sed -e "s,.gz$,,g;s,^xen-,,g"`
+    echo "submenu \"Xen ${xen_version}\" {"
+    while [ "x$list" != "x" ] ; do
+       linux=`version_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-${version}" "initrd.img-${alt_version}" \
+           "initrd-${alt_version}.img" "initrd-${alt_version}" \
+           "initramfs-genkernel-${version}" \
+           "initramfs-genkernel-${alt_version}" ; 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
+
+       linux_entry "${OS}" "${version}" "${xen_version}" false \
+           "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" 
"${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}" false
+       linux_entry "${OS}" "${version}" "${xen_version}" false \
+           "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" 
"${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}" true
+       if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
+           linux_entry "${OS}" "${version}" "${xen_version}" true \
+               "single ${GRUB_CMDLINE_LINUX}" "${GRUB_CMDLINE_XEN}" false
+           linux_entry "${OS}" "${version}" "${xen_version}" true \
+               "single ${GRUB_CMDLINE_LINUX}" "${GRUB_CMDLINE_XEN}" true
+       fi
+
+       list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '`
+    done
+    echo "}"
+    xen_list=`echo $xen_list | tr ' ' '\n' | grep -vx $current_xen | tr '\n' ' 
'`
+done
diff --git a/overlay-wheezy/etc/grub.d/20_linux_xen 
b/overlay-wheezy/etc/grub.d/20_linux_xen
new file mode 100755
index 0000000..aaead1b
--- /dev/null
+++ b/overlay-wheezy/etc/grub.d/20_linux_xen
@@ -0,0 +1,220 @@
+#! /bin/sh
+
+# Copied from the identically named file in grub-common 1.99-27+deb7u2.
+# This version fixes GRUB bug #43420.
+
+set -e
+
+# grub-mkconfig helper script.
+# Copyright (C) 2006,2007,2008,2009,2010  Free Software Foundation, Inc.
+#
+# GRUB is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GRUB is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
+
+prefix="/usr"
+exec_prefix="${prefix}"
+datarootdir="${prefix}/share"
+
+. "${datarootdir}/grub/grub-mkconfig_lib"
+
+export TEXTDOMAIN=grub
+export TEXTDOMAINDIR="${datarootdir}/locale"
+
+CLASS="--class gnu-linux --class gnu --class os --class xen"
+
+if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
+  OS=GNU/Linux
+else
+  OS="${GRUB_DISTRIBUTOR} GNU/Linux"
+  CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1) 
${CLASS}"
+fi
+
+# 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/"`
+    # We can't cope with devices loop-mounted from files here.
+    case ${GRUB_DEVICE} in
+      /dev/*) ;;
+      *) exit 0 ;;
+    esac
+  ;;
+esac
+
+if [ "x${GRUB_DEVICE_UUID}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" = 
"xtrue" ] \
+    || ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
+    || uses_abstraction "${GRUB_DEVICE}" lvm; then
+  LINUX_ROOT_DEVICE=${GRUB_DEVICE}
+else
+  LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
+fi
+
+# Allow overriding GRUB_CMDLINE_LINUX and GRUB_CMDLINE_LINUX_DEFAULT.
+if [ "${GRUB_CMDLINE_LINUX_XEN_REPLACE}" ]; then
+  GRUB_CMDLINE_LINUX="${GRUB_CMDLINE_LINUX_XEN_REPLACE}"
+fi
+if [ "${GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT}" ]; then
+  GRUB_CMDLINE_LINUX_DEFAULT="${GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT}"
+fi
+
+if [ "x`${grub_probe} --device ${GRUB_DEVICE} --target=fs 2>/dev/null || 
true`" = xbtrfs ] \
+    || [ "x`stat -f --printf=%T /`" = xbtrfs ]; then
+  rootsubvol="`make_system_path_relative_to_its_root /`"
+  rootsubvol="${rootsubvol#/}"
+  if [ "x${rootsubvol}" != x ]; then
+    GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} ${GRUB_CMDLINE_LINUX}"
+  fi
+fi
+
+linux_entry ()
+{
+  os="$1"
+  version="$2"
+  xen_version="$3"
+  recovery="$4"
+  args="$5"
+  xen_args="$6"
+  xsm="$7"
+  # If user wants to enable XSM support, make sure there's
+  # corresponding policy file.
+  if ${xsm} ; then
+      xenpolicy=`echo xenpolicy-$xen_version`
+      if test ! -e "${xen_dirname}/${xenpolicy}" ; then
+         return
+      fi
+      xen_args=`echo $xen_args flask=enforcing`
+      if ${recovery} ; then
+         title="$(gettext_quoted "%s, with Xen %s (XSM enabled) and Linux %s 
(recovery mode)")"
+      else
+         title="$(gettext_quoted "%s, with Xen %s (XSM enabled) and Linux %s")"
+      fi
+  else
+      xenpolicy=""
+      if ${recovery} ; then
+         title="$(gettext_quoted "%s, with Xen %s and Linux %s (recovery 
mode)")"
+      else
+         title="$(gettext_quoted "%s, with Xen %s and Linux %s")"
+      fi
+  fi
+  printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${xen_version}" 
"${version}"
+  if ! ${recovery} ; then
+      save_default_entry | sed -e "s/^/\t/"
+  fi
+
+  if [ -z "${prepare_boot_cache}" ]; then
+    prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | 
sed -e "s/^/\t/")"
+  fi
+  printf '%s\n' "${prepare_boot_cache}"
+  xmessage="$(gettext_printf "Loading Xen %s ..." ${xen_version})"
+  lmessage="$(gettext_printf "Loading Linux %s ..." ${version})"
+  cat << EOF
+       echo    '$xmessage'
+       multiboot       ${rel_xen_dirname}/${xen_basename} placeholder 
${xen_args}
+       echo    '$lmessage'
+       module  ${rel_dirname}/${basename} placeholder 
root=${linux_root_device_thisversion} ro ${args}
+EOF
+  if test -n "${initrd}" ; then
+    message="$(gettext_printf "Loading initial ramdisk ...")"
+    cat << EOF
+       echo    '$message'
+       module  ${rel_dirname}/${initrd}
+EOF
+  fi
+  if test -n "${xenpolicy}" ; then
+    message="$(gettext_printf "Loading XSM policy ...")"
+    cat << EOF
+       echo    '$message'
+       module  ${rel_dirname}/${xenpolicy}
+EOF
+  fi
+  cat << EOF
+}
+EOF
+}
+
+linux_list=`for i in /boot/vmlinu[xz]-* /vmlinu[xz]-* /boot/kernel-*; do
+    if grub_file_is_not_garbage "$i"; then
+       basename=$(basename $i)
+       version=$(echo $basename | sed -e "s,^[^0-9]*-,,g")
+       dirname=$(dirname $i)
+       config=
+       for j in "${dirname}/config-${version}" 
"${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
+           if test -e "${j}" ; then
+               config="${j}"
+               break
+           fi
+       done
+        if (grep -qx "CONFIG_XEN_DOM0=y" "${config}" 2> /dev/null || grep -qx 
"CONFIG_XEN_PRIVILEGED_GUEST=y" "${config}" 2> /dev/null); then echo -n "$i " ; 
fi
+    fi
+    done`
+if [ "x${linux_list}" = "x" ] ; then
+    exit 0
+fi
+xen_list=`for i in /boot/xen[-.]*; do
+        if grub_file_is_not_garbage "$i" ; then echo -n "$i " ; fi
+      done`
+prepare_boot_cache=
+
+while [ "x${xen_list}" != "x" ] ; do
+    list="${linux_list}"
+    current_xen=`version_find_latest $xen_list`
+    xen_basename=`basename ${current_xen}`
+    xen_dirname=`dirname ${current_xen}`
+    rel_xen_dirname=`make_system_path_relative_to_its_root $xen_dirname`
+    xen_version=`echo $xen_basename | sed -e "s,.gz$,,g;s,^xen-,,g"`
+    echo "submenu \"Xen ${xen_version}\" {"
+    while [ "x$list" != "x" ] ; do
+       linux=`version_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-${version}" "initrd.img-${alt_version}" \
+           "initrd-${alt_version}.img" "initrd-${alt_version}" \
+           "initramfs-genkernel-${version}" \
+           "initramfs-genkernel-${alt_version}" ; 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
+
+       linux_entry "${OS}" "${version}" "${xen_version}" false \
+           "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" 
"${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}" false
+       linux_entry "${OS}" "${version}" "${xen_version}" false \
+           "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" 
"${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}" true
+       if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
+           linux_entry "${OS}" "${version}" "${xen_version}" true \
+               "single ${GRUB_CMDLINE_LINUX}" "${GRUB_CMDLINE_XEN}" false
+           linux_entry "${OS}" "${version}" "${xen_version}" true \
+               "single ${GRUB_CMDLINE_LINUX}" "${GRUB_CMDLINE_XEN}" true
+       fi
+
+       list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '`
+    done
+    echo "}"
+    xen_list=`echo $xen_list | tr ' ' '\n' | grep -vx $current_xen | tr '\n' ' 
'`
+done
diff --git a/overlay/etc/grub.d/20_linux_xen b/overlay/etc/grub.d/20_linux_xen
deleted file mode 100755
index aaead1b..0000000
--- a/overlay/etc/grub.d/20_linux_xen
+++ /dev/null
@@ -1,220 +0,0 @@
-#! /bin/sh
-
-# Copied from the identically named file in grub-common 1.99-27+deb7u2.
-# This version fixes GRUB bug #43420.
-
-set -e
-
-# grub-mkconfig helper script.
-# Copyright (C) 2006,2007,2008,2009,2010  Free Software Foundation, Inc.
-#
-# GRUB is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# GRUB is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
-
-prefix="/usr"
-exec_prefix="${prefix}"
-datarootdir="${prefix}/share"
-
-. "${datarootdir}/grub/grub-mkconfig_lib"
-
-export TEXTDOMAIN=grub
-export TEXTDOMAINDIR="${datarootdir}/locale"
-
-CLASS="--class gnu-linux --class gnu --class os --class xen"
-
-if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
-  OS=GNU/Linux
-else
-  OS="${GRUB_DISTRIBUTOR} GNU/Linux"
-  CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1) 
${CLASS}"
-fi
-
-# 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/"`
-    # We can't cope with devices loop-mounted from files here.
-    case ${GRUB_DEVICE} in
-      /dev/*) ;;
-      *) exit 0 ;;
-    esac
-  ;;
-esac
-
-if [ "x${GRUB_DEVICE_UUID}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" = 
"xtrue" ] \
-    || ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
-    || uses_abstraction "${GRUB_DEVICE}" lvm; then
-  LINUX_ROOT_DEVICE=${GRUB_DEVICE}
-else
-  LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
-fi
-
-# Allow overriding GRUB_CMDLINE_LINUX and GRUB_CMDLINE_LINUX_DEFAULT.
-if [ "${GRUB_CMDLINE_LINUX_XEN_REPLACE}" ]; then
-  GRUB_CMDLINE_LINUX="${GRUB_CMDLINE_LINUX_XEN_REPLACE}"
-fi
-if [ "${GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT}" ]; then
-  GRUB_CMDLINE_LINUX_DEFAULT="${GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT}"
-fi
-
-if [ "x`${grub_probe} --device ${GRUB_DEVICE} --target=fs 2>/dev/null || 
true`" = xbtrfs ] \
-    || [ "x`stat -f --printf=%T /`" = xbtrfs ]; then
-  rootsubvol="`make_system_path_relative_to_its_root /`"
-  rootsubvol="${rootsubvol#/}"
-  if [ "x${rootsubvol}" != x ]; then
-    GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} ${GRUB_CMDLINE_LINUX}"
-  fi
-fi
-
-linux_entry ()
-{
-  os="$1"
-  version="$2"
-  xen_version="$3"
-  recovery="$4"
-  args="$5"
-  xen_args="$6"
-  xsm="$7"
-  # If user wants to enable XSM support, make sure there's
-  # corresponding policy file.
-  if ${xsm} ; then
-      xenpolicy=`echo xenpolicy-$xen_version`
-      if test ! -e "${xen_dirname}/${xenpolicy}" ; then
-         return
-      fi
-      xen_args=`echo $xen_args flask=enforcing`
-      if ${recovery} ; then
-         title="$(gettext_quoted "%s, with Xen %s (XSM enabled) and Linux %s 
(recovery mode)")"
-      else
-         title="$(gettext_quoted "%s, with Xen %s (XSM enabled) and Linux %s")"
-      fi
-  else
-      xenpolicy=""
-      if ${recovery} ; then
-         title="$(gettext_quoted "%s, with Xen %s and Linux %s (recovery 
mode)")"
-      else
-         title="$(gettext_quoted "%s, with Xen %s and Linux %s")"
-      fi
-  fi
-  printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${xen_version}" 
"${version}"
-  if ! ${recovery} ; then
-      save_default_entry | sed -e "s/^/\t/"
-  fi
-
-  if [ -z "${prepare_boot_cache}" ]; then
-    prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | 
sed -e "s/^/\t/")"
-  fi
-  printf '%s\n' "${prepare_boot_cache}"
-  xmessage="$(gettext_printf "Loading Xen %s ..." ${xen_version})"
-  lmessage="$(gettext_printf "Loading Linux %s ..." ${version})"
-  cat << EOF
-       echo    '$xmessage'
-       multiboot       ${rel_xen_dirname}/${xen_basename} placeholder 
${xen_args}
-       echo    '$lmessage'
-       module  ${rel_dirname}/${basename} placeholder 
root=${linux_root_device_thisversion} ro ${args}
-EOF
-  if test -n "${initrd}" ; then
-    message="$(gettext_printf "Loading initial ramdisk ...")"
-    cat << EOF
-       echo    '$message'
-       module  ${rel_dirname}/${initrd}
-EOF
-  fi
-  if test -n "${xenpolicy}" ; then
-    message="$(gettext_printf "Loading XSM policy ...")"
-    cat << EOF
-       echo    '$message'
-       module  ${rel_dirname}/${xenpolicy}
-EOF
-  fi
-  cat << EOF
-}
-EOF
-}
-
-linux_list=`for i in /boot/vmlinu[xz]-* /vmlinu[xz]-* /boot/kernel-*; do
-    if grub_file_is_not_garbage "$i"; then
-       basename=$(basename $i)
-       version=$(echo $basename | sed -e "s,^[^0-9]*-,,g")
-       dirname=$(dirname $i)
-       config=
-       for j in "${dirname}/config-${version}" 
"${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
-           if test -e "${j}" ; then
-               config="${j}"
-               break
-           fi
-       done
-        if (grep -qx "CONFIG_XEN_DOM0=y" "${config}" 2> /dev/null || grep -qx 
"CONFIG_XEN_PRIVILEGED_GUEST=y" "${config}" 2> /dev/null); then echo -n "$i " ; 
fi
-    fi
-    done`
-if [ "x${linux_list}" = "x" ] ; then
-    exit 0
-fi
-xen_list=`for i in /boot/xen[-.]*; do
-        if grub_file_is_not_garbage "$i" ; then echo -n "$i " ; fi
-      done`
-prepare_boot_cache=
-
-while [ "x${xen_list}" != "x" ] ; do
-    list="${linux_list}"
-    current_xen=`version_find_latest $xen_list`
-    xen_basename=`basename ${current_xen}`
-    xen_dirname=`dirname ${current_xen}`
-    rel_xen_dirname=`make_system_path_relative_to_its_root $xen_dirname`
-    xen_version=`echo $xen_basename | sed -e "s,.gz$,,g;s,^xen-,,g"`
-    echo "submenu \"Xen ${xen_version}\" {"
-    while [ "x$list" != "x" ] ; do
-       linux=`version_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-${version}" "initrd.img-${alt_version}" \
-           "initrd-${alt_version}.img" "initrd-${alt_version}" \
-           "initramfs-genkernel-${version}" \
-           "initramfs-genkernel-${alt_version}" ; 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
-
-       linux_entry "${OS}" "${version}" "${xen_version}" false \
-           "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" 
"${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}" false
-       linux_entry "${OS}" "${version}" "${xen_version}" false \
-           "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" 
"${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}" true
-       if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
-           linux_entry "${OS}" "${version}" "${xen_version}" true \
-               "single ${GRUB_CMDLINE_LINUX}" "${GRUB_CMDLINE_XEN}" false
-           linux_entry "${OS}" "${version}" "${xen_version}" true \
-               "single ${GRUB_CMDLINE_LINUX}" "${GRUB_CMDLINE_XEN}" true
-       fi
-
-       list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '`
-    done
-    echo "}"
-    xen_list=`echo $xen_list | tr ' ' '\n' | grep -vx $current_xen | tr '\n' ' 
'`
-done
-- 
2.1.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.