diff options
author | Jonathan Lebon <jonathan@jlebon.com> | 2020-08-28 12:35:29 -0400 |
---|---|---|
committer | Jonathan Lebon <jonathan@jlebon.com> | 2020-08-28 14:16:46 -0400 |
commit | a7a751b69f2315635d6ae38a0b1344287b67079a (patch) | |
tree | bd02b1c7ef1efdc09876ce61f0de4c43b10683ce | |
parent | b3c7b059eaee3123d5b2523065726e866c533fe9 (diff) | |
download | ostree-a7a751b69f2315635d6ae38a0b1344287b67079a.tar.gz |
ostree-remount: Remount /etc rw if needed
When we remount `/sysroot` as read-only, we also make `/etc` read-only.
This is usually OK because we then remount `/var` read-write, which also
flips `/etc` back to read-write... unless `/var` is a separate
filesystem and not a bind-mount to the stateroot `/var`.
Fix this by just remounting `/etc` read-write in the read-only sysroot
case.
Eventually, I think we should rework this to set everything up the way
we want from the initramfs (#2115). This would also eliminate the window
during which `/etc` is read-only while `ostree-remount` runs.
-rw-r--r-- | src/switchroot/ostree-remount.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/switchroot/ostree-remount.c b/src/switchroot/ostree-remount.c index cfd270bb..3981682a 100644 --- a/src/switchroot/ostree-remount.c +++ b/src/switchroot/ostree-remount.c @@ -112,6 +112,11 @@ main(int argc, char *argv[]) bool sysroot_configured_readonly = unlink (_OSTREE_SYSROOT_READONLY_STAMP) == 0; do_remount ("/sysroot", !sysroot_configured_readonly); + /* And also make sure to make /etc rw again. We make this conditional on + * sysroot_configured_readonly because only in that case is it a bind-mount. */ + if (sysroot_configured_readonly) + do_remount ("/etc", true); + /* If /var was created as as an OSTree default bind mount (instead of being a separate filesystem) * then remounting the root mount read-only also remounted it. * So just like /etc, we need to make it read-write by default. |