summaryrefslogtreecommitdiff
path: root/src/boot
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2018-02-22 15:27:59 -0500
committerAtomic Bot <atomic-devel@projectatomic.io>2018-04-12 14:55:12 +0000
commiteb506c759c666af2461f1ba3dda4e31ea49ebc41 (patch)
treeec78dcc19982e3b14545ad2b22902a85c9a7e4ef /src/boot
parentff50495f67a95c9b2fef5f9b84bc91469a46eb27 (diff)
downloadostree-eb506c759c666af2461f1ba3dda4e31ea49ebc41.tar.gz
Add concept of "staged" deployment
Add API to write a deployment state to `/run/ostree/staged-deployment`, along with a systemd service which runs at shutdown time. This is a big change to the ostree model for hosts, but it closes a longstanding set of bugs; many, many people have hit the "losing changes in /etc" problem. It also avoids the other problem of racing with programs that modify `/etc` such as LVM backups: https://bugzilla.redhat.com/show_bug.cgi?id=1365297 We need this in particular to go to a full-on model for automatically updated host systems where (like a dual-partition model) everything is fully prepared and the reboot can be taken asynchronously. Closes: https://github.com/ostreedev/ostree/issues/545 Closes: #1503 Approved by: jlebon
Diffstat (limited to 'src/boot')
-rw-r--r--src/boot/ostree-finalize-staged.service36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/boot/ostree-finalize-staged.service b/src/boot/ostree-finalize-staged.service
new file mode 100644
index 00000000..570138cd
--- /dev/null
+++ b/src/boot/ostree-finalize-staged.service
@@ -0,0 +1,36 @@
+# Copyright (C) 2018 Red Hat, Inc.
+#
+# 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.
+
+# For some implementation discussion, see:
+# https://lists.freedesktop.org/archives/systemd-devel/2018-March/040557.html
+[Unit]
+Description=OSTree Finalize Staged Deployment
+ConditionPathExists=/run/ostree-booted
+DefaultDependencies=no
+
+RequiresMountsFor=/sysroot
+After=basic.target
+Before=multi-user.target final.target
+Conflicts=final.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStop=/usr/bin/ostree admin finalize-staged
+
+[Install]
+WantedBy=multi-user.target