1 Read-only file system #
This chapter focuses on the characteristics of the read-only file system that is used by SLE Micro.
SLE Micro was designed to use a read-only root file system. This means that
after the deployment is complete, you are not able to perform direct
modifications to the root file system, e.g. by using
zypper. Instead, SUSE Linux Enterprise Micro introduces the concept of
transactional updates which enables you to modify your system and keep it up
to date.
The key features of transactional updates are the following:
They are atomic - the update is applied only if it completes successfully.
Changes are applied in a separate snapshot and so do not influence the running system.
Changes can easily be rolled back.
Each time you call the transactional-update command to
change your system—either to install a package, perform an update or
apply a patch—the following actions take place:
A new read-write snapshot is created from your current root file system, or from a snapshot that you specified.
All changes are applied (updates, patches or package installation).
The snapshot is switched back to read-only mode.
If the changes were applied successfully, the new root file system snapshot is set as default.
After rebooting, the system boots into the new snapshot.
NoteBear in mind that without rebooting your system, the changes will not be applied.
In case you do not reboot your machine before performing further changes,
the transactional-update command will create a new
snapshot from the current root file system. This means that you will end up
with several parallel snapshots, each including that particular change but
not changes from the other invocations of the command. After reboot, the
most recently created snapshot will be used as your new root file system,
and it will not include changes done in the previous snapshots.
1.1 /etc on a read-only file system #
Even though /etc is part of the read-only file system,
using an OverlayFS layer on this directory enables you to
write to this directory. All modifications that you performed on the content
of /etc are written to the
/var/lib/overlay/SNAPSHOT_NUMBER/etc.
Each snapshot has one associated OverlayFS directory.
Whenever a new snapshot is created (for example, as a result of a system
update), the content of /etc is synchronized and used
as a base in the new snapshot. In the OverlayFS
terminology, the current snapshot's /etc is mounted as
lowerdir. The new snapshot's /etc is
mounted as upperdir. If there were no changes in the
upperdir /etc, any changes performed
to the lowerdir are visible to the
upperdir. Therefore, the new snapshot also contains the
changes from the current snapshot's /etc.
lowerdir and upperdir
If /etc in both snapshots is modified, only the changes in the new snapshot (upperdir) persist. Changes made to the current snapshot (lowerdir) are not synchronized to the new snapshot. Therefore, we do not recommend changing /etc after a new snapshot has been created and the system has not been rebooted. However, you can still find the changes in the /var/lib/overlay/ directory for the snapshot in which the changes were performed.
--continue option of the transactional-update command
If you use the --continue option of the transactional-update command when performing changes to the file system, all /etc directory layers created by each separate run of transactional-update, except for the one in the newest snapshot, are synchronized to the lowerdir (the lowerdir can have several mount points).