grub2/grub2-iterate-and-hook-for-extended-partition.patch
Michael Chang d108ec594a Accepting request 1196023 from home:michael-chang:test:grub2
- Introduces a new package, grub2-x86_64-efi-bls, which includes a
  straightforward grubbls.efi file. This file can be copied to the EFI System
  Partition (ESP) along with boot fragments in the Boot Loader Specification
  (BLS) format
  * 0001-Streamline-BLS-and-improve-PCR-stability.patch
- Fix crash in bli module (bsc#1226497)
  * 0001-bli-Fix-crash-in-get_part_uuid.patch

- Rework package dependencies: grub2-common now includes common userland
  utilities and is required by grub2 platform packages. grub2 is now a meta
  package that pulls in the default platform package.

OBS-URL: https://build.opensuse.org/request/show/1196023
OBS-URL: https://build.opensuse.org/package/show/Base:System/grub2?expand=0&rev=512
2024-08-27 05:46:01 +00:00

49 lines
1.6 KiB
Diff

From: Michael Chang <mchang@suse.com>
The same as in the previous patch, add a support for installing grub
into an extended partition.
Here, we do not ignore extended partitions anymore. Instead we call a
hook that makes sure we have the partition when installing.
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
References: https://bugzilla.novell.com/show_bug.cgi?id=750897
From: Andrey Borzenkov <arvidjaar@gmail.com>
Apply this logic only to primary extended partition. Ignore extended
partitions that are used to link together logical partitions.
References: https://bugzilla.novell.com/show_bug.cgi?id=785341
---
Index: grub-2.00/grub-core/partmap/msdos.c
===================================================================
--- grub-2.00.orig/grub-core/partmap/msdos.c
+++ grub-2.00/grub-core/partmap/msdos.c
@@ -188,13 +188,20 @@ grub_partition_msdos_iterate (grub_disk_
(unsigned long long) p.len);
/* If this partition is a normal one, call the hook. */
- if (! grub_msdos_partition_is_empty (e->type)
- && ! grub_msdos_partition_is_extended (e->type))
+ if (! grub_msdos_partition_is_empty (e->type))
{
- p.number++;
+ if (!grub_msdos_partition_is_extended (e->type) || p.number < 3)
+ {
+ p.number++;
- if (hook (disk, &p, hook_data))
- return grub_errno;
+ /* prevent someone doing mkfs or mkswap on an
+ extended partition, but leave room for LILO */
+ if (grub_msdos_partition_is_extended (e->type))
+ p.len = 2;
+
+ if (hook (disk, &p, hook_data))
+ return grub_errno;
+ }
}
else if (p.number < 3)
/* If this partition is a logical one, shouldn't increase the