summaryrefslogtreecommitdiff
path: root/src/libostree/ostree-sysroot-deploy.c
diff options
context:
space:
mode:
authorRobert Fairley <rfairley@redhat.com>2019-02-14 16:18:01 -0500
committerAtomic Bot <atomic-devel@projectatomic.io>2019-03-01 21:20:35 +0000
commit21ebc7d21edd00c3fe0ce80ea68ba3f8f5e41ae3 (patch)
treefb604c6d2c8ee231f7ce859bb2336d883fd41ccc /src/libostree/ostree-sysroot-deploy.c
parent99cf13b22519e88d6cce22379d67b50bf6a2aa6b (diff)
downloadostree-21ebc7d21edd00c3fe0ce80ea68ba3f8f5e41ae3.tar.gz
Add sysroot.bootloader repo config key
The sysroot.bootloader key configures the bootloader that OSTree uses when deploying a sysroot. Having this key allows specifying behavior not to use the default bootloader backend code, which is preferable when creating a first deployment from the sysroot (#1774). As of now, the key can take the values "auto" or "none". If the key is not given, the value defaults to "auto". "auto" causes _ostree_sysroot_query_bootloader() to be used when writing a new deployment, which is the original behavior that dynamically detects which bootloader to use. "none" avoids querying the bootloader dynamically. The BLS config fragments are still written to sysroot/boot/loader/entries for use by higher-level software. More values can be supported in future to specify a single bootloader, different behavior for the bootloader code, or a list of bootloaders to try. Resolves: #1774 Closes: #1814 Approved by: jlebon
Diffstat (limited to 'src/libostree/ostree-sysroot-deploy.c')
-rw-r--r--src/libostree/ostree-sysroot-deploy.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/libostree/ostree-sysroot-deploy.c b/src/libostree/ostree-sysroot-deploy.c
index b16f65b3..ec9d1592 100644
--- a/src/libostree/ostree-sysroot-deploy.c
+++ b/src/libostree/ostree-sysroot-deploy.c
@@ -2310,6 +2310,7 @@ ostree_sysroot_write_deployments_with_options (OstreeSysroot *self,
gboolean bootloader_is_atomic = FALSE;
SyncStats syncstats = { 0, };
g_autoptr(OstreeBootloader) bootloader = NULL;
+ const char *bootloader_config = NULL;
if (!requires_new_bootversion)
{
if (!create_new_bootlinks (self, self->bootversion,
@@ -2342,8 +2343,22 @@ ostree_sysroot_write_deployments_with_options (OstreeSysroot *self,
return glnx_throw_errno_prefix (error, "Remounting /boot read-write");
}
- if (!_ostree_sysroot_query_bootloader (self, &bootloader, cancellable, error))
- return FALSE;
+ OstreeRepo *repo = ostree_sysroot_repo (self);
+
+ bootloader_config = ostree_repo_get_bootloader (repo);
+
+ g_debug ("Using bootloader configuration: %s", bootloader_config);
+
+ if (g_str_equal (bootloader_config, "auto"))
+ {
+ if (!_ostree_sysroot_query_bootloader (self, &bootloader, cancellable, error))
+ return FALSE;
+ }
+ else if (g_str_equal (bootloader_config, "none"))
+ {
+ /* No bootloader specified; do not query bootloaders to run. */
+ }
+
bootloader_is_atomic = bootloader != NULL && _ostree_bootloader_is_atomic (bootloader);
/* Note equivalent of try/finally here */
@@ -2375,6 +2390,7 @@ ostree_sysroot_write_deployments_with_options (OstreeSysroot *self,
sd_journal_send ("MESSAGE_ID=" SD_ID128_FORMAT_STR, SD_ID128_FORMAT_VAL(OSTREE_DEPLOYMENT_COMPLETE_ID),
"MESSAGE=%s", msg,
"OSTREE_BOOTLOADER=%s", bootloader ? _ostree_bootloader_get_name (bootloader) : "none",
+ "OSTREE_BOOTLOADER_CONFIG=%s", bootloader_config,
"OSTREE_BOOTLOADER_ATOMIC=%s", bootloader_is_atomic ? "yes" : "no",
"OSTREE_DID_BOOTSWAP=%s", requires_new_bootversion ? "yes" : "no",
"OSTREE_N_DEPLOYMENTS=%u", new_deployments->len,