This enables an early failure; for i386-ieee1275 and powerpc-ieee1275 on
Linux, without /dev/nvram the system may be left in an unbootable state.

Signed-off-by: Ismael Luceno <iluc...@suse.de>
---
 util/grub-install.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/util/grub-install.c b/util/grub-install.c
index 7b04bd3c534b..da50bd58b73b 100644
--- a/util/grub-install.c
+++ b/util/grub-install.c
@@ -827,6 +827,16 @@ fill_core_services (const char *core_services)
   free (sysv_plist);
 }
 
+static void
+try_open (const char *path)
+{
+  FILE *f;
+  f = grub_util_fopen (path, "r+");
+  if (!f)
+    grub_util_error (_("Unable to open %s: %s"), path, strerror(errno));
+  fclose (f);
+}
+
 int
 main (int argc, char *argv[])
 {
@@ -1026,6 +1036,20 @@ main (int argc, char *argv[])
       break;
     }
 
+  switch (platform)
+    {
+    case GRUB_INSTALL_PLATFORM_I386_IEEE1275:
+    case GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275:
+#ifdef __linux__
+      /* On Linux, ensure /dev/nvram is _functional_.  */
+      if (update_nvram)
+        try_open ("/dev/nvram");
+#endif
+      break;
+    default:
+      break;
+    }
+
   /* Find the EFI System Partition.  */
 
   if (is_efi)
-- 
2.37.3


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to