Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.4:ARM
grub2.28279
grub2-install-remove-useless-check-PReP-partiti...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File grub2-install-remove-useless-check-PReP-partition-is-empty.patch of Package grub2.28279
From b57af595c94db6d7babb7623c1530ee4f5b956f0 Mon Sep 17 00:00:00 2001 From: Michal Suchanek <msuchanek@suse.de> Date: Tue, 31 Oct 2017 14:28:54 +0100 Subject: [PATCH] grub-install: remove useless check PReP partition is empty. References: bsc#1065738 The grub-install rewrite in commit cd46aa6cefab checks that the PPeP partition does not install an ELF binary before writing grub to it. This causes regression in installer scripts that expect to be able to reinstall bootloaders without first witping the partition by hand. Fixes: cd46aa6cefab ("Rewrite grub-install, grub-mkrescue, grub-mkstandalone and grub-mknetdir ") --- util/grub-install.c | 39 ++------------------------------------- 1 file changed, 2 insertions(+), 37 deletions(-) diff --git a/util/grub-install.c b/util/grub-install.c index 75e3e5ba6f07..ae859476e3da 100644 --- a/util/grub-install.c +++ b/util/grub-install.c @@ -731,34 +731,6 @@ is_prep_partition (grub_device_t dev) return 0; } -static int -is_prep_empty (grub_device_t dev) -{ - grub_disk_addr_t dsize, addr; - grub_uint32_t buffer[32768]; - - dsize = grub_disk_get_size (dev->disk); - for (addr = 0; addr < dsize; - addr += sizeof (buffer) / GRUB_DISK_SECTOR_SIZE) - { - grub_size_t sz = sizeof (buffer); - grub_uint32_t *ptr; - - if (sizeof (buffer) / GRUB_DISK_SECTOR_SIZE > dsize - addr) - sz = (dsize - addr) * GRUB_DISK_SECTOR_SIZE; - grub_disk_read (dev->disk, addr, 0, sz, buffer); - - if (addr == 0 && grub_memcmp (buffer, ELFMAG, SELFMAG) == 0) - return 1; - - for (ptr = buffer; ptr < buffer + sz / sizeof (*buffer); ptr++) - if (*ptr) - return 0; - } - - return 1; -} - static void bless (grub_device_t dev, const char *path, int x86) { @@ -1772,16 +1744,9 @@ main (int argc, char *argv[]) { grub_util_error ("%s", _("the chosen partition is not a PReP partition")); } - if (is_prep_empty (ins_dev)) - { - if (write_to_disk (ins_dev, imgfile)) - grub_util_error ("%s", _("failed to copy Grub to the PReP partition")); - } - else + if (write_to_disk (ins_dev, imgfile)) { - char *s = xasprintf ("dd if=/dev/zero of=%s", install_device); - grub_util_error (_("the PReP partition is not empty. If you are sure you want to use it, run dd to clear it: `%s'"), - s); + grub_util_error ("%s", _("failed to copy Grub to the PReP partition")); } grub_device_close (ins_dev); if (update_nvram) -- 2.13.6
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor