|author||Alan <email@example.com>||2017-12-15 16:15:35 +0000|
|committer||Alan <firstname.lastname@example.org>||2017-12-15 16:16:24 +0000|
Update design documentation about additional software packages
Diffstat (limited to 'wiki/src/contribute/design/persistence.mdwn')
1 files changed, 16 insertions, 10 deletions
diff --git a/wiki/src/contribute/design/persistence.mdwn b/wiki/src/contribute/design/persistence.mdwn
index 2f9c0a2..cdfd4c9 100644
@@ -346,16 +346,22 @@ have correct access rights: owned by
`tails-persistence-setup:tails-persistence-setup`, and not be writable
by anyone else than the `tails-persistence-setup` user.
-First, those additional software packages are installed offline from tails-greeter
-Then, once connected to the network, a NetworkManager dispatcher hook looks for
-upgrades if additional software were activated (`apt update`, then `apt
-install` the additional software packages). For some packages (e.g. already
-running software) the change will only be effective at next boot but hopefully a outdated
-version won't be used too long in the meantime.
+First, those additional software packages are installed offline by a systemd
+user unit triggered by desktop.target. It starts a system unit of the same
+name, which itself calls Additional Software Packages installation.
+Then, once connected to the network, a NetworkManager dispatcher hook triggers
+a systemd system unit which looks for upgrades if additional software were
+activated (`apt update`, then `apt install` the additional software packages).
+For some packages (e.g. already running software) the change will only be
+effective at next boot but hopefully a outdated version won't be used too long
+in the meantime. To ensure that the upgrade started by a NetworkManager hook is
+not racy with the installation, systemd unit is ordered after the installation,
+and waits for its state file to appear.
+- [[!tails_gitweb config/chroot_local-includes/usr/lib/systemd/user/tails-additional-software-install.service]]
+- [[!tails_gitweb config/chroot_local-includes/lib/systemd/system/tails-additional-software-install.service]]
+- [[!tails_gitweb config/chroot_local-includes/lib/systemd/system/tails-additional-software-upgrade.service]]
- [[!tails_gitweb config/chroot_local-includes/etc/NetworkManager/dispatcher.d/70-upgrade-additional-software.sh]]
- [[!tails_gitweb config/chroot_local-includes/usr/local/sbin/tails-additional-software]]