660597f14d
- Update to 0.12 * This release is mostly a maintenance release that uses libefivar's new library API for creating device paths and load options. * Also DHCPv4 network boot entries are now something you can create without knowing an awful lot about ACPI. - Refresh patches efibootmgr-0.11.0-derhat.diff as efibootmgr-derhat.diff efibootmgr-0.11.0-check-boot-order.diff as efibootmgr-check-boot-order.diff - Update project and download url OBS-URL: https://build.opensuse.org/request/show/311729 OBS-URL: https://build.opensuse.org/package/show/Base:System/efibootmgr?expand=0&rev=30
89 lines
3.2 KiB
Diff
89 lines
3.2 KiB
Diff
From: Raymund Will <rw@suse.com>
|
|
Subject: Make default '--loader' build-time configurable.
|
|
|
|
Each distribution uses a specific 'vendor'-directory in the
|
|
'efi' directory on the EFI System Partition to store their
|
|
EFI loader. There's little use in hardcoding the value
|
|
for just one in 'efibootmgr', which is displayed in '--help'
|
|
and used as default without '--loader'.
|
|
|
|
Simply use
|
|
make OS_VENDOR=redhat EFI_LOADER=grub.efi
|
|
to get the previous value. :)
|
|
|
|
Signed-off-by: Raymund Will <rw@suse.com>
|
|
---
|
|
Makefile | 4 ++++
|
|
src/efibootmgr/efibootmgr.c | 12 ++++++++----
|
|
2 files changed, 12 insertions(+), 4 deletions(-)
|
|
|
|
Index: efibootmgr-0.12/Makefile
|
|
===================================================================
|
|
--- efibootmgr-0.12.orig/Makefile
|
|
+++ efibootmgr-0.12/Makefile
|
|
@@ -1,5 +1,8 @@
|
|
default: all
|
|
|
|
+ OS_VENDOR := vendor
|
|
+ EFI_LOADER := boot.efi
|
|
+
|
|
SIGNING_KEY := pjones
|
|
RELEASE_MAJOR := 0
|
|
RELEASE_MINOR := 12
|
|
@@ -8,6 +11,7 @@
|
|
RELEASE_STRING := $(RELEASE_NAME)-$(RELEASE_MAJOR).$(RELEASE_MINOR)
|
|
|
|
CFLAGS = $(EXTRA_CFLAGS) -DEFIBOOTMGR_VERSION=\"$(RELEASE_MAJOR).$(RELEASE_MINOR)\" \
|
|
+ -DDEFAULT_LOADER=\"\\\\efi\\\\$(OS_VENDOR)\\\\$(EFI_LOADER)\" \
|
|
-Wsign-compare -Wall -Werror -g -D_FILE_OFFSET_BITS=64 \
|
|
-I/usr/include/efivar
|
|
|
|
Index: efibootmgr-0.12/src/efibootmgr/efibootmgr.c
|
|
===================================================================
|
|
--- efibootmgr-0.12.orig/src/efibootmgr/efibootmgr.c
|
|
+++ efibootmgr-0.12/src/efibootmgr/efibootmgr.c
|
|
@@ -1,5 +1,6 @@
|
|
/*
|
|
- efibootmgr.c - Manipulates EFI variables as exported in /proc/efi/vars
|
|
+ efibootmgr.c - Manipulates EFI variables as exported in
|
|
+ /sys/firmware/efi/vars (previously was /proc/efi/vars)
|
|
|
|
Copyright (C) 2001-2004 Dell, Inc. <Matt_Domsch@dell.com>
|
|
|
|
@@ -18,7 +19,7 @@
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
|
|
|
- This must tie the EFI_DEVICE_PATH to /boot/efi/EFI/redhat/grub.efi
|
|
+ This must tie the EFI_DEVICE_PATH to /boot/efi/efi/<vendor>/<loader>.efi
|
|
The EFI_DEVICE_PATH will look something like:
|
|
ACPI device path, length 12 bytes
|
|
Hardware Device Path, PCI, length 6 bytes
|
|
@@ -58,6 +59,9 @@
|
|
#define EFIBOOTMGR_VERSION "unknown (fix Makefile!)"
|
|
#endif
|
|
|
|
+#ifndef DEFAULT_LOADER
|
|
+#define DEFAULT_LOADER "unknown (fix Makefile!)"
|
|
+#endif
|
|
|
|
typedef struct _var_entry {
|
|
char *name;
|
|
@@ -985,7 +989,7 @@ usage()
|
|
printf("\t --ip-port <local>,<remote> set local and remote IP ports\n");
|
|
printf("\t --ip-origin { {dhcp|static} | { static|stateless|stateful} }\n");
|
|
#endif
|
|
- printf("\t-l | --loader name (defaults to \\EFI\\redhat\\grub.efi)\n");
|
|
+ printf("\t-l | --loader name (defaults to \""DEFAULT_LOADER"\")\n");
|
|
printf("\t-L | --label label Boot manager display label (defaults to \"Linux\")\n");
|
|
printf("\t-n | --bootnext XXXX set BootNext to XXXX (hex)\n");
|
|
printf("\t-N | --delete-bootnext delete BootNext\n");
|
|
@@ -1013,6 +1017,7 @@ set_default_opts()
|
|
opts.timeout = -1; /* Don't set it */
|
|
opts.edd10_devicenum = 0x80;
|
|
opts.loader = "\\EFI\\redhat\\grub.efi";
|
|
+ opts.loader = DEFAULT_LOADER;
|
|
opts.label = (unsigned char *)"Linux";
|
|
opts.disk = "/dev/sda";
|
|
opts.part = 1;
|