Where to find informations
Passionate about remastering and live distribution since the Knoppix days, I used remastersys and later systemback for my own purposes. Having failed to find anything satisfactory, I started looking to refracta-snapshot scripts and developed a modern remastering software called eggs.
What it does
eggs allows the system to be reproductive. Basically given a Debian/Devuan/Ubuntu compatible installed system it allows it to be played as a live system in ISO format. It uses calamares as the system installer when a GUI is present, but there is also a CLI installer called krill that is similar in appearance to calamares.
How I built it
eggs is written in typescript and uses nodejs, from within typescript it makes calls to bash for all necessary functions. I have tried to limit the use of bash as much as possible, this has resulted in a modern and fairly maintainable remastering system.
Challenges I ran into
Writing a remastering tool is a lengthy process currently. While some literature is now available and other software with a similar purpose can be consulted for inspiration and suggestions, the task for a single developer has become quite complex. I am fortunate enough to be working full time at eggs, being retired, but staying up to date always requires a big commitment. Anyway, this program has evolved over the course of five years and that's not a few.
Accomplishments that I'm proud of
eggs does not perform the filesystem copy for live creation, but the live filesystem is created on the fly through overlayfs and binded mounts. This results in significant time savings in remastering,
I use several compression algorithms, mainly zstd and xz to speed up compression during testing and to get reduced ISOs in production.
The use of calamares is made extremely simple, it is the same eggs that takes care of the creation of calamares modules and the consequent settings. Moreover, partially, the same configuration is also used for the krill installer - a sort of reduced calamares - of my own creation that allows to install the system in CLI environments.
What I learned
Many things of course... starting from typescript, linux boot feathures and normally obscure things like init and systemd.
I think this project is really something more bigger than the totality of the components, because allowing the reproduction of the system, we opens the door to a wide range of enthusiasts and professionals to create vertical systems for the most diverse needs.
What's next for penguins-eggs
I'm always looking for new possibilities, currently eggs has its own ppa repository and still allows to be installed and updated in a custom way from the so called "basket" even without the presence of a centralized repository. A choice of the project was to be fully functional in CLI mode, but at the moment I'm evaluating the possibility of using eggs in addition to existing ISO customization systems such as cubic. Of course, due to the nature of eggs and its evolutionary vision, the priorities of the project change from time to time and I often re-evaluate the development priorities.