A Debian GNU/Linux (Buster) derivative with a unique partitioning scheme crafted for maximizing the strength against filesystem corruption: the ISO9660 system partition is read-only by design at filesystem-level. The data persistence partition contains only the delta: system updates and your data lay there.
The data partition mounted on top of a read-only system partition makes the resulting operating system resistent to filesystem-corruption. Moreover, you can do complete system backups by just tar-ring only the files contained within that partition.
Technically, Resilient Linux is a persistent live operating system which features a liveng partioning scheme, originally thought for live operating systems. Resilient Server, however, is hard drive installable: the liveng compliancy (programs and kernel updates with a readonly system partition) is thus suitable for “indestructible” hard drive installations.
The partitioning scheme is made up of two ISO9660 system partitions, one containing all the “interesting” files for a live operating system (kenel, initrd, filesystem.squashfs) and the other one containing kernel and initrd only.
The GRUB bootloader (both for BIOS and UEFI) is instructed to boot by default from the second system partition, because that one always contains the most updated kernel and initrd files:
at every mkinitramfs, this small partition will be overwritten. First System partition files are kept at their default state and can be useful in case of recovery or when a complete persistence reset is performed.
The third (FAT) partition is for the UEFI compliance (it contains the UEFI GRUB bootloader); the first-stage BIOS GRUB bootloader is installed within the MBR.
Data persistence is accomplished by a fourth partition where system is instructed to write into, or better explained, which the system will union-mount with the filesystem.squashfs image.
Normal flow is:
– GRUB boots the kernel/initrd from the second partition, then union-mounts the filesystem.squashfs (within the first partition) with the persistence partition and this will be the root /.
– First partition is used for storing the filesystem squashfs and the original kernel.
– Why not storing the filesystem.squashfs within the second partition? Because we need to rewrite it at every kernel update, so it must be very small.
Code on GitHub.