It's probably worth also mentioning ostree, and maybe specifically rpm-ostree: <a href="https://coreos.github.io/rpm-ostree/" rel="nofollow">https://coreos.github.io/rpm-ostree/</a><p>1. Versioned, checksummed OS images<p>2. Local changes layered on top<p>3. Change the underlying tree (upgrade or rollback) without affecting user data and then replay the local changes.<p>It's great in the sense of 'I want a reliable and robust system', though it's awful in that if I want to install foobar-devel the system has to<p>1. Update the desired local changes to include my new changes<p>2. Re-validate the versioned, checksummed base OS image<p>3. Re-stage all local changes and layer them on top of the base OS image<p>Meaning that an eight-second 'dnf install ...' turns into a ten minute 'rpm-ostree install ...', though without much chance that I'm going to ruin my system accidentally by doing something stupid.<p>Anyway, I could see using this tool or similar to layer changes on top of a LiveCD image, so that even software updates can be made in a reproducible, or discard-able, way.