summaryrefslogtreecommitdiff
path: root/src/libostree/ostree-bootloader-grub2.c
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2017-07-19 15:59:46 -0400
committerAtomic Bot <atomic-devel@projectatomic.io>2017-07-27 18:21:00 +0000
commitd24b259cc588ac8db991d5d60b0ae39000219f9a (patch)
tree702c529a89843c740cc7e9bc248580ef58249909 /src/libostree/ostree-bootloader-grub2.c
parent79a88ac249054cbb3555e5c800f9628099c7e342 (diff)
downloadostree-d24b259cc588ac8db991d5d60b0ae39000219f9a.tar.gz
grub2: Handle aarch64 (at least on Fedora/RHEL)
See: https://github.com/projectatomic/rpm-ostree-toolbox/issues/102#issuecomment-316483554 The logic here should now match what grubby does. I have no idea whether this applies to other distributions though. Closes: #1021 Approved by: jlebon
Diffstat (limited to 'src/libostree/ostree-bootloader-grub2.c')
-rw-r--r--src/libostree/ostree-bootloader-grub2.c38
1 files changed, 20 insertions, 18 deletions
diff --git a/src/libostree/ostree-bootloader-grub2.c b/src/libostree/ostree-bootloader-grub2.c
index 86970d36..ff83f151 100644
--- a/src/libostree/ostree-bootloader-grub2.c
+++ b/src/libostree/ostree-bootloader-grub2.c
@@ -38,9 +38,19 @@
* among others.
*/
#if defined(__i386__) || defined(__x86_64__)
-#define GRUB2_USES_16 1
+#define GRUB2_SUFFIX "16"
#else
-#define GRUB2_USES_16 0
+#define GRUB2_SUFFIX ""
+#endif
+/* https://github.com/projectatomic/rpm-ostree-toolbox/issues/102#issuecomment-316483554
+ * https://github.com/rhboot/grubby/blob/34b1436ccbd56eab8024314cab48f2fc880eef08/grubby.c#L63
+ *
+ * This is true at least on Fedora/Red Hat Enterprise Linux for aarch64.
+ */
+#if defined(__aarch64__)
+#define GRUB2_EFI_SUFFIX ""
+#else
+#define GRUB2_EFI_SUFFIX "efi"
#endif
struct _OstreeBootloaderGrub2
@@ -214,16 +224,12 @@ _ostree_bootloader_grub2_generate_config (OstreeSysroot *sysroot
"No \"linux\" key in bootloader config");
goto out;
}
+ g_string_append (output, "linux");
if (is_efi)
- g_string_append (output, "linuxefi ");
+ g_string_append (output, GRUB2_EFI_SUFFIX);
else
- {
-#if GRUB2_USES_16
- g_string_append (output, "linux16 ");
-#else
- g_string_append (output, "linux ");
-#endif
- }
+ g_string_append (output, GRUB2_SUFFIX);
+ g_string_append_c (output, ' ');
g_string_append (output, kernel);
options = ostree_bootconfig_parser_get (config, "options");
@@ -237,16 +243,12 @@ _ostree_bootloader_grub2_generate_config (OstreeSysroot *sysroot
initrd = ostree_bootconfig_parser_get (config, "initrd");
if (initrd)
{
+ g_string_append (output, "initrd");
if (is_efi)
- g_string_append (output, "initrdefi ");
+ g_string_append (output, GRUB2_EFI_SUFFIX);
else
- {
-#if GRUB2_USES_16
- g_string_append (output, "initrd16 ");
-#else
- g_string_append (output, "initrd ");
-#endif
- }
+ g_string_append (output, GRUB2_SUFFIX);
+ g_string_append_c (output, ' ');
g_string_append (output, initrd);
g_string_append_c (output, '\n');
}