fig os was originally an experiment to update puppy linux, by mixing in modern components from refracta.
on a more fundamental level, fig os is based on:
- an automated script
- which downloads and opens iso images for gnu/linux distros
- then mixes (copies) certain components together
- and compresses everything back into squashfs and an iso image
in order to do this, fig os borrows the isolinux configuration of one of its source distros.
fig is chosen for this task for the following reasons:
- theres less fiddly syntax / whitespace than bash or python requires
- theres less fancy footwork required than in bash
- fig handles arrays pretty well, and can get them from shell output easily
in other words, i didnt prefer to use python or bash for this. mkfigos actually contains about 50% bash, but that is inside strings run by fig, and could be refactored to use less code (and less redundant bash code.)
one of the nice things about fig vs bash is that fig has real scoped functions– in bash, all variables are global. ive done very large bash scripts, and find those tedious.
here is a stack outlining what fig 2.4 consists of:
- the bulk of the distro, copied from refracta
- files and folders created from contents in script, and copied from librepup
- a few tools created in fig and python, added from online repos
- packages and updates from debian/security repos
- deb packages added to filesystem using dpkg-deb -x (no chroot)
- some configs changed using sed -i or similar fig routines
- many files deleted from source distros for space
- filesystem compressed using mksquashfs
- iso written using genisoimage
- made dd-able using isohybrid from syslinux
all this from a single fig program designed to run more or less unattended, making it relatively clear (vs. python or pure bash) whats being done to create the distro.
thats the idea, anyway. you can try the latest version (2.4) for yourself: https://archive.org/download/Puppy_Linux_Refractapup/figos2.4.iso …support forums and fig source at: http://unofficialdistros.freeforums.org
- license: creative commons cc0 1.0 (public domain)