From 380eb71c9006ae9a0141573dd556fa59779794b31be80ce8f3f26a614e9bc009 Mon Sep 17 00:00:00 2001 From: Andrei Borzenkov Date: Mon, 11 May 2015 11:16:27 +0000 Subject: [PATCH] Accepting request 306321 from home:michael-chang:boo926795 - Support booting opensuse installer as PV DomU (boo#926795) * added grub2-xen.cfg for tracking default pvgrub2 xen configs rather than generating it from spec file * grub2-xen.cfg: from Olaf Hering OBS-URL: https://build.opensuse.org/request/show/306321 OBS-URL: https://build.opensuse.org/package/show/Base:System/grub2?expand=0&rev=156 --- grub2-xen.cfg | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++ grub2.changes | 8 ++++ grub2.spec | 23 ++-------- 3 files changed, 133 insertions(+), 20 deletions(-) create mode 100644 grub2-xen.cfg diff --git a/grub2-xen.cfg b/grub2-xen.cfg new file mode 100644 index 0000000..5bb3ab8 --- /dev/null +++ b/grub2-xen.cfg @@ -0,0 +1,122 @@ +insmod part_msdos +insmod part_gpt +insmod search +insmod configfile +insmod legacy_configfile + +set debian_cddev="" +set debian_cdarch="" +if [ "${grub_cpu}" = "x86_64" ]; then + debian_cdarch="amd" +fi +if [ "${grub_cpu}" = "i386" ]; then + debian_cdarch="i386" +fi +if [ -n "${debian_cdarch}" ]; then + set debian_kern="/install.${debian_cdarch}/xen/vmlinuz" + set debian_initrd="/install.${debian_cdarch}/xen/initrd.gz" + search -s debian_domUcfg -f "/install.${debian_cdarch}/xen/debian.cfg" + search -s debian_cdkern -f "${debian_kern}" + search -s debian_cdinitrd -f "${debian_initrd}" + if [ -n "${debian_domUcfg}" -a -n "${debian_cdinitrd}" -a -n "${debian_cdkern}" -a "${debian_domUcfg}" = "${debian_cdinitrd}" -a "${debian_domUcfg}" = "${debian_cdkern}" ]; then + debian_cddev="${debian_domUcfg}" + fi +fi + +set fedora_cddev="" +if [ "${grub_cpu}" = "x86_64" ]; then + set fedora_kern="/images/pxeboot/vmlinuz" + set fedora_initrd="/images/pxeboot/initrd.img" + search -s fedora_cdkern -f "${fedora_kern}" + search -s fedora_cdinitrd -f "${fedora_initrd}" + if [ -n "${fedora_cdkern}" -a -n "${fedora_cdinitrd}" -a "${fedora_cdkern}" = "${fedora_cdinitrd}" ]; then + set fedora_cddev="${fedora_cdkern}" + fi +fi + +set suse_cddev="" +search -s suse_cddev_content -f "/content" +search -s suse_cddev_product -f "/media.1/products" +if [ -n "${suse_cddev_content}" -a -n "${suse_cddev_product}" -a "${suse_cddev_content}" = "${suse_cddev_product}" ]; then + set suse_cddev="${suse_cddev_content}" +fi + +hdcfg_lst="/boot/grub2/grub.cfg \ +/@/boot/grub2/grub.cfg \ +/boot/grub/menu.lst \ +/grub2/grub.cfg \ +/grub/menu.lst" + +set hdcfg="" +for c in ${hdcfg_lst}; do + if search -s hddev -f "${c}"; then + set hdcfg="${c}" + break + fi +done + +set timeout=0 +if [ -n "${debian_cddev}" ]; then + set timeout=8 + menuentry "${debian_cddev} Debian Install" { + set root="${debian_cddev}" + linux "${debian_kern}" ignore_loglevel + initrd "${debian_initrd}" + } +fi + +if [ -n "${fedora_cddev}" ]; then + set timeout=8 + menuentry "${fedora_cddev} Fedora Install" { + set root="${fedora_cddev}" + linux "${fedora_kern}" ignore_loglevel + initrd "${fedora_initrd}" + } + menuentry "${fedora_cddev} Fedora Rescue" { + set root="${fedora_cddev}" + linux "${fedora_kern}" ignore_loglevel rescue + initrd "${fedora_initrd}" + } +fi + +if [ -n "${suse_cddev}" ]; then + if [ "${grub_cpu}" = "i386" ]; then + set suse_cdarch="i586" + else + set suse_cdarch="${grub_cpu}" + fi + set timeout=8 + set root="${suse_cddev}" + set suse_cdcfg="/boot/${suse_cdarch}/grub2-xen/grub.cfg" + set suse_cdkern="/boot/${suse_cdarch}/vmlinuz-xen" + set suse_cdinitrd="/boot/${suse_cdarch}/initrd-xen" + if [ -f "${suse_cdcfg}" ]; then + menuentry "${suse_cddev} SUSE Install menu" { + set root="${suse_cddev}" + configfile "${suse_cdcfg}" + } + elif [ -f "${suse_cdkern}" -a -f "$suse_cdinitrd" ]; then + menuentry "${suse_cddev} SUSE Install" { + linux "${suse_cdkern}" linemode=1 xencons=hvc0 + initrd "${suse_cdinitrd}" + } + menuentry "${suse_cddev} SUSE Rescue" { + linux "${suse_cdkern}" linemode=1 xencons=hvc0 rescue=1 + initrd "${suse_cdinitrd}" + } + menuentry "${suse_cddev} SUSE Upgrade" { + linux "${suse_cdkern}" linemode=1 xencons=hvc0 upgrade=1 + initrd "${suse_cdinitrd}" + } + else + echo "the device ${suse_cddev} is not xen pv bootable" + fi +fi + +if [ -n "${hddev}" ] ; then + set default="Boot From Hard Disk" + menuentry "${hddev} Boot From Hard Disk" { + set root="${hddev}" + configfile "${hdcfg}" + } +fi diff --git a/grub2.changes b/grub2.changes index 1c70d4a..0f42f28 100644 --- a/grub2.changes +++ b/grub2.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Mon May 11 08:50:14 UTC 2015 - mchang@suse.com + +- Support booting opensuse installer as PV DomU (boo#926795) + * added grub2-xen.cfg for tracking default pvgrub2 xen configs rather than + generating it from spec file + * grub2-xen.cfg: from Olaf Hering + ------------------------------------------------------------------- Sun May 10 19:38:00 UTC 2015 - arvidjaar@gmail.com diff --git a/grub2.spec b/grub2.spec index 7c50dab..70805ea 100644 --- a/grub2.spec +++ b/grub2.spec @@ -1,7 +1,7 @@ # # spec file for package grub2 # -# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -146,6 +146,7 @@ Source11: SLES-UEFI-CA-Certificate.crt Source12: grub2-snapper-plugin.sh Source14: 80_suse_btrfs_snapshot Source15: grub2-once.service +Source16: grub2-xen.cfg Source1000: PATCH_POLICY Patch1: rename-grub-info-file-to-grub2.patch Patch2: grub2-linux.patch @@ -525,25 +526,7 @@ cd build-xen --program-transform-name=s,grub,%{name}, make %{?_smp_mflags} -cat > ./grub.cfg <