Hatching Penguin's Eggs from CachyOS?

I just learned about this tool Penguin’s Eggs that lets you create a live and installable ISO from your running distro and it blows my mind :exploding_head:

There is an install script called Fresh Eggs and in their Supported Distros page, they say CachyOS should work fine if you

edit /etc/os-release and insert the line: ID_LIKE=arch, then create a symlink:
ln -s /boot/initramfs-linux-cachyos.img /boot/initramfs-$(uname -r).img

My /boot is FAT32, which doesn’t allow symlinks, if I’m not totally mistaken.

So would I have to

cp -s /boot/initramfs-linux-cachyos.img /boot/initramfs-$(uname -r).img

instead?

It shouldn’t hurt to try, just be aware that you’ll have to re-copy it the next time your kernel is updated (and delete older versions, as /boot is usually a fairly small partition).

I’m aware of both, thanks. My /boot is 2GB for a reason and I wouldn’t want to hatch eggs on a weekly basis :grinning_face_with_smiling_eyes: I’m just hoping to get a Live ISO from my beloved OS and maybe even install it on my laptop later on… I tried Ubuntu on it but i don’t like it very much. I’m just scared that Cachy might have problems with Sleep/Hibernation and probably being a bit too aggressive on fans and batterylife…

Damn, I needed that back a year from now. And I must have overlooked that.

Can anyone confirm compatibility with cachyos? This is great tool

Okay guys, now I am scared. Please somebody help me out here.

First, I did this

sudo cp /boot/initramfs-linux-cachyos.img /boot/initramfs-$(uname -r).img

instead of this:

ln -s /boot/initramfs-linux-cachyos.img /boot/initramfs-$(uname -r).img

because you can’t do a symlink on a FAT32 partition, right?

Then I added this line to /etc/os-release:

ID_LIKE=arch

as described here.

Then I cloned fresh-eggs::

git clone https://github.com/pieroproietti/fresh-eggs  ~/github/

and ran it:

sudo ~/github/fresh-eggs/fresh-eggs.sh

Here is what it did:

=====================================
UNIVERSAL INSTALLER FOR penguins-eggs
=====================================

>> Running: pacman -U --noconfirm /tmp/penguins-eggs-25.10.3-1-any.pkg.tar.zst
loading packages...
resolving dependencies...
looking for conflicting packages...

Package (15)                              New Version                 Net Change  Download Size

extra/arch-install-scripts                31-1                          0.04 MiB       0.02 MiB
cachyos-extra-znver4/erofs-utils          1.8.10-1.1                    0.57 MiB       0.16 MiB
cachyos-core-znver4/grub                  2:2.12.r359.g19c698d12-1.1   38.24 MiB       7.31 MiB
cachyos-extra-znver4/libburn              1.5.6-1.1                     0.72 MiB       0.29 MiB
cachyos-extra-znver4/libisoburn           1.5.6-1.1                     1.81 MiB       0.79 MiB
cachyos-extra-znver4/libisofs             1.5.6-1.1                     0.89 MiB       0.31 MiB
cachyos-extra-znver4/libngtcp2            1.16.0-1.1                    0.73 MiB       0.22 MiB
extra/mkinitcpio-archiso                  72-1                          0.05 MiB       0.02 MiB
cachyos-core-znver4/mkinitcpio-nfs-utils  0.3-8.1                       0.06 MiB       0.02 MiB
cachyos-extra-znver4/nbd                  3.26.1-2.1                    0.23 MiB       0.09 MiB
cachyos-extra-znver4/nodejs               24.9.0-1.1                   73.75 MiB      18.63 MiB
cachyos-extra-znver4/simdjson             1:4.0.3-1.1                   5.67 MiB       0.21 MiB
cachyos-extra-znver4/squashfs-tools       4.7.2-1.1                     0.77 MiB       0.27 MiB
cachyos-core-znver4/syslinux              6.04.pre3.r3.g05ac953c-4.1    4.27 MiB       1.38 MiB
penguins-eggs                             25.10.3-1                    74.40 MiB               

Total Download Size:    29.69 MiB
Total Installed Size:  202.19 MiB

:: Proceed with installation? [Y/n] 
:: Retrieving packages...
 simdjson-1:4.0.3-1.1-x86_64_v4                 215.1 KiB   427 KiB/s 00:01 [-------------------------------------------] 100%
 libngtcp2-1.16.0-1.1-x86_64_v4                 222.1 KiB   414 KiB/s 00:01 [-------------------------------------------] 100%
 libburn-1.5.6-1.1-x86_64_v4                    292.8 KiB   517 KiB/s 00:01 [-------------------------------------------] 100%
 erofs-utils-1.8.10-1.1-x86_64_v4               163.4 KiB   285 KiB/s 00:01 [-------------------------------------------] 100%
 libisofs-1.5.6-1.1-x86_64_v4                   313.8 KiB   535 KiB/s 00:01 [-------------------------------------------] 100%
 squashfs-tools-4.7.2-1.1-x86_64_v4             273.6 KiB   453 KiB/s 00:01 [-------------------------------------------] 100%
 mkinitcpio-nfs-utils-0.3-8.1-x86_64_v4          19.4 KiB  88.0 KiB/s 00:00 [-------------------------------------------] 100%
 libisoburn-1.5.6-1.1-x86_64_v4                 812.8 KiB   871 KiB/s 00:01 [-------------------------------------------] 100%
 nbd-3.26.1-2.1-x86_64_v4                        88.3 KiB   237 KiB/s 00:00 [-------------------------------------------] 100%
 syslinux-6.04.pre3.r3.g05ac953c-4.1-x86_64_v4 1410.8 KiB  1113 KiB/s 00:01 [-------------------------------------------] 100%
 mkinitcpio-archiso-72-1-any                     17.0 KiB  8.92 KiB/s 00:02 [-------------------------------------------] 100%
 arch-install-scripts-31-1-any                   16.6 KiB  8.35 KiB/s 00:02 [-------------------------------------------] 100%
 grub-2:2.12.r359.g19c698d12-1.1-x86_64_v4        7.3 MiB  1384 KiB/s 00:05 [-------------------------------------------] 100%
 nodejs-24.9.0-1.1-x86_64_v4                     18.6 MiB  1205 KiB/s 00:16 [-------------------------------------------] 100%
 Total (14/14)                                   29.7 MiB  1908 KiB/s 00:16 [-------------------------------------------] 100%
(15/15) checking keys in keyring                                            [-------------------------------------------] 100%
(14/15) checking package integrity                                          [-------------------------------------------] 100%
(14/15) loading package files                                               [-------------------------------------------] 100%
(15/15) checking for file conflicts                                         [-------------------------------------------] 100%
:: Running pre-transaction hooks...
(1/1) Performing snapper pre snapshots for the following configurations...
==> root: 992
:: Processing package changes...
( 1/15) installing arch-install-scripts                                     [-------------------------------------------] 100%
( 2/15) installing erofs-utils                                              [-------------------------------------------] 100%
Optional dependencies for erofs-utils
    erofsfuse: for FUSE file system client
( 3/15) installing grub                                                     [-------------------------------------------] 100%
:: Install your bootloader and generate configuration with:
     # grub-install ...
     # grub-mkconfig -o /boot/grub/grub.cfg
Optional dependencies for grub
    dosfstools: For grub-mkrescue FAT FS and EFI support [installed]
    efibootmgr: For grub-install EFI support [installed]
    freetype2: For grub-mkfont usage [installed]
    fuse3: For grub-mount usage [installed]
    libisoburn: Provides xorriso for generating grub rescue iso using grub-mkrescue [pending]
    libusb: For grub-emu USB support [installed]
    lzop: For grub-mkrescue LZO support
    mtools: For grub-mkrescue FAT FS support [installed]
    os-prober: To detect other OSes when generating grub.cfg in BIOS systems
    sdl: For grub-emu SDL support [installed]
( 4/15) installing libburn                                                  [-------------------------------------------] 100%
( 5/15) installing libisofs                                                 [-------------------------------------------] 100%
( 6/15) installing libisoburn                                               [-------------------------------------------] 100%
Optional dependencies for libisoburn
    tk: for xorriso-tcltk frontend
    sudo: for use with xorriso-dd-target [installed]
( 7/15) installing mkinitcpio-archiso                                       [-------------------------------------------] 100%
Optional dependencies for mkinitcpio-archiso
    curl: for PXE over HTTP [installed]
    gnupg: for PGP signature verification of rootfs over PXE [installed]
    mkinitcpio-nfs-utils: for PXE over NFS [pending]
    nbd: for PXE over NBD [pending]
    openssl: for CMS signature verification of rootfs over PXE [installed]
    pv: for status display during copy to RAM [installed]
( 8/15) installing mkinitcpio-nfs-utils                                     [-------------------------------------------] 100%
( 9/15) installing nbd                                                      [-------------------------------------------] 100%
(10/15) installing libngtcp2                                                [-------------------------------------------] 100%
(11/15) installing simdjson                                                 [-------------------------------------------] 100%
(12/15) installing nodejs                                                   [-------------------------------------------] 100%
Optional dependencies for nodejs
    npm: nodejs package manager
(13/15) installing squashfs-tools                                           [-------------------------------------------] 100%
(14/15) installing syslinux                                                 [-------------------------------------------] 100%

==> For setting up Syslinux BIOS using the syslinux-install_update script follow
    https://wiki.archlinux.org/index.php/Syslinux#Automatic_Install

==> For setting up Syslinux EFI follow
    https://wiki.archlinux.org/index.php/Syslinux#UEFI_Systems

==> The syslinux-install_update script does not currently support EFI install

Optional dependencies for syslinux
    perl-crypt-passwdmd5: For md5pass
    perl-digest-sha1: For sha1pass
    mtools: For mkdiskimage and syslinux support [installed]
    gptfdisk: For GPT support
    util-linux: For isohybrid [installed]
    efibootmgr: For EFI support [installed]
    dosfstools: For EFI support [installed]
(15/15) installing penguins-eggs                                            [-------------------------------------------] 100%
Optional dependencies for penguins-eggs
    bash-completion: eggs autocomplete [installed]
    calamares: system installer GUI
    zsh-completions: eggs autocomplete [installed]
:: Running post-transaction hooks...
(1/7) Creating system user accounts...
Creating group 'nbd' with GID 959.
Creating user 'nbd' (Network Block Device) with UID 959 and GID 959.
(2/7) Reloading system manager configuration...
(3/7) Arming ConditionNeedsUpdate...
(4/7) Updating linux initcpios...
==> Building image from preset: /etc/mkinitcpio.d/linux-cachyos-lts.preset: 'default'
==> Using default configuration file: '/etc/mkinitcpio.conf'
  -> -k /boot/vmlinuz-linux-cachyos-lts -g /boot/initramfs-linux-cachyos-lts.img
==> Using drop-in configuration file: '10-chwd.conf'
==> Starting build: '6.12.49-3-cachyos-lts'
  -> Running build hook: [base]
  -> Running build hook: [udev]
  -> Running build hook: [autodetect]
  -> Running build hook: [microcode]
  -> Running build hook: [kms]
  -> Running build hook: [modconf]
  -> Running build hook: [block]
  -> Running build hook: [keyboard]
  -> Running build hook: [keymap]
  -> Running build hook: [consolefont]
==> WARNING: consolefont: no font found in configuration
  -> Running build hook: [plymouth]
  -> Running build hook: [resume]
  -> Running build hook: [filesystems]
==> Generating module dependencies
==> Creating zstd-compressed initcpio image: '/boot/initramfs-linux-cachyos-lts.img'
  -> Early uncompressed CPIO image generation successful
==> Initcpio image generation successful
==> Building image from preset: /etc/mkinitcpio.d/linux-cachyos.preset: 'default'
==> Using default configuration file: '/etc/mkinitcpio.conf'
  -> -k /boot/vmlinuz-linux-cachyos -g /boot/initramfs-linux-cachyos.img
==> Using drop-in configuration file: '10-chwd.conf'
==> Starting build: '6.17.0-3-cachyos'
  -> Running build hook: [base]
  -> Running build hook: [udev]
  -> Running build hook: [autodetect]
  -> Running build hook: [microcode]
  -> Running build hook: [kms]
  -> Running build hook: [modconf]
  -> Running build hook: [block]
  -> Running build hook: [keyboard]
  -> Running build hook: [keymap]
  -> Running build hook: [consolefont]
==> WARNING: consolefont: no font found in configuration
  -> Running build hook: [plymouth]
  -> Running build hook: [resume]
  -> Running build hook: [filesystems]
==> Generating module dependencies
==> Creating zstd-compressed initcpio image: '/boot/initramfs-linux-cachyos.img'
  -> Early uncompressed CPIO image generation successful
==> Initcpio image generation successful
(5/7) Updating the info directory file...
(6/7) Updating the desktop file MIME type cache...
(7/7) Performing snapper post snapshots for the following configurations...
==> root: 993
Installation completed successfully!

I don’t fully understand what happened but when I see grub and mkinitcpio, I get really scared.

Could someone tell me if I now completely messed up my system (it uses rEFInd, not grub) and should go back one BTRFS snaphot? Or is everything fine, and I won’t have to worry about the next reboot?

There is no /boot/grub directory, so I guess it did not really set up grub on my system? Oh boy, I’m scared :cold_face:

Not at this time. As stated in the github. You can try the arch version, but I would not recommend this. But if you are running more than one distribution, this tool is very handy.

TL;DR: while writing this post, Firefox completely crashed on me for the first time ever, so I lost my nerve and did what I wanted to do anyway: I went back to the btrfs-snapshot before the installation of fresh-eggs.sh and I guess my Penguins Eggs adventure ends here at least for now.


Luckily, Firefox was able to completely restore the crashed tabs, so here is what I wanted to share with the world:

I just compared the snapshots before the sudo ~/github/fresh-eggs/fresh-eggs.sh (991) and after (996) like this:

diff -r /.snapshots/991/snapshot/ /.snapshots/996/snapshot/ > ~/snap-diff-991-996.txt

and what I see there makes me want to go back to 991 and act as if nothing happened :cold_face:

Things like these make be think I did a little too much of a change to my system:

Only in /.snapshots/996/snapshot/etc/grub.d: 00_header
Only in /.snapshots/996/snapshot/etc/grub.d: 10_linux
Only in /.snapshots/996/snapshot/etc/grub.d: 20_linux_xen
Only in /.snapshots/996/snapshot/etc/grub.d: 25_bli
Only in /.snapshots/996/snapshot/etc/grub.d: 30_os-prober
Only in /.snapshots/996/snapshot/etc/grub.d: 30_uefi-firmware
Only in /.snapshots/996/snapshot/etc/grub.d: 40_custom
Only in /.snapshots/996/snapshot/etc/grub.d: 41_custom
...
Only in /.snapshots/996/snapshot/lib/initcpio/hooks: archiso
Only in /.snapshots/996/snapshot/lib/initcpio/hooks: archiso_loop_mnt
...
Only in /.snapshots/996/snapshot/lib/systemd/system: nbd.service
Only in /.snapshots/996/snapshot/lib/systemd/system: nbd@.service
...
Only in /.snapshots/996/snapshot/usr/share/zsh/functions/Completion/Zsh: _eggs
Only in /.snapshots/996/snapshot/usr/share/zsh/site-functions: _arch-chroot
...
Only in /.snapshots/996/snapshot/usr/share/bash-completion/completions: arch-chroot
Only in /.snapshots/996/snapshot/usr/share/bash-completion/completions: eggs.bash
Only in /.snapshots/996/snapshot/usr/share/bash-completion/completions: genfstab
Only in /.snapshots/996/snapshot/usr/share/bash-completion/completions: grub
Only in /.snapshots/996/snapshot/usr/share/bash-completion/completions: grub-bios-setup
Only in /.snapshots/996/snapshot/usr/share/bash-completion/completions: grub-editenv

For this reason I celebrate btrfs with snapper in conjunction with the pacman hook!

Penguins Eggs just got a little more Cachy-compatible but I don’t have the time to test that at the moment.