Lighthouse logoLayered File System

Lighthouse64's file system utilizes AUFS to form a unification file system, which can appear to merge several different file systems into one virtual file system.

Lighthouse64‘s main file system is compressed into a single read-only file using Squashfs. During boot, the read-only main file system (L64-nnn.sfs) is mounted at /initrd/pup_ro2. At first shutdown you’re asked if you want to create a save file (L64save.3fs). During boot that file, which is really a read-write file system, is mounted at /initrd/pup_rw. Then the init script uses AUFS to merge the main read-only file system with the read-write save file, and mounts this new virtual file system on /.  

Using the Bootmanager, found under Setup in the main menu, you can add other .sfs files to the virtual file system (after a reboot). The Devx-L64_nnn.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 Devx-L64_nnn.sfs file at the root of the partition that contains our save file (/mnt/home), use the Bootmanager to add it and then reboot. These extra sfs files are mounted at /initrd/pup_roX 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. 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_ro2 (read-only) layer, a 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:

  • The original system files are always available in /initrd/pup_ro2.

  • Changes to the file system can easily be spotted in /initrd/pup_rw.

  • The pup_rw layer can be easily encrypted. This is an option when you create your save file.

  • You can create many save files, which effectively gives you many installs.

  • Back-ups only require you to make a copy of one file (L64save.3fs).

  • Since the file systems are a loop back mounted, you can install on non-Linux partitions (FAT, NTFS)

To create another save file you need to boot RAM only. If booting from CD, you would use the boot option lhp pfix=ram

If booting from GRUB you can edit your menu.lst or hit the e key when the GRUB screen pops up. Then add pfix=ram 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’ll be asked if you want to create a new save file. When you reboot and multiple L64save files are detected you’ll be asked which one you want to use. If you encrypted your save file, you’ll also be asked for your password.

Back to FAQs Index