diff options
author | Alex Kiernan <alex.kiernan@hivehome.com> | 2018-07-07 21:35:35 +0000 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2018-07-09 00:11:31 +0000 |
commit | 11eb0bd227ffa1a3300e4dbde3da288a7d9d41ae (patch) | |
tree | 9f43280324a9db3db956e8c9173665022b8a5ff6 /src/switchroot | |
parent | d6327f9dd9c4c787a5df46b339c1b0e045ec8134 (diff) | |
download | ostree-11eb0bd227ffa1a3300e4dbde3da288a7d9d41ae.tar.gz |
switchroot: Move late /run/ostree-booted creation to ostree-system-generator
When ostree-prepare-root is pid 1, ostree-prepare-boot defers creation of
/run/ostree-booted, which happens in ostree-remount, but that's too late
if we need ostree-system-generator to bind /var. Add the creation of the
/run/ostree-booted marker to ostree-system-generator based on the
existence of the ostree= kernel command line argument (which matches the
condition that ostree-remount uses).
Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
Closes: #1675
Approved by: cgwalters
Diffstat (limited to 'src/switchroot')
-rw-r--r-- | src/switchroot/ostree-prepare-root.c | 3 | ||||
-rw-r--r-- | src/switchroot/ostree-remount.c | 9 | ||||
-rw-r--r-- | src/switchroot/ostree-system-generator.c | 23 |
3 files changed, 18 insertions, 17 deletions
diff --git a/src/switchroot/ostree-prepare-root.c b/src/switchroot/ostree-prepare-root.c index 0131d246..01a85569 100644 --- a/src/switchroot/ostree-prepare-root.c +++ b/src/switchroot/ostree-prepare-root.c @@ -210,8 +210,9 @@ main(int argc, char *argv[]) /* We only stamp /run now if we're running in an initramfs, i.e. we're - * not pid 1. Otherwise it's handled later via ostree-remount.service. + * not pid 1. Otherwise it's handled later via ostree-system-generator. * https://mail.gnome.org/archives/ostree-list/2018-March/msg00012.html + * https://github.com/ostreedev/ostree/pull/1675 */ if (!running_as_pid1) touch_run_ostree (); diff --git a/src/switchroot/ostree-remount.c b/src/switchroot/ostree-remount.c index cd09fc15..71b7b395 100644 --- a/src/switchroot/ostree-remount.c +++ b/src/switchroot/ostree-remount.c @@ -46,13 +46,8 @@ main(int argc, char *argv[]) struct stat stbuf; int i; - /* See comments in ostree-prepare-root.c for this. - * - * This service is triggered via - * ConditionKernelCommandLine=ostree - * but it's a lot easier for various bits of userspace to check for - * a file versus parsing the kernel cmdline. So let's ensure - * the stamp file is created here too. + /* When systemd is in use this is normally created via the generator, but + * we ensure it's created here as well for redundancy. */ touch_run_ostree (); diff --git a/src/switchroot/ostree-system-generator.c b/src/switchroot/ostree-system-generator.c index 799a3104..78bca7c4 100644 --- a/src/switchroot/ostree-system-generator.c +++ b/src/switchroot/ostree-system-generator.c @@ -41,14 +41,6 @@ static const char *arg_dest_late = "/tmp"; int main(int argc, char *argv[]) { - /* Important: if this isn't an ostree-booted system, do nothing; people could - * have the package installed as a dependency for flatpak or whatever. - */ - { struct stat stbuf; - if (fstatat (AT_FDCWD, "/run/ostree-booted", &stbuf, 0) < 0) - exit (EXIT_SUCCESS); - } - /* We conflict with the magic ostree-mount-deployment-var file for ostree-prepare-root */ { struct stat stbuf; if (fstatat (AT_FDCWD, INITRAMFS_MOUNT_VAR, &stbuf, 0) == 0) @@ -67,9 +59,22 @@ main(int argc, char *argv[]) if (argc > 3) arg_dest_late = argv[3]; + /* If we're installed on a system which isn't using OSTree for boot (e.g. + * package installed as a dependency for flatpak or whatever), silently + * exit so that we don't error, but at the same time work where switchroot + * is PID 1 (and so hasn't created /run/ostree-booted). + */ char *ostree_cmdline = read_proc_cmdline_ostree (); if (!ostree_cmdline) - errx (EXIT_FAILURE, "Failed to find ostree= kernel argument"); + exit (EXIT_SUCCESS); + + /* See comments in ostree-prepare-root.c for this. + * + * It's a lot easier for various bits of userspace to check for + * a file versus parsing the kernel cmdline. So let's ensure + * the stamp file is created here too. + */ + touch_run_ostree (); { g_autoptr(GError) local_error = NULL; if (!ostree_cmd__private__()->ostree_system_generator (ostree_cmdline, arg_dest, NULL, arg_dest_late, &local_error)) |