Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PenguinVault

A themed Ventoy build: dark polar-night boot menu, per-distro icons, a PenguinVault volume label instead of the default Ventoy, and scripts to keep the ISOs on the drive from quietly rotting.

Ventoy does the booting. PenguinVault is the paint, the icons, and the housekeeping around it.

theme preview

What's in here

theme/penguinvault/ The GRUB2 theme — background, three .pf2 fonts, 26 menu icons
scripts/install.sh Build a PenguinVault drive from scratch (installs Ventoy, labels it, applies the theme)
scripts/apply.sh Convert an existing Ventoy drive without touching its ISOs
scripts/update-isos.sh Audit the ISOs on the drive against current upstream releases; optionally download the stale ones
scripts/validate_theme.py Catch broken themes before they reach a boot drive
scripts/make_background.py, make_icons.py Regenerate the artwork (no binary blobs to trust)

Usage

Convert a Ventoy drive you already have

./scripts/apply.sh /run/media/$USER/Ventoy

Installs the theme, wires up the icon rules, and switches Ventoy into TreeMode so the folders you organised the drive into show up as browsable submenus. (Ventoy's default is ListMode, which flattens every ISO into one long list and ignores your directory structure entirely.) Your ISOs, persistence config, and any other ventoy.json settings are merged, not overwritten — re-running is safe and produces no duplicates, and an existing menu-mode choice is left alone.

To also rename the volume (needs root, because relabelling requires the volume unmounted):

sudo ./scripts/apply.sh /run/media/$USER/Ventoy --label

On the label: exFAT and FAT cap volume labels at 11 characters, and PenguinVault is 12 — so on a stock Ventoy drive (exFAT) the volume can only be labelled PenguinVlt. NTFS allows 32 characters and gets the full PenguinVault; apply.sh --label picks the right one automatically from the filesystem it finds.

Ventoy supports NTFS for the data partition, and Linux reads and writes it through the in-kernel ntfs3 driver, so reformatting is a legitimate way to get the full name — but it destroys the partition, so everything has to be copied off and back. scripts/convert-to-ntfs.sh does that with checksum verification at both ends.

Either way this only affects the name your file manager shows. The boot menu reads "PenguinVault" regardless, because that text comes from the theme rather than the volume label.

Build a fresh drive

sudo ./scripts/install.sh /dev/sdX          # add --gpt and/or --secure-boot

Fetches the current Ventoy release, installs it with -L PenguinVault (Ventoy's own documented label option), then applies the theme. This erases the target disk and makes you type ERASE to confirm — with an extra warning if the device isn't removable.

Keep the ISOs fresh

./scripts/update-isos.sh /run/media/$USER/PenguinVault            # audit only
./scripts/update-isos.sh /run/media/$USER/PenguinVault --update   # download stale ones

The audit classifies every ISO as current, outdated, or unverifiable, comparing filename versions against a manifest snapshot (MANIFEST_DATE at the top of the script — bump it as you refresh entries).

Rolling releases and community spins whose filenames carry no version are reported as unverifiable rather than guessed at. Downloads go to <name>.part, are checked against the project's own SHA256SUMS when it publishes one next to the ISO, and only then replace the old file via an atomic rename — a failed or corrupt download always leaves the working ISO in place.

Theme

Polar night: deep blue gradient, a faint vault-door ring behind the menu, an aurora wash, and Tux in the corner. Ice cyan #48cae4 for structure, amber #ffb703 for the selected entry — amber because it stays legible against the blue for the most common forms of colour blindness, where a green highlight would not.

Tux keeps his own palette rather than being tinted to match the theme — black #0e0e10, white #f7f7f4, orange #f7a81b. He's composited after the vignette so the white front doesn't get greyed down, and the linux and unknown icon tiles are light for the same reason: a black penguin on a dark tile is a silhouette of nothing.

Everything is generated by the scripts in scripts/, so you can restyle it without trusting an opaque image:

python3 scripts/make_background.py theme/penguinvault/background.png 1920 1080
python3 scripts/make_icons.py      theme/penguinvault/icons 64
python3 scripts/validate_theme.py  theme/penguinvault

Icons

icons/<class>.png, where <class> is the menu class Ventoy assigns from the ISO filename (or from a menu_class rule that apply.sh writes into ventoy.json). 26 icons cover the mainstream distros plus the odd ones.

They're simplified geometric marks in each project's brand colour rather than copies of their logos: they stay readable at 32px, they share one visual language so the menu looks designed rather than assembled, and nothing here redistributes anyone's trademarked artwork. Adding one is a line in ICONS in make_icons.py and a rule in apply.sh.

Gaming images

The gaming builds are all the AMD/Intel variants — the plain images with open drivers, not the vendor-driver spins. Proprietary NVIDIA drivers can be layered on after install if you need them.

Image Notes
CachyOS cachyos-desktop-linux-*.iso Performance-tuned Arch; dated snapshots, SHA256 published
PikaOS PikaOS-Nest-KDE-*-amd64-*.iso Nest 4.0, KDE, the non-NVIDIA build
Bazzite bazzite-stable-amd64.iso Fedora Atomic; the plain AMD/Intel KDE image, not -nvidia

SteamOS doesn't work here, and can't be made to

Tested and removed. Worth writing down so nobody burns an evening on it:

Valve publishes no SteamOS ISO — the download is steamdeck-repair-latest.img.bz2, a raw GPT disk image with five partitions (EFI System, Microsoft basic data, Linux root, var, home). Ventoy boots it as a raw image and it fails.

No "img to iso converter" can fix that. An ISO is a single ISO9660 filesystem plus an El Torito boot catalog; that image is an entire partitioned disk whose bootloader references partitions by GUID. Converters either rename the file — a no-op — or repack its files into ISO9660, which discards the partition table and the boot chain and yields a non-bootable ISO. The information simply doesn't survive the conversion. Producing a bootable SteamOS ISO would mean rebuilding it as a live image, which is a distro build process Valve doesn't publish.

ChimeraOS is no help either — it ships .img.tar.xz, the same raw-disk format.

If you want the SteamOS experience on a Ventoy drive, the working option is bazzite-deck-stable-amd64.iso — a real bootable ISO that comes up in the gamescope / Steam Big Picture session, unlike the bazzite-stable desktop image in the table above. Otherwise, flash Valve's .img to its own stick with Rufus or Etcher.

Notes on specific images

  • OPNsense — grab the -dvd-amd64.iso, not the -vga-amd64.img. The vga/serial/nano variants are raw disk images for dd/Rufus onto a dedicated stick and won't boot from Ventoy; only the dvd build is a real ISO. Same trap as SteamOS above. Both ship bzip2-compressed, and OPNsense publishes SHA256 sums for every variant.

  • VeloGuardOSnot recommended as a daily driver. It's full of bugs, and its creator is on vacation, so don't expect fixes in the near term. Fine to boot and poke at; don't put anything you care about on it.

  • BlackArch full ISO is still 2023.04.01. That's not a stale copy — upstream simply hasn't cut a newer full image. Their own download page discourages the full ISO anyway and points at netinstall/slim.

  • Void Linux live images are published rarely; 20250202 is the newest upstream ships even though the repos roll continuously.

  • AnduinOS 2.x is distributed by torrent and via a website that blocks scripted fetches, so --update can't retrieve it. It's reported as outdated with a link, and you grab it by hand.

Requirements

Linux, bash, and: python3, rsync, wget, curl, tar, lsblk. Relabelling needs exfatlabel (exfatprogs) for the usual exFAT Ventoy partition, or fatlabel / ntfslabel if you reformatted it.

The scripts check for what they need up front and refuse to start if something's missing, rather than half-finishing.

Credits

  • Ventoy by longpanda — does all the actual multiboot work. PenguinVault is a theme and some shell scripts on top; it ships no Ventoy code and installs Ventoy straight from upstream releases.
  • Fonts are generated with grub2-mkfont from DejaVu Sans (public-domain-ish DejaVu license).

License

MIT — see LICENSE. Covers the scripts, theme, and generated artwork in this repository only. Ventoy, the distributions you put on the drive, and their logos and trademarks all remain under their own terms.

About

Themed Ventoy build: dark polar-night boot menu, per-distro icons, PenguinVault label, and ISO freshness auditing.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages