Penguin's eggs are generated and new birds are ready to fly...
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Piero Proietti e6ae589a2f 8.17.4 2 hours ago
.vscode history moved to 6 months ago
addons We are on the shit: why don't work krill installation with UEFI? 3 months ago
assets MX21 experiment 2 months ago
bin history moved to 6 months ago
conf xadded Ubuntu 21.10 (impish) as compatible distros 2 days ago
documents 8.17.1 1 week ago
g4 history moved to 6 months ago
i386 8.17.1 1 week ago
manpages/doc/man history moved to 6 months ago
perrisbrewery release 8.0.26 3 months ago
scripts 8.17.1 1 week ago
sourceforge qua faremo un fork per recuperare la compatibilità con node8, eggs-8.0.30 1 month ago
src nn 3 hours ago
test ho inserito krill in eggs, forse una pazzia... ahivoglia adesso a debuggare 4 months ago
.editorconfig history moved to 6 months ago
.eslintignore history moved to 6 months ago
.eslintrc history moved to 6 months ago
.gitignore rimossi i submodules - scomodi - ed introdotti i vendors... si spera meglio 6 months ago
.gitmodules history moved to 6 months ago
.gitpod.yml history moved to 6 months ago
.npmignore history moved to 6 months ago
.prettierrc history moved to 6 months ago
LICENSE history moved to 6 months ago 8.17.4 2 hours ago 8.17.3 1 day ago
debug history moved to 6 months ago
eggs history moved to 6 months ago
init added Ubuntu hirsute 6 months ago
package-lock.json 8.17.4 2 hours ago
package.json 8.17.4 2 hours ago
test.ts history moved to 6 months ago
tsconfig.json rimosso figlet, utilizzo cfonts 4 months ago


Penguin's eggs are generated and new birds are ready to fly...

sources blog sources-documentation guide npm version deb iso



penguins-eggs is a console utility, in active development, who let you to remaster your system and redistribuite it as iso images or from the lan via PXE remote boot.

The scope of this project is to implement the process of remastering your version of Linux, generate it as ISO image to burn on a CD/DVD or copy to a usb key to boot your system. You can also boot your egg - via remote boot - on your LAN. You can easily install your live system with gui calamares installer or eggs cli installer.

All it is written in pure typescript, so ideally can be used with differents Linux distros. Yes, there are big differences about package manager used, but not so much in the way to work of bash and in the various programs used to build the iso.

penguins-eggs, at the moment 2021 may is a mature tool and is extremely usefull, You can easily create your personal customized iso or your organization/school version of Linux and deploy it on your LAN, give it to your friends as usb key or publish yours eggs in the internet!

Try penguins-eggs, yes it is a console utility - no GUI - but don’t be scared, penguins-eggs is a console command - really very simple - if you are able to open a terminal, you can use it and yours final users will enjoy of full gui and pratical installer to install your livecd.


Starting with version 7.6.x, an addons architecture was added to eggs, allowing third parties to develop extensions. Note that currently we have an extension for the theme that includes both branding calamares, link and installer icon. In addition, also as an addon has been developed choose between GUI or CLI installation, adjust the video resolution, remote support, etc.


From version 8.0.10 You can use the backup mode by simply adding --backup in the produce command. This way eggs will save your users data and accounts and will not add a live user, you will have to log in with the main user of your system with the his password. Note: since eggs always configures autologin, you may have a security risk with valuable data. Use this option only for your personal stuff and do not share the iso on the network.


Starting with eggs 8.0.0 I included a new CLI installer named krill. krill let you to install your system in a nice CLI interface using the same, configuration created by eggs for calamares. This lead to have “about the same” experience installing, from old distros to new one and for GUI and CLI. To force using krill in place of calamares in a GUI system just: sudo eggs install --cli

mom and dad

I’ve added two lightweight assistants integrated with eggs: mom and dad. While mom is a bash script with whiptail - and guides the user to the various commands and documentation, dad started as a short way to create isos. All you have to do is type sudo eggs dad and follow simple instructions. You can also shortcut the way to reset the configuration sudo dad -c or - even faster - reset the configuration, load defaults, kill created isos. Simply type sudo eggs dad -d and you will immediately be able to produce the egg in the default /home/eggs nest.

I suggest to leave the default values unchanged during the development of your remaster. You will be more fast in producing eggs, enjoy of dad after reinstalling eggs. If you need more space, simply mount your big device in /home/eggs.


yolk so called - staying on the subject of eggs - is a local repository included in the livecd that contains a minimum of indispensable packages during installation. Thanks to yolk, you can safely install your system without the need of an active internet connection.

What distributions can I use?

eggs was born on Debian strecth/buster, but actually full support Debian from jessie to sid (bullseye), Devuan beowulf, Ubuntu focal, bionic and derivatives. I actually try it against Debian varius versions, before releases. I tried it successfully in LMDE 4 debbie, and deepin. eggs, generally must work with all the derivates from that distros.

Some examples of iso images remastered with eggs are in the sourceforge page of the project.

What architecture can I use?

From eggs v. 8.0.4 I’m releasing eggs in 4 differents architectures: i386, amd64, arm64 and armel. eggs - at the moment - produce in i386 and amd64, but can be installed already on arm64 and armel. This mean who it is possible to install it in raspberrypi, but again not possible to produce a Raspberry Pi OS egg in armel or arm64. I’m just working now to complete this step.

Note: Of course it is possible to produce iso for Raspberry Pi Desktop amd64 based.


eggs is released as deb package and npm package. Most users need just deb version, if you already use nodejs the npm package can be installed too.

deb packages

eggs is released deb packages for i386, amd64, armal and arm64 architectures. Due the characteristic of eggs, they can installed in Debian, Devuan or Ubuntu based distros, withouth worries about different versions, except for the architecture. It include standard scripts for preinst, postinst, prerm and postrm.

Install eggs

There are more than a way to install eggs, the most common it’s to use penguins-eggs-ppa.

Using penguins-eggs-ppa

eggs have it’s repository ppa, You can use it, copy and paste in a terminal window the following two lines

curl -SsL | sudo apt-key add -
sudo curl -s --compressed -o /etc/apt/sources.list.d/penguins-eggs-ppa.list ""

Update your repositories: sudo apt update and install eggs: sudo apt install eggs.

Download the package and install with dpkg

The simplest way to install eggs is download the package eggs from sourceforge page of the project and install it

sudo dpkg -i eggs_8.17.3-1_amd64.deb

or, on a i386 system:

sudo dpkg -i eggs_8.17.3-1_i386.deb

Upgrade eggs

If you are using penguins-eggs-ppa You can ugrade eggs as others packages just: sudo apt upgrage.

Upgrade from basket

If you are using not the penguins-eggs-ppa, the fastest way to use sudo eggs update and choose basket. Eggs let you to select the last 4 versions on the basket and install it.

sudo eggs update

Manual upgrade

Simply download new versions of eggs from sourgeforge page and install it with the standard command sudo dpkg -i eggs_8.17.x-1_amd64.deb.


In addition to the description of the commands in this README, you can consult the Official book. There is also other documentation - mostly for developers - included in the documents and i386 directories of this repository,

$ npm install -g penguins-eggs
$ eggs COMMAND
running command...
$ eggs (-v|--version|version)
penguins-eggs/8.17.4 linux-x64 node-v8.17.0
$ eggs --help [COMMAND]
  $ eggs COMMAND


eggs adapt

adapt monitor resolution for VM only

  $ eggs adapt

  -h, --help     show CLI help
  -v, --verbose

  $ eggs adjust

See code: src/commands/adapt.ts

eggs autocomplete [SHELL]

display autocomplete installation instructions

  $ eggs autocomplete [SHELL]

  SHELL  shell type

  -r, --refresh-cache  Refresh cache (ignores displaying instructions)

  $ eggs autocomplete
  $ eggs autocomplete bash
  $ eggs autocomplete zsh
  $ eggs autocomplete --refresh-cache

See code: @oclif/plugin-autocomplete

eggs calamares

calamares or install or configure it

  $ eggs calamares

  -f, --final    final: remove calamares and all it's dependencies after the installation
  -h, --help     show CLI help
  -i, --install  install calamares and it's dependencies
  -r, --remove   remove calamares and it's dependencies
  -v, --verbose
  --theme=theme  theme/branding for eggs and calamares

  ~$ sudo eggs calamares 
  create/renew calamares configuration's files

  ~$ sudo eggs calamares -i 
  install calamares and create it's configuration's files

See code: src/commands/calamares.ts

eggs config

Configure and install prerequisites deb packages to run it

  $ eggs config

  -c, --clean          remove old configuration before to create new one
  -h, --help           show CLI help
  -n, --nointeractive  assume yes
  -v, --verbose        verbose

  $ eggs prerequisites

  ~$ sudo eggs config
  Configure and install prerequisites deb packages to run it

See code: src/commands/config.ts

eggs dad

ask help from daddy - configuration helper

  $ eggs dad

  -c, --clean    remove old configuration before to create
  -d, --default  remove old configuration and force default
  -h, --help     show CLI help
  -v, --verbose

See code: src/commands/dad.ts

eggs export:deb

export deb/docs/iso to the destination host

  $ eggs export:deb

  -a, --all    export all archs
  -c, --clean  remove old .deb before to copy
  -h, --help   show CLI help
  --amd64      export amd64 arch
  --arm64      export arm64 arch
  --armel      export armel arch
  --i386       export i386 arch

See code: src/commands/export/deb.ts

eggs export:docs

remove and export docType documentation of the sources in the destination host

  $ eggs export:docs

  -h, --help  show CLI help

See code: src/commands/export/docs.ts

eggs export:iso

export iso in the destination host

  $ eggs export:iso

  -b, --backup  export backup ISOs
  -c, --clean   delete old ISOs before to copy
  -h, --help    show CLI help

See code: src/commands/export/iso.ts

eggs help [COMMAND]

display help for eggs

  $ eggs help [COMMAND]

  COMMAND  command to show help for

  --all  see all commands in CLI

See code: @oclif/plugin-help

eggs info

thinking a different approach to CLI...

  $ eggs info

  -h, --help     show CLI help
  -v, --verbose

See code: src/commands/info.ts

eggs install

command-line system installer - the egg became a penguin!

  $ eggs install

  -c, --cli      force use CLI installer
  -h, --help     show CLI help
  -v, --verbose  verbose

  $ eggs hatch
  $ eggs krill

  $ eggs install
  Install the system using GUI or CLI installer

See code: src/commands/install.ts

eggs kill

kill the eggs/free the nest

  $ eggs kill

  -h, --help     show CLI help
  -v, --verbose  verbose

  $ eggs kill
  kill the eggs/free the nest

See code: src/commands/kill.ts

eggs mom

ask for mommy - gui helper

  $ eggs mom

  -h, --help  show CLI help

See code: src/commands/mom.ts

eggs produce

the system produce an egg: iso image of your system

  $ eggs produce

  -b, --backup         backup mode
  -f, --fast           fast compression
  -h, --help           show CLI help
  -m, --max            max compression
  -n, --normal         normal compression
  -p, --prefix=prefix  prefix
  -s, --script         script mode. Generate scripts to manage iso build
  -v, --verbose        verbose
  -y, --yolk           -y force yolk renew
  --addons=addons      addons to be used: adapt, ichoice, pve, rsupport
  --basename=basename  basename
  --release            release: configure GUI installer to remove eggs and calamares after installation
  --theme=theme        theme for livecd, calamares branding and partitions

  $ eggs spawn
  $ eggs lay

  $ sudo eggs produce 
  produce an ISO called [hostname]-[arch]-YYYY-MM-DD_HHMM.iso, compressed xz (standard compression).
  If hostname=ugo and arch=i386 ugo-x86-2020-08-25_1215.iso

  $ sudo eggs produce -v
  same as previuos, but with --verbose output

  $ sudo eggs produce -vf
  same as previuos, compression zstd, lz4 or gzip (depend from system capability)

  $ sudo eggs produce -vm
  same as previuos, compression xz -Xbcj x86 (max compression, about 10%
  more compressed)

  $ sudo eggs produce -vf --basename leo --theme debian --addons adapt 
  produce an ISO called leo-i386-2020-08-25_1215.iso compression fast,
  using Debian theme and link to adapt

  $ sudo eggs produce -v --basename leo --theme debian --addons rsupport 
  produce an ISO called leo-i386-2020-08-25_1215.iso compression xz,
  using Debian theme and link to dwagent

  $ sudo eggs produce -v --basename leo --rsupport 
  produce an ISO called leo-i386-2020-08-25_1215.iso compression xz, using eggs
  theme and link to dwagent

  $ sudo eggs produce -vs --basename leo --rsupport 
  produce scripts to build an ISO as the previus example. Scripts can be found
  in /home/eggs/ovarium and you can customize all you need

See code: src/commands/produce.ts

eggs remove

remove eggs and others stuff

  $ eggs remove

  -a, --autoremove  remove eggs packages dependencies
  -h, --help        show CLI help
  -p, --purge       remove eggs configurations files
  -v, --verbose     verbose

  $ sudo eggs remove 
  remove eggs

  $ sudo eggs remove --purge 
  remove eggs, eggs configurations, packages prerequisites

See code: src/commands/remove.ts

eggs tools:clean

clean system log, apt, etc

  $ eggs tools:clean

  -h, --help     show CLI help
  -v, --verbose  verbose

  $ eggs clean

See code: src/commands/tools/clean.ts

eggs tools:locales

install/clean locales

  $ eggs tools:locales

  -h, --help       show CLI help
  -r, --reinstall  reinstall locales
  -v, --verbose    verbose

See code: src/commands/tools/locales.ts

eggs tools:skel

update skel from home configuration

  $ eggs tools:skel

  -h, --help       show CLI help
  -u, --user=user  user to be used
  -v, --verbose

  $ eggs skel

  $ eggs skel --user mauro
  desktop configuration of user mauro will get used as default

See code: src/commands/tools/skel.ts

eggs tools:stat

get statistics from sourceforge

  $ eggs tools:stat

  -h, --help   show CLI help
  -m, --month  current month
  -y, --year   current year

  $ eggs stat

See code: src/commands/tools/stat.ts

eggs tools:yolk

configure eggs to install without internet

  $ eggs tools:yolk

  -h, --help     show CLI help
  -v, --verbose

  $ eggs yolk -v

See code: src/commands/tools/yolk.ts

eggs update

update the penguin’s eggs tool

  $ eggs update

  -a, --apt      if eggs package is .deb, update from distro repositories
  -b, --basket   if eggs package is .deb, update from eggs basket
  -h, --help     show CLI help
  -n, --npm      if eggs package is .npm, update from
  -v, --verbose  verbose

  $ eggs update
  update/upgrade the penguin's eggs tool

See code: src/commands/update.ts

Terminal samples

terminal samples

That’s all Folks!

No need other configurations, penguins-eggs are battery included or better, as in the real, live is inside! :-D

More informations

There is user’s manual and same other documentation in documents folder of this repository.

You can contact me at or meet me

Copyright (c) 2017, 2021 Piero Proietti, dual licensed under the MIT or GPL Version 2 licenses.