Skip to content

Commit

Permalink
lib/grub2: Support Debian-style grub.cfg path
Browse files Browse the repository at this point in the history
Debian and Debian-derived systems have their GRUB configuration file in
/boot/grub/grub.cfg, rather than /boot/grub2/grub.cfg. Detecting this
file is necessary to correctly generate GRUB boot configuration on
Debian systems.
  • Loading branch information
fkrull committed Aug 29, 2018
1 parent 0d6ead1 commit aca7584
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions src/libostree/ostree-bootloader-grub2.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,8 @@ struct _OstreeBootloaderGrub2
GObject parent_instance;

OstreeSysroot *sysroot;
GFile *config_path_bios;
GFile *config_path_bios_1;
GFile *config_path_bios_2;
GFile *config_path_efi;
gboolean is_efi;
};
Expand All @@ -77,7 +78,8 @@ _ostree_bootloader_grub2_query (OstreeBootloader *bootloader,
OstreeBootloaderGrub2 *self = OSTREE_BOOTLOADER_GRUB2 (bootloader);

/* Look for the BIOS path first */
if (g_file_query_exists (self->config_path_bios, NULL))
if (g_file_query_exists (self->config_path_bios_1, NULL) ||
g_file_query_exists (self->config_path_bios_2, NULL))
{
/* If we found it, we're done */
*out_is_active = TRUE;
Expand All @@ -97,7 +99,7 @@ _ostree_bootloader_grub2_query (OstreeBootloader *bootloader,
cancellable, error);
if (!direnum)
return FALSE;

while (TRUE)
{
GFileInfo *file_info;
Expand Down Expand Up @@ -448,7 +450,7 @@ _ostree_bootloader_grub2_write_config (OstreeBootloader *bootloader,
}

static gboolean
_ostree_bootloader_grub2_is_atomic (OstreeBootloader *bootloader)
_ostree_bootloader_grub2_is_atomic (OstreeBootloader *bootloader)
{
OstreeBootloaderGrub2 *self = OSTREE_BOOTLOADER_GRUB2 (bootloader);
return !self->is_efi;
Expand All @@ -460,7 +462,8 @@ _ostree_bootloader_grub2_finalize (GObject *object)
OstreeBootloaderGrub2 *self = OSTREE_BOOTLOADER_GRUB2 (object);

g_clear_object (&self->sysroot);
g_clear_object (&self->config_path_bios);
g_clear_object (&self->config_path_bios_1);
g_clear_object (&self->config_path_bios_2);
g_clear_object (&self->config_path_efi);

G_OBJECT_CLASS (_ostree_bootloader_grub2_parent_class)->finalize (object);
Expand Down Expand Up @@ -493,6 +496,7 @@ _ostree_bootloader_grub2_new (OstreeSysroot *sysroot)
{
OstreeBootloaderGrub2 *self = g_object_new (OSTREE_TYPE_BOOTLOADER_GRUB2, NULL);
self->sysroot = g_object_ref (sysroot);
self->config_path_bios = g_file_resolve_relative_path (self->sysroot->path, "boot/grub2/grub.cfg");
self->config_path_bios_1 = g_file_resolve_relative_path (self->sysroot->path, "boot/grub/grub.cfg");
self->config_path_bios_2 = g_file_resolve_relative_path (self->sysroot->path, "boot/grub2/grub.cfg");
return self;
}

0 comments on commit aca7584

Please sign in to comment.