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/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) |
./scripts/apply.sh /run/media/$USER/VentoyInstalls 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 --labelOn the label: exFAT and FAT cap volume labels at 11 characters, and
PenguinVaultis 12 — so on a stock Ventoy drive (exFAT) the volume can only be labelledPenguinVlt. NTFS allows 32 characters and gets the fullPenguinVault;apply.sh --labelpicks 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
ntfs3driver, 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.shdoes 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.
sudo ./scripts/install.sh /dev/sdX # add --gpt and/or --secure-bootFetches 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.
./scripts/update-isos.sh /run/media/$USER/PenguinVault # audit only
./scripts/update-isos.sh /run/media/$USER/PenguinVault --update # download stale onesThe 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.
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/penguinvaulticons/<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.
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 |
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.
-
OPNsense — grab the
-dvd-amd64.iso, not the-vga-amd64.img. Thevga/serial/nanovariants are raw disk images fordd/Rufus onto a dedicated stick and won't boot from Ventoy; only thedvdbuild is a real ISO. Same trap as SteamOS above. Both ship bzip2-compressed, and OPNsense publishes SHA256 sums for every variant. -
VeloGuardOS — not 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;
20250202is 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
--updatecan't retrieve it. It's reported as outdated with a link, and you grab it by hand.
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.
- 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-mkfontfrom DejaVu Sans (public-domain-ish DejaVu 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.
