We want to support extending the read-only state to cover `/sysroot` and `/boot`, since conceptually all of the data there should only be written via libostree. Or at least for `/boot` should *mostly* just be written by ostree. This change needs to be opt-in though to avoid breaking anyone. Add a `sysroot/readonly` key to the repository config which instructs `ostree-remount.service` to ensure `/sysroot` is read-only. This requires a bit of a dance because `/sysroot` is actually the same filesystem as `/`; so we make `/etc` a writable bind mount in this case. We also need to handle `/var` in the "OSTree default" case of a bind mount; the systemd generator now looks at the writability state of `/sysroot` and uses that to determine whether it should have the `var.mount` unit happen before or after `ostree-remount.service.` Also add an API to instruct the libostree shared library that the caller has created a new mount namespace. This way we can freely remount read-write. This approach extends upon in a much better way previous work we did to support remounting `/boot` read-write. Closes: https://github.com/ostreedev/ostree/issues/1265
43 lines
1.5 KiB
Desktop File
43 lines
1.5 KiB
Desktop File
# Copyright (C) 2013 Colin Walters <walters@verbum.org>
|
|
#
|
|
# This library is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU Lesser General Public
|
|
# License as published by the Free Software Foundation; either
|
|
# version 2 of the License, or (at your option) any later version.
|
|
#
|
|
# This library is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
# Lesser General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Lesser General Public
|
|
# License along with this library; if not, write to the
|
|
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
# Boston, MA 02111-1307, USA.
|
|
|
|
[Unit]
|
|
Description=OSTree Remount OS/ Bind Mounts
|
|
Documentation=man:ostree(1)
|
|
DefaultDependencies=no
|
|
ConditionKernelCommandLine=ostree
|
|
OnFailure=emergency.target
|
|
Conflicts=umount.target
|
|
# Run after core mounts
|
|
After=-.mount var.mount
|
|
After=systemd-remount-fs.service
|
|
# But we run *before* most other core bootup services that need write access to /etc and /var
|
|
Before=local-fs.target umount.target
|
|
Before=systemd-random-seed.service plymouth-read-write.service systemd-journal-flush.service
|
|
Before=systemd-tmpfiles-setup.service
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
RemainAfterExit=yes
|
|
ExecStart=/usr/lib/ostree/ostree-remount
|
|
StandardInput=null
|
|
StandardOutput=syslog
|
|
StandardError=syslog+console
|
|
|
|
[Install]
|
|
WantedBy=local-fs.target
|