- Python 97.9%
- Shell 2.1%
| i18n.py | Dateien nach „/" hochladen | |
| install.sh | Dateien nach „/" hochladen | |
| iso_builder.py | Dateien nach „/" hochladen | |
| main.py | Dateien nach „/" hochladen | |
| README.md | README.md aktualisiert | |
Void Linux Live ISO Creator
A modern GTK4 application for building custom Void Linux Live ISO images with full internationalization support, dependency checking, and real-time build monitoring.
Features
- User Configuration — Create custom live users or use the default
anonaccount - Selective Data Copy — Choose specific folders (Documents, Pictures, Downloads,
.config,.local) or copy the entire/homedirectory - Custom Paths — Include additional host directories in the ISO
- System Overlay — Apply custom file overlays to the live system
- Service Configuration — Auto-detect or manually select the Display Manager (LightDM, GDM, SDDM, LXDM)
- System Cleanup — Remove logs, cache, SSH keys, and NetworkManager connections before packaging
- Real-time Progress — Live build status with progress bar and cancel support
- Full i18n — Interface and build messages available in German, English, Spanish, French
- Dependency Check — Validates required tools at startup
- Configuration Save/Load — Persist settings between sessions
- Build Logging — Complete log written to
/var/tmp/void-live-build/build.log - Error Handling — Detailed error dialogs with expandable tracebacks
Requirements
System
- Void Linux (x86_64 or i686)
- Root privileges required (uses
pkexecfor elevation) - GTK 4.0 runtime
Python Dependencies
xbps-install -S python3-gobject python3-cairo
Build Dependencies
The app checks for these at startup and warns if any are missing:
| Tool | Void Package | Purpose |
|---|---|---|
rsync |
rsync |
File synchronization |
mksquashfs |
squashfs-tools |
Filesystem compression |
dracut |
dracut |
Initramfs generation |
grub-mkrescue |
grub |
ISO creation |
uuidgen |
util-linux |
Machine ID generation |
Install all at once:
xbps-install -S rsync squashfs-tools dracut grub util-linux
Installation
From Source
git clone https://codeberg.org/pinguin-void/void-live-creator.git
cd void-live-creator
chmod +x install.sh
sudo ./install.sh
Run Directly
sudo python3 main.py
The app will automatically request root privileges via pkexec if not already running as root.
Usage
1. User Setup
- Default
anonuser — Quick setup with standard credentials (anon:voidlinux) - Custom user — Specify username and password (empty password falls back to
voidlinux) - Toggle password visibility with the eye checkbox
2. Data Selection
- Full
/homecopy — Includes all user data (excluding.cache) - Granular selection — Pick individual folders:
- Documents, Pictures, Downloads
.config(application settings).local(data and binaries)
- Additional paths — Add any host directory (e.g.,
/opt/my-app)
3. Services & Cleanup
- Display Manager — Auto-detect from host, or select manually
- System cleanup — Remove logs, caches, SSH host keys, and connection profiles
- NetworkManager and D-Bus are always enabled automatically
4. System Overlay
Apply a custom directory structure that gets merged into the live system root — useful for pre-installing configs, themes, or custom scripts.
5. ISO Configuration
- Boot menu name — Custom label shown in GRUB (e.g., "My Gaming System")
- Output path — Defaults to
/var/tmp/void-custom.iso
6. Build & Monitor
- Click "Create ISO" to start
- Monitor progress in real-time
- Click "Cancel" at any time to abort and clean up
- Build logs are saved to
/var/tmp/void-live-build/build.log
Configuration Persistence
Settings are automatically saved to ~/.config/void-iso-creator/config.json and restored on next launch:
{
"language": "de",
"iso_config": {
"user_mode": "new",
"new_user": "armin",
"full_home": false,
"home_parts": {
"Documents": true,
"Pictures": true,
"Downloads": false,
".config": true,
".local": true
},
"custom_paths": ["/opt/my-app"],
"overlay_path": "/home/armin/overlay",
"cleanup": true,
"display_manager": "auto",
"iso_name": "Void Custom Live",
"output": "/var/tmp/void-custom.iso"
}
}
File Structure
void-live-creator/
├── main.py # GTK4 application window & UI logic
├── iso_builder.py # ISO build engine with subprocess management
├── i18n.py # Translation system & configuration persistence
└── README.md # This file
Architecture
Build Process
- Prepare workspace — Create
/var/tmp/void-live-buildstructure - Copy base system —
rsyncroot filesystem (excluding/home,/proc,/sys, etc.) - Copy user data — Selected home directories or full
/home - Apply overlays — Custom paths and overlay directory
- Configure services — Enable runit services (NetworkManager, D-Bus, Display Manager)
- System cleanup — Remove sensitive/temporary data
- Configure users — Create accounts and set passwords via
chroot - Build initramfs — Generate Dracut image with
dmsquash-livemodule - Configure bootloader — Write GRUB config with ISO label
- Create SquashFS — Compress root filesystem with XZ
- Build ISO — Generate bootable image with
grub-mkrescue
Cancel Safety
All subprocesses are tracked in a list. On cancel:
SIGTERMsent to all running processes- Wait 5 seconds, then
SIGKILLif still running - Working directory removed via
shutil.rmtree() - "Build cancelled" written to log
Troubleshooting
"Missing Dependencies" Dialog
Install the listed packages:
xbps-install -S <package-names>
"Not enough free disk space"
Ensure at least 15 GB free space on the target partition. The build requires space for:
- Base system copy (~4-8 GB)
- User data
- Initramfs and kernel
- SquashFS image (compressed)
- Final ISO file
Build fails with GRUB error
Ensure grub-i386-efi and grub-x86_64-efi are installed alongside grub:
xbps-install -S grub-i386-efi grub-x86_64-efi xorriso
Check build logs
cat /var/tmp/void-live-build/build.log
Localization
The app automatically detects the system language from LC_ALL, LC_MESSAGES, LANG, or LANGUAGE environment variables. Supported languages:
| Language | Code | Status |
|---|---|---|
| German | de |
✅ Complete |
| English | en |
✅ Complete |
| Spanish | es |
✅ Complete |
| French | fr |
✅ Complete |
Language preference is saved to ~/.config/void-iso-creator/config.json.
Contributing
Contributions welcome! Priority areas:
- Additional language translations
- Void Linux musl support
- ARM architecture support
- Custom kernel selection
- Package list customization
License
MIT License — See LICENSE for details.
Built for Void Linux, by Void Linux enthusiasts.