SHA256
1
0
forked from pool/grub2

Accepting request 259156 from Base:System

1

OBS-URL: https://build.opensuse.org/request/show/259156
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/grub2?expand=0&rev=103
This commit is contained in:
Dominique Leuenberger 2014-11-11 23:20:51 +00:00 committed by Git OBS Bridge
parent 950c565c10
commit 82928bcff7
3 changed files with 80 additions and 1 deletions

View File

@ -0,0 +1,60 @@
Index: grub-2.02~beta2/util/setup.c
===================================================================
--- grub-2.02~beta2.orig/util/setup.c
+++ grub-2.02~beta2/util/setup.c
@@ -501,8 +501,44 @@ SETUP (const char *dir,
err = grub_util_ldm_embed (dest_dev->disk, &nsec, maxsec,
GRUB_EMBED_PCBIOS, &sectors);
else if (ctx.dest_partmap)
- err = ctx.dest_partmap->embed (dest_dev->disk, &nsec, maxsec,
- GRUB_EMBED_PCBIOS, &sectors);
+ {
+ err = ctx.dest_partmap->embed (dest_dev->disk, &nsec, maxsec,
+ GRUB_EMBED_PCBIOS, &sectors);
+#ifdef GRUB_SETUP_BIOS
+ if (err == GRUB_ERR_OUT_OF_RANGE
+ && strcmp (ctx.dest_partmap->name, "msdos") == 0
+ && dest_dev->disk->id == root_dev->disk->id
+ && dest_dev->disk->dev->id == root_dev->disk->dev->id)
+ {
+ grub_fs_t root_fs;
+
+ root_fs = grub_fs_probe (root_dev);
+ if (root_fs && root_fs->embed)
+ {
+ grub_disk_addr_t *fs_sectors;
+ unsigned int fs_nsec;
+
+ fs_sectors = NULL;
+ fs_nsec = core_sectors;
+ err = root_fs->embed (root_dev, &fs_nsec, maxsec,
+ GRUB_EMBED_PCBIOS, &fs_sectors);
+ if (!err && fs_nsec >= core_sectors)
+ {
+ grub_util_info ("Your msdos embedding area is too small, will use file system embedding area instead");
+ sectors = fs_sectors;
+ nsec = fs_nsec;
+ ctx.container = root_dev->disk->partition;
+ core_dev = root_dev;
+ }
+ else
+ {
+ if (fs_sectors)
+ grub_free (fs_sectors);
+ }
+ }
+ }
+#endif
+ }
else
err = fs->embed (dest_dev, &nsec, maxsec,
GRUB_EMBED_PCBIOS, &sectors);
@@ -584,7 +620,7 @@ SETUP (const char *dir,
/* Write the core image onto the disk. */
for (i = 0; i < nsec; i++)
- grub_disk_write (dest_dev->disk, sectors[i], 0,
+ grub_disk_write (core_dev->disk, sectors[i], 0,
GRUB_DISK_SECTOR_SIZE,
core_img + i * GRUB_DISK_SECTOR_SIZE);

View File

@ -1,3 +1,20 @@
-------------------------------------------------------------------
Thu Oct 30 15:18:16 CET 2014 - jdelvare@suse.de
- grub2.spec: Fix conditional construct which wasn't supported by
older versions of rpmbuild (caused error message
"parseExpressionBoolean returns -1".)
-------------------------------------------------------------------
Thu Oct 30 07:36:15 UTC 2014 - mchang@suse.com
- fix errors when boot is btrfs with Windows partition scheme. The
first partition is created on cylinder boundary that can't offer
enough room for core.img and also the installation has to be in
logical paritition which made MBR the only location to install.
(bnc#841247)
* add grub2-setup-try-fs-embed-if-mbr-gap-too-small.patch
-------------------------------------------------------------------
Tue Sep 30 03:45:04 UTC 2014 - mchang@suse.com

View File

@ -79,7 +79,7 @@ BuildRequires: xen-devel
%define grubarch %{grubcpu}-%{platform}
# build efi bootloader on some platforms only:
%if ! 0%{?efi}
%if ! 0%{?efi:1}
%global efi %{ix86} x86_64 ia64 aarch64
%endif
%ifarch aarch64
@ -158,6 +158,7 @@ Patch45: grub2-efinet-reopen-SNP-protocol-for-exclusive-use-by-grub.patch
Patch46: grub2-xen-legacy-config-device-name.patch
Patch47: grub2-Initialized-initrd_ctx-so-we-don-t-free-a-random-poi.patch
Patch48: grub2-btrfs-fix-get_root-key-comparison-failures-due-to-en.patch
Patch49: grub2-setup-try-fs-embed-if-mbr-gap-too-small.patch
# Btrfs snapshot booting related patches
Patch101: grub2-btrfs-01-add-ability-to-boot-from-subvolumes.patch
Patch102: grub2-btrfs-02-export-subvolume-envvars.patch
@ -364,6 +365,7 @@ mv po/grub.pot po/%{name}.pot
%patch46 -p1
%patch47 -p1
%patch48 -p1
%patch49 -p1
%patch101 -p1
%patch102 -p1
%patch103 -p1