Configuring A/B Partition System
You need to create a shadow partition set and configure the A/B partition system to use it for Photon OS updates and modifications.
To use the A/B partition system, ensure the following prerequisites:
If you boot with BIOS, only a root filesystem pair is needed. If you boot with UEFI, an EFI partition pair is also needed.
In the kickstart configuration file, when you create a partition, set the value of the
ab
parameter astrue
to create a shadow partition of the user-defined partition.To know more about the kickstart configuration, see the following page: Kickstart Support in Photon OS
The following example shows how to create a shadow partition mounted at
/
:{ "partitions": [ { "disk": "/dev/sda", "mountpoint": "/", "size": 0, "filesystem": "ext4", "ab": true }, { "disk": "/dev/sda", "mountpoint": "/sda", "size": 100, "filesystem": "ext4" } ] }
Configure the system details of the partitions for A/B update in the following configuration file:
/etc/abupdate.conf
The following template shows how a configuration file looks like:
# either UEFI, BIOS, or BOTH # BOOT_TYPE=<boot type> # automatically switch to other partition set after update? # AUTO_SWITCH=NO # automatically finalize the update after a switch? # AUTO_FINISH=no # can choose to either use tdnf or rpm as a package manager # if not specified, tdnf is used # PACKAGE_MANAGER=tdnf # Provide information about partition sets # PartUUID info can be found with the "blkid" command # # EFI is needed if booting with UEFI # Format: PARTUUID A, PARTUUID B, mount point # # Example: HOME=("PARTUUID A" "PARTUUID B" "/home") # Note that the / partition should be labeled as _ROOT # EFI=("PARTUUID A" "PARTUUID B" "/boot/efi") # _ROOT=("PARTUUID A" "PARTUUID B" "/") # List of all partition sets # SETS=( "ROOT" ) # exclude the following directories/files from being synced # note that these directory paths are absolute, not relative to current working directory # # Format: <set name>_EXCLUDE=( "/dir1/" "/dir2" "/dir3/subdir/file" ... "/dirN/" ) # # Example: # HOME_EXCLUDE=( "/mnt" "lost+found" )
You can use the abupdate init
command to auto-populate all the fields. However, it is recommended that you manually enter the fields for better accuracy.
Note: Persistent or shared partitions that exist outside the active and inactive partition sets are also supported in the A/B partition system. You need not specify the persistent or shared partitions in the configuration files.