Additional Software data is not fully copied to Persistent Storage during initial setup on Bullseye
Affected user scenario & symptoms
This bug can impact a given user once, and only once, for a given USB stick:
Given I have Additional Software disabled and no Persistent Storage
When I install a package
And I accept Tails' offer to install this package every time I start Tails
But I ignore t-p-s' offer to restart immediately
And I restart Tails myself later
Then on reboot this package may not be installed
But if I install the same package again
Then it will be installed, as expected, every time I start Tails in the future
Users who already have Additional Software enabled won't experience this bug.
!764 (merged) somewhat lowered the risk users hit this bug, by synchronizing the data to the USB stick before restarting, when the user clicks Restart in t-p-s. But:
- UX is poor: copying the data can taken 10-30 seconds and there's no sign of progress in the UI
- !799 (merged) improves this
- Presumably, a user who just installed a package wants to use them, not restart Tails. So plausibly most users won't click Restart at that point, and thus won't benefit from this mitigation.
That's why, in https://tails.boum.org/news/test_5.0-beta1/, I instead documented how to recover from the problem.
Current status
With the codebase that'll essentially become 5.0, i.e. with bf4c3fa3 applied, we tried, and failed, to reproduce this on:
- 4 bare metal machines
- a VM with a virtual USB stick configured for max 7MB/s write
But on the 18839-remove-workaround
branch, that does not use the aforementioned workaround, we always see the problem. Go figure.
Technical details
After enabling Additional Software for a newly installed package and shutting down, when I inspect the persistent filesystem from outside of Tails:
- according to
e2fsck
the filesystem is clean -
live-additional-software.conf
LGTM -
persistence.conf
LGTM - the
apt
directory exists and is empty - the
apt_sync_started
flag file exists
⇒ tails-synchronize-data-to-new-persistent-volume-on-shutdown.service
failed to copy the data.