Home Linux How To Create Installable ISO From A Linux System With Penguins-eggs

How To Create Installable ISO From A Linux System With Penguins-eggs

Turn Your Linux System Into An Installable ISO Using Penguins-eggs Utility

By sk
Published: Last Updated on 10.5K views

This detailed tutorial explains what is Penguins-eggs, how to install Penguins-eggs in Linux and how to create installable ISO from your current Linux system with Penguins-eggs.

What is Penguins-eggs?

Penguins -eggs is a console utility that allows you to remaster your Linux system and create an installable ISO from the live system. Using Penguins-eggs, you can create both live and installable version of your current Linux machine, with or without user data.

Penguins-eggs creates a compressed filesystem from your current Linux system by removing user data and the users. You can then fully customize the resulting ISO with themes and addons to make it look like your own Linux distribution.

To put this in layman terms, you can backup your whole install, including all of your personal data (files, documents, PDFs, music, videos…etc), that is currently running right now on your internal SSD/HDD and create an ISO. You can put the ISO in your external USB and carry a live operating system. Just plug the USB, boot the ISO and start using your portable Linux operating system anywhere. It's that simple!

Penguins-eggs can be used for creating custom remixing distros, migrations, rebuilds, and hardware switching for all user cases in all organizations, companies, schools, colleges, and universities.

Please note that Penguins-eggs is not a disk cloning software like Clonezilla. It is completely different. Penguins-eggs can be directly run from the live/current system and snapshot the current state of your running Linux system. On the other hand, disk cloning software can be run from a bootable USB only.

Penguins-eggs is a great replacement for good-old Remastersys and other similar programs such as Pinguy Builder, Refracta, Systemback and Knoppix! Unfortunately, the development of Remastersys, Pinguy Builder, and Systemback has been stopped a long time ago. As far as I know, Penguins-eggs project is only the actively maintained project to remaster your current Linux system and redistribute it as a live ISO file (with or without user and system data).

Penguins-eggs is free, and opensource program written in Typescript. Currently, it supports Debian, Devuan, Ubuntu, Arch Linux and Manjaro Linux. It also supports the Ubuntu-derivatives such as Linux Mint, PopOS, Kubuntu, Lubuntu, Xubuntu, and KDE Neon etc.

Penguins-eggs Features

Penguins-eggs ships with many useful features. Let us have quick glance of some important features of Penguins-eggs.

1. Include User Data

By default, the user data will be excluded while creating ISO. You can however use the --clone flag to take the data with you.

2. Encrypt Data

If you use --clone flag, the data will be visible directly from the live environment and accessible to anyone who gets the resulting ISO file. It is also possible to encrypt the user data and generate the ISO.

When creating the ISO with --clonecrypted flag, the user data will be kept under an encrypted LUKS volume.

3. GUI or CLI Installer

Once the ISO is created, you can install the resulting ISO using either GUI Calamares installer or the internal TUI krill installer.

4. Unattended Installation

With krill installer, you can also perform an unattended installation using --unattended flag. You can change configuration values in /etc/penguins-eggs.d/krill.yaml before starting the unattended installation.

5. PXE Support

What if you want to deploy the ISO in other computers on the network? It is also possible too.

Penguins-eggs has a built-in PXE service. The self-configuring PXE service allows us to easily deploy the newly created ISO on a remote system on the network.

The PXE feature is made possible with a command named "cuckoo". This command is used to deploy the ISO on an already installed system or live booting the ISO itself.

6. Built-in Local Repository

The yet another useful feature of Penguins-eggs is local repository. The local repository is known as Yolk and included in the live cd. It contains a minimum of indispensable packages during installation. So, we can safely install our system without the need of an active internet connection. Sounds quite useful, yeah?

7. Built-in Assistants

Penguins-eggs is shipped with two built-in assistants namely "mom" and "dad".

The mom script is just a helper program to explain various commands and their options. And the dad script will help you to properly configure Penguins-eggs program.

To configure Penguins-eggs, simply type the following command and follow the on-screen instructions.

$ sudo eggs dad

If there are any issues, you can run the following command to reset everything:

$ sudo eggs dad -d

It will reset the configuration, load defaults, delete the created ISOs.

In summary, the following are some useful features of Penguins-eggs.

  • Easily and quickly create an installable ISO from a running Linux distribution,
  • Create backups of your current Linux system,
  • Include or exclude user data from the ISO,
  • Encrypt user data,
  • Supports unattended installation,
  • Deploy ISO on a networked computer via PXE service,
  • Supports customizable GUI installer and CLI installer,
  • Built-in local repository and help assistants,
  • Removes itself from the new machine after installation,
  • Free and Opensource!

Install Penguins-eggs in Linux

Penguins-eggs is packaged for a few major operating systems including Arch Linux and its variants, Debian, Ubuntu and its derivatives.

If you're on Arch Linux, EndeavourOS and Manjaro Linux, you can install Penguins-eggs from AUR using either Paru or Yay helper programs ash shown below.

$ paru -S penguins-eggs

Or

$ yay -S penguins-eggs

On Debian, Ubuntu and its derivatives, you can install Penguins-eggs via its official PPA or manually download the .deb package and install it using the package manager.

To install Penguins-eggs via PPA, add the GPG key and PPA using commands:

$ curl -fsSL https://pieroproietti.github.io/penguins-eggs-ppa/KEY.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/penguins-eggs.gpg
$ echo "deb [arch=$(dpkg --print-architecture)] https://pieroproietti.github.io/penguins-eggs-ppa ./" | sudo tee /etc/apt/sources.list.d/penguins-eggs.list > /dev/null

Update the package repositories:

$ sudo apt update

And then install Penguins-eggs in Debian-based systems using command:

$ sudo apt install eggs

If you don't want to add the PPA, download Penguins-eggs packages from Sourceforge:

$ wget https://sourceforge.net/projects/penguins-eggs/files/DEBS/eggs_9.4.2_amd64.deb

And then install the downloaded .deb package using dpkg package manager.

$ sudo dpkg -i eggs_9.4.2_amd64.deb
$ sudo apt install -f

You can also install Penguins-eggs deb package using gdebi package manager as well.

$ sudo apt install gdebi
$ sudo gdebi eggs_9.4.2_amd64.deb

If you are on a system UEFI, I recommend you to install one more package named grub-efi-amd64-bin.

To do so, run:

$ sudo apt install grub-efi-amd64

Well, we just installed Penguins-eggs.

Let us go ahead and see how to turn your current Linux system into an installable ISO using Penguins-eggs.

Create Installable ISO from Linux System with Penguins-eggs

Once penguins-eggs is installed, you can use the eggs command to make a new ISO.

Displaying Help

Run the eggs command without any options to view the general help including list of the available sub-commands:

$ eggs

Sample Output:

Perri's Brewery edition: remaster your system and distribute it

VERSION
  penguins-eggs/9.4.2 linux-x64 node-v16.19.1

USAGE
  $ eggs [COMMAND]

TOPICS
  export    export deb/docs/iso to the destination host
  tools     clean system log, apt, etc
  wardrobe  get wardrobe

COMMANDS
  adapt         adapt monitor resolution for VM only
  analyze       analyze for syncto
  autocomplete  display autocomplete installation instructions
  calamares     configure calamares or install or configure it
  config        Configure and install prerequisites deb packages to run it
  cuckoo        PXE start with proxy-dhcp
  dad           ask help from daddy - TUI configuration helper
  help          Display help for eggs.
  install       krill: the CLI system installer - the egg became a penguin!
  kill          kill the eggs/free the nest
  mom           ask help from mommy - TUI helper
  produce       produce a live image from your system without your data
  status        information about eggs status
  syncfrom      restore users and user data from a LUKS volumes
  syncto        saves users and user data in a LUKS volume inside the iso
  update        update the Penguins' eggs tool
  version
Display Penguins-eggs Help
Display Penguins-eggs Help

You can also view the help section of a specific sub-command. For instance, to display the help section of eggs produce command, run:

$ eggs produce -h
Display Sub-command Help
Display Sub-command Help

You can hit the TAB key to view all the possible choices for each sub-command.

The more guided help can be retrieved by running the following command:

$ eggs mom

This will display a TUI menu-based interactive help section, so we can view the help section of all commands in a user-friendly format.

Display TUI Guided Help
Display TUI Guided Help

In addition, there is a dedicated manual page available for eggs command. To view the man pages of eggs command, run:

$ man eggs

Generate ISO from Live System without User Data

Generating installable ISO from a Linux system with Penguins-eggs is simple and straight-forward. All you have to do is just run the eggs command to create an ISO from your live Linux system:

$ sudo eggs produce

Please keep an eye on the screen. Penguins-eggs will ask you a few YES/NO questions. Just use the UP/DOWN arrows to choose the appropriate answer.

Please note that if you're on graphical system, eggs will prompt you if you want to install the calamares gui installer. Choose "yes" using the arrow key and hit ENTER to continue installation.

After successful ISO creation, you will see the following output:

[...]
eggs is finished!

You can find the file iso: debian11vm_amd64_2023-03-16_1302.iso
in the nest: /home/eggs/.

Remember, on liveCD user = live/evolution
                    root = root/evolution
Create Installable ISO From Linux System With Penguins-eggs
Create Installable ISO From Linux System With Penguins-eggs

By default, eggs will save the resulting ISO in /home/eggs directory. The default live cd username and password for the ISO is live/evolution and the root password for the live cd is evolution.

The eggs uses the default fast compression by default, which provides a faster compression speed, to generate the ISO.

You can also use -f or --standard for standard compression.

$ sudo eggs produce --standard

You can also add --max flag to get more compressed ISOs. Please note that this process will be slower than standard and fast compression methods.

$ sudo eggs produce --max

As you may noticed in the above output, the ISO name would be derived from the hostname of your system. For example, my generated ISO name is debian11vm_amd64_2023-03-16_1302.iso. What if you want to add a custom basename for your ISO? It is possible too. To add a basename for the ISO, run:

$ sudo eggs produce --basename=Debian11

Replace "Debian11" basename with your own.

Create ISO with User Data

When you run eggs produce command without any options will create only the ISO. If you want to include the user data in the ISO, run eggs command with --clone option.

$ sudo eggs produce --clone

This will create an installable ISO with the user data UNENCRYPTED. So anyone who has access to the ISO can view the data.

Encrypt User Data

If you don't want others to view the user data, you can run eggs command with --cryptedclone option to encrypt the user data and save it in a LUKS volume in the ISO.

$ sudo eggs produce --cryptedclone

The encrypted user data is saved in a LUKS volume inside the live system. The data is not accessible on the live ISO. If you want to access the data, you should install your system with the ISO using the TUI krill installer. Please be mindful that the user data cannot be restored when using the graphical installer Calamares.

Test the ISO

After generating the ISO from your live system, you can test it by creating a bootable live USB with the ISO using any bootable ISO creation applications like Ventoy.

Boot your system with USB. You should see the following grub menu.

Boot into Live ISO
Boot into Live ISO

Choose either GUI or CLI installer and hit ENTER to continue booting the system. Finally, login with the default livecd user credentials.

You can use the following user credentials to login to your live system.

  • LiveCD user: live
  • LiveCD user password: evolution
  • LiveCD root password: evolution

I am going to login as root user.

Login to Live System as Root
Login to Live System as Root

Now you will be logged into the live system. I checked if all data is present in my Debian 11 live medium. Yes, they are!

I am skeptical at first try. But I am really pleased with the result. Penguins-eggs just works out of the box. I created live ISO with and without user data. When logging into the live ISO created with user data, I can able to see and access all the data. Everything is in the live medium. Honestly I didn't expect the positive result.

Debian Live System
Debian Live System

If you want to install the OS, simply start the installer from the menu/dash. To do so, just type "install" in the start menu and click "Install System" to start the installation.

Start Installation
Start Installation

That's it. Now continue the Debian 11 OS installation as usual.

Install Debian OS
Install Debian OS

eggs has many other useful commands too. To me, creating live ISO from my current system is enough! So I haven't tried the remaining commands yet. But I will test the remaining commands in the days to come. I suggest you to try all of them in a virtual machine and see if they help in your use-cases.

Change Default Configuration Settings

As stated already, you can use "eggs dad" command to configure various Penguins-eggs settings such as live username and its password, root password, snapshot prefix, snapshot basename, GUI installer themes, time zone, and more.

You can also do the same from command line by editing /etc/penguins-eggs.d/eggs.yaml file. Open this file in your favorite editor and change the values as per your liking.

version: 9.4.2
snapshot_dir: /home/eggs/
snapshot_prefix: egg-of-debian-bullseye-
snapshot_excludes: /usr/local/share/penguins-eggs/exclude.list
snapshot_basename: debian11vm
user_opt: live
user_opt_passwd: evolution
root_passwd: evolution
theme: eggs
force_installer: true
make_efi: true
make_md5sum: false
make_isohybrid: true
compression: zstd -b 256K -Xcompression-level 1
ssh_pass: true
timezone: America/New_York
locales_default: en_IN
locales:
  - en_IN
  - en_US.UTF-8
pmount_fixed: false
machine_id: 57b38d32dd7a45f18c49301d559b3f27
vmlinuz: /boot/vmlinuz-5.10.0-21-amd64
initrd_img: /boot/initrd.img-5.10.0-21-amd64

After changing the values, save the file and close it. Restart the eggs program to take effect the changes.

Update Penguins-eggs

To update Penguins-eggs, run:

$ sudo eggs update

You can also use your distribution's package manager to update it.

On Arch Linux and its variants, simply run the following command to update Penguins-eggs package:

$ paru -Syu

Or,

$ yay -Syu

If you're Debian/Ubuntu and installed Penguins-eggs via PPA, simply run:

$ sudo apt update
$ sudo apt full-upgrade

If you've installed manually using the .deb package, download the new version and install it again using dpkg or gdebi command.

$ sudo dpkg -i eggs_x.x.x_amd64.deb
$ sudo apt install -f

Using gdebi package manager:.

$ sudo gdebi eggs_x.x.x_amd64.deb

Conclusion

In my humble opinion, Penguins-eggs is quite useful and a real replacement for the long-abandoned Remastersys and Systemback programs. I tried Penguins-eggs in my Debian 11 and Ubuntu 22.04 testing machines and it works well as advertised.

If you ever wanted to build a custom installable Linux ISO from your currently running system, Penguins-eggs would be a perfect choice. You can build a re-usable, custom Linux distribution with or without user data and deploy it on other systems.

Resources:

Featured Image by Bülent Ergün from Pixabay.

You May Also Like

3 comments

Richard Steven Hack March 17, 2023 - 6:59 am

great. Another useful package that only runs on Debian and derivatives. Has this guy ever heard of an AppImage (preferably)? Snap? Flatpak?

Useless to me on openSUSE…

Reply
sk March 17, 2023 - 1:42 pm

It runs on Arch Linux and derivatives too. I really hope the author will release a flatpak/AppImage packages in future.

Reply
faycal March 23, 2023 - 5:16 pm

hello, I managed to create the ISO live but I wanted to install it directly on another machine on the hard disk; I no longer need to use the USB boot key. THANKS

Reply

Leave a Comment

* By using this form you agree with the storage and handling of your data by this website.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

This website uses cookies to improve your experience. By using this site, we will assume that you're OK with it. Accept Read More