[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] grub-install: check for arm-efi as a default target
From: |
Steve McIntyre |
Subject: |
[PATCH] grub-install: check for arm-efi as a default target |
Date: |
Thu, 21 Feb 2019 14:46:11 +0000 |
Much like on x86, we can work out if the system is running on top of
EFI firmware. If so, return "arm-efi". If not, fall back to
"arm-uboot" as previously.
Split out the code to (maybe) load the efivar module and check for
/sys/firmware/efi into a common helper routine is_efi_system()
Signed-off-by: Steve McIntyre <address@hidden>
---
grub-core/osdep/basic/platform.c | 6 ++++++
grub-core/osdep/linux/platform.c | 46 +++++++++++++++++++++++++++++++---------
include/grub/util/install.h | 3 +++
util/grub-install.c | 2 +-
4 files changed, 46 insertions(+), 11 deletions(-)
diff --git a/grub-core/osdep/basic/platform.c b/grub-core/osdep/basic/platform.c
index 4b5502aeb..a7dafd85a 100644
--- a/grub-core/osdep/basic/platform.c
+++ b/grub-core/osdep/basic/platform.c
@@ -19,6 +19,12 @@
#include <grub/util/install.h>
const char *
+grub_install_get_default_arm_platform (void)
+{
+ return "arm-uboot";
+}
+
+const char *
grub_install_get_default_x86_platform (void)
{
return "i386-pc";
diff --git a/grub-core/osdep/linux/platform.c b/grub-core/osdep/linux/platform.c
index 775b6c031..5cb7bf923 100644
--- a/grub-core/osdep/linux/platform.c
+++ b/grub-core/osdep/linux/platform.c
@@ -97,16 +97,19 @@ read_platform_size (void)
return ret;
}
-const char *
-grub_install_get_default_x86_platform (void)
-{
+/* Are we running on an EFI-based system? */
+static int
+is_efi_system (void)
+{
/*
- On Linux, we need the efivars kernel modules.
- If no EFI is available this module just does nothing
- besides a small hello and if we detect efi we'll load it
- anyway later. So it should be safe to
- try to load it here.
- */
+ Linux uses efivarfs (mounted on /sys/firmware/efi/efivars)
+ to access the EFI variable store.
+ Some legacy systems may still use the deprecated efivars
+ interface (accessed through /sys/firmware/efi/vars).
+ Where both are present, libefivar will use the former in
+ preference, so attempting to load efivars will not interfere
+ with later operations.
+ */
grub_util_exec_redirect_all ((const char * []){ "modprobe", "efivars", NULL
},
NULL, NULL, "/dev/null");
@@ -114,13 +117,36 @@ grub_install_get_default_x86_platform (void)
if (is_not_empty_directory ("/sys/firmware/efi"))
{
grub_util_info ("...found");
+ return 1;
+ }
+ else
+ {
+ grub_util_info ("... not found");
+ return 0;
+ }
+}
+
+const char *
+grub_install_get_default_arm_platform (void)
+{
+ if (is_efi_system())
+ return "arm-efi";
+ else
+ return "arm-uboot";
+}
+
+const char *
+grub_install_get_default_x86_platform (void)
+{
+ if (is_efi_system())
+ {
if (read_platform_size() == 64)
return "x86_64-efi";
else
return "i386-efi";
}
- grub_util_info ("... not found. Looking for /proc/device-tree ..");
+ grub_util_info ("Looking for /proc/device-tree ..");
if (is_not_empty_directory ("/proc/device-tree"))
{
grub_util_info ("...found");
diff --git a/include/grub/util/install.h b/include/grub/util/install.h
index af2bf65d7..80a51fcb1 100644
--- a/include/grub/util/install.h
+++ b/include/grub/util/install.h
@@ -209,6 +209,9 @@ void
grub_install_create_envblk_file (const char *name);
const char *
+grub_install_get_default_arm_platform (void);
+
+const char *
grub_install_get_default_x86_platform (void);
int
diff --git a/util/grub-install.c b/util/grub-install.c
index 4a0a66168..1d68cc5bb 100644
--- a/util/grub-install.c
+++ b/util/grub-install.c
@@ -319,7 +319,7 @@ get_default_platform (void)
#elif defined (__ia64__)
return "ia64-efi";
#elif defined (__arm__)
- return "arm-uboot";
+ return grub_install_get_default_arm_platform ();
#elif defined (__aarch64__)
return "arm64-efi";
#elif defined (__amd64__) || defined (__x86_64__) || defined (__i386__)
--
2.11.0
- [PATCH] grub-install: check for arm-efi as a default target, Steve McIntyre, 2019/02/10
- Re: [PATCH] grub-install: check for arm-efi as a default target, Steve McIntyre, 2019/02/20
- Re: [PATCH] grub-install: check for arm-efi as a default target, Leif Lindholm, 2019/02/21
- Re: [PATCH] grub-install: check for arm-efi as a default target, Steve McIntyre, 2019/02/21
- [PATCH] grub-install: check for arm-efi as a default target,
Steve McIntyre <=
- Re: [PATCH] grub-install: check for arm-efi as a default target, Leif Lindholm, 2019/02/21
- Re: [PATCH] grub-install: check for arm-efi as a default target, Daniel Kiper, 2019/02/21
- Re: [PATCH] grub-install: check for arm-efi as a default target, Leif Lindholm, 2019/02/26
- Re: [PATCH] grub-install: check for arm-efi as a default target, Daniel Kiper, 2019/02/26
- Re: [PATCH] grub-install: check for arm-efi as a default target, Steve McIntyre, 2019/02/26