diff --git a/man/ostree.repo-config.xml b/man/ostree.repo-config.xml
index e4984430..6fead168 100644
--- a/man/ostree.repo-config.xml
+++ b/man/ostree.repo-config.xml
@@ -373,7 +373,9 @@ Boston, MA 02111-1307, USA.
bootloader
Configure the bootloader that OSTree uses when
deploying the sysroot. This may take the values
- bootloader=none or bootloader=auto.
+ bootloader=none, bootloader=auto,
+ bootloader=grub2, bootloader=syslinux,
+ bootloader=uboot or bootloader=zipl.
Default is auto.
@@ -388,6 +390,11 @@ Boston, MA 02111-1307, USA.
then OSTree will generate a config for the bootloader found. For
example, grub2-mkconfig is run for the grub2 case.
+
+ A specific bootloader type may also be explicitly requested by choosing
+ grub2, syslinux, uboot or
+ zipl.
+
diff --git a/src/libostree/ostree-repo-private.h b/src/libostree/ostree-repo-private.h
index 14e2f753..628f2b46 100644
--- a/src/libostree/ostree-repo-private.h
+++ b/src/libostree/ostree-repo-private.h
@@ -114,6 +114,9 @@ typedef enum {
typedef enum {
CFG_SYSROOT_BOOTLOADER_OPT_AUTO = 0,
CFG_SYSROOT_BOOTLOADER_OPT_NONE,
+ CFG_SYSROOT_BOOTLOADER_OPT_GRUB2,
+ CFG_SYSROOT_BOOTLOADER_OPT_SYSLINUX,
+ CFG_SYSROOT_BOOTLOADER_OPT_UBOOT,
CFG_SYSROOT_BOOTLOADER_OPT_ZIPL,
/* Non-exhaustive */
} OstreeCfgSysrootBootloaderOpt;
@@ -122,6 +125,9 @@ static const char* const CFG_SYSROOT_BOOTLOADER_OPTS_STR[] = {
/* This must be kept in the same order as the enum */
"auto",
"none",
+ "grub2",
+ "syslinux",
+ "uboot",
"zipl",
NULL,
};
diff --git a/src/libostree/ostree-sysroot.c b/src/libostree/ostree-sysroot.c
index 63065fb9..265d39d1 100644
--- a/src/libostree/ostree-sysroot.c
+++ b/src/libostree/ostree-sysroot.c
@@ -1352,6 +1352,15 @@ _ostree_sysroot_query_bootloader (OstreeSysroot *sysroot,
/* No bootloader specified; do not query bootloaders to run. */
ret_loader = NULL;
break;
+ case CFG_SYSROOT_BOOTLOADER_OPT_GRUB2:
+ ret_loader = (OstreeBootloader*) _ostree_bootloader_grub2_new (sysroot);
+ break;
+ case CFG_SYSROOT_BOOTLOADER_OPT_SYSLINUX:
+ ret_loader = (OstreeBootloader*) _ostree_bootloader_syslinux_new (sysroot);
+ break;
+ case CFG_SYSROOT_BOOTLOADER_OPT_UBOOT:
+ ret_loader = (OstreeBootloader*) _ostree_bootloader_uboot_new (sysroot);
+ break;
case CFG_SYSROOT_BOOTLOADER_OPT_ZIPL:
/* We never consider zipl as active by default, so it can only be created
* if it's explicitly requested in the config */