Fatdog64 utilizes AUFS to form a stackable filesystem, which enables viewing multiple different filesystem into it is one, big, merged virtual filesystem.
Fatdog64 main file system is compressed into a single read-only file using Squashfs. During boot, the read-only main file system (fd64-600.sfs) is mounted at /aufs/pup_ro. At first shutdown you will be asked if you want to create a savefile (fd64save.ext4). During boot that file, which is really a read-write file system, is mounted at /aufs/pup_save. If you don't have a savefile yet a RAM layer (tmpfs) will be used and that will be mounted at /aufs/pup_rw. Then the init script uses AUFS to merge the main read-only file system with the read-write savefile, and mounts this new virtual file system on / (the root filesystem).
Using the System SFS Loader, found under System in the Control Panel, you can add other SFS files (file extension .sfs) to the virtual file system. This can be done at any time. For example, fd64-devx_600.sfs, which contains gcc, static libraries, headers, kernel source and everything else you need to compile application, could be added into our virtual file system. Just place the fd64-devx_600.sfs file at the root of the partition that contains our savefile (/mnt/home), use the System SFS Loader to add it. That's it. Tick the "Load permanently" checkbox if you want the configuration survives reboot. These extra SFS files are mounted at /aufs/pup_roX (X is a number starting from 4 for historical reasons); and merged into the rest of the virtual file system which gets mounted at /.
Typical file system mounting:
The layers or branches (pup_rw - pup_roX) are listed in the order of priority. Files on the upper layers take priority than those in the lower layers. For example, if a file exists with the same name and in the same location in the file system tree, in the pup_rw layer and in the pup_ro4 layer, the file in the pup_rw layer will be the one that is visible. When a file is deleted from the virtual file system that really exists in the pup_ro (read-only) layer, a .wh.xxx file is written in pup_rw layer that is only visible in that layer. This file serves as a flag to AUFS that the corresponding file should not be visible in the virtual file system mounted on /.
So what are the advantages to all this? Many, here's a list:
To create another save file you need to boot RAM only. If booting from CD, you would use the boot option fatdog savefile=none. If booting from grub you can edit your menu.lst or hit the e key when the grub screen pops up. Then add savefile=none to the kernel line. Then you'll boot up with out a save file, the pup_rw layer will be in RAM. When you shutdown you will be asked if you want to create a new save file. When you reboot and multiple fd64save files are detected you will be asked which one you want to use. If you encrypted your save file, you will also be asked for your password.