Overview
distroClone is a shell-based tool that generates a complete, bootable live ISO image directly from the running system. Unlike snapshot utilities that require a separate live environment, distroClone operates from within the installed system and produces an ISO ready for distribution, testing, or archival.
The resulting ISO includes the Calamares graphical installer, allowing the cloned system to be permanently installed on other machines with UEFI or Legacy BIOS firmware.
Supported distributions
Features
Automatic detection
Detects distribution, version, and desktop environment at runtime. No manual configuration required.
Multilanguage interface
Auto-detected from the system locale. Supports English, Italian, French, Spanish, German, and Portuguese. Override with --lang=.
Graphical interface
Uses YAD for an advanced graphical experience, with Zenity and terminal fallback for compatibility across environments.
Real-time build log
A dedicated window shows all 30 build steps in real time, providing full visibility into the ISO creation process.
Calamares installer
Integrates Calamares with dynamic branding per distribution. Detects the display manager and configures post-install cleanup automatically.
Dual boot support
Generates both GRUB (UEFI) and isolinux (Legacy BIOS) configurations. The ISO boots on any modern or older system.
Compression options
Choose between standard xz, fast lz4, or maximum xz+bcj squashfs compression depending on build time and size requirements.
Desktop cloning
Optionally copies current user configuration to /etc/skel, so the live system and installed system reflect your desktop setup.
Manual chroot pause
Optional pause before squashfs creation allows direct chroot modifications for advanced customization before the final image is built.
Desktop environment support
Handles GNOME, Pantheon, Cinnamon, MATE, KDE, XFCE. Applies specific workarounds per environment where needed.
Checksums
MD5 and SHA256 checksums are generated alongside the ISO automatically at the end of every successful build.
Automatic cleanup
Live packages and build tools are removed from the host system after the ISO is built. The host is left in its original state.
Requirements
/mnt partition must have sufficient free space to hold a full system clone.
Installation
Recommended method - from the .deb package
-
Download the package from the releases page on GitHub.
wget https://github.com/fconidi/distroClone/releases/latest/download/distroClone_1.3.3_all.deb
-
Install the package with dpkg.
sudo dpkg -i distroClone_1.3.3_all.deb
-
Resolve any missing dependencies automatically.
sudo apt install -f
Alternative method - standalone script
-
Make the script executable.
chmod +x DistroClone.sh
-
Run it as root. Required packages are installed automatically on first run.
sudo ./DistroClone.sh
What the package installs
| Path | Description |
|---|---|
| /usr/bin/distroClone | Launcher script with multilanguage splash screen |
| /usr/share/distroClone/ | Main build script and branding resources |
| /usr/share/applications/distroClone.desktop | Desktop menu entry (System category) |
| /usr/share/polkit-1/actions/ | PolicyKit policy for graphical authentication |
| /usr/share/icons/hicolor/ | Application icon at 48x48, 128x128, and 256x256 px |
Usage
From the desktop menu
Launch distroClone from the System category in your application menu. Authentication is requested via PolicyKit - no terminal needed.
From the terminal
sudo distroClone
Or run the main script directly:
sudo ./DistroClone.sh
Language selection
The interface language is detected from the system locale automatically. To override, pass the language code as a flag:
sudo distroClone --lang=fr
Or via environment variable:
DISTROCLONE_LANG=de sudo distroClone
Supported codes: en, it, fr, es, de, pt.
Build process
- Splash screen appears while the system initializes.
- Welcome dialog shows the detected distribution, version, desktop environment, and build options: compression type, root password, hostname.
- Optional dialog asks whether to clone the current desktop configuration to the live system.
- Build proceeds through 30 steps visible in the real-time log window: cloning via rsync, chroot configuration, package installation, Calamares setup, squashfs compression, GRUB and isolinux configuration, ISO creation with xorriso.
- Optional pause before squashfs allows manual chroot modifications.
- Final dialog reports success with the ISO path and size, or error details if the build failed.
Output
The ISO is created in /mnt/<distro>_live/ following this naming convention:
<Distro>-<Version>-<Desktop>.iso
Examples:
Ubuntu-24.04-Gnome.iso SysLinuxOS-12-Mate.iso Debian-12-XFCE.iso
MD5 and SHA256 checksum files are generated in the same directory.
Testing the ISO
Write to a USB drive:
sudo dd if=/mnt/<distro>_live/<name>.iso of=/dev/sdX bs=4M status=progress
Or mount in a virtual machine such as VirtualBox or QEMU:
qemu-system-x86_64 -m 2G -cdrom /mnt/<distro>_live/<name>.iso -boot d
Dependencies
Required
Installed automatically when using sudo apt install -f after dpkg.
| Package | Purpose |
|---|---|
| bash | Shell interpreter for the main script |
| rsync | System cloning with exclusion rules |
| xorriso | ISO image creation |
| mtools | FAT filesystem tools for EFI partition handling |
| syslinux-utils | Syslinux utilities for BIOS boot |
| syslinux-common | Common Syslinux files |
| isolinux | Legacy BIOS bootloader |
| imagemagick | Generation of placeholder branding graphics |
| grub-pc-bin | GRUB binaries for i386-pc target |
Recommended
Installed automatically during the build process if not already present.
| Package | Purpose |
|---|---|
| yad | Advanced graphical dialog interface |
| zenity | Fallback graphical dialog interface |
| calamares | Graphical system installer included in the ISO |
| calamares-settings-debian | Default Calamares configuration for Debian-based systems |
| live-boot | Scripts for booting a live system from the ISO |
| live-config | Live system configuration scripts |
| live-config-systemd | Systemd integration for live-config |
| grub-efi-amd64 | GRUB for UEFI systems |
| efibootmgr | EFI boot entry management |
| os-prober | Detection of other operating systems for GRUB |
| fdisk | Partition table manipulation during install |
How it works
-
System clone via rsync
The running system is copied to a staging directory, excluding virtual filesystems, temporary files, caches, snap directories, and user-specific data. -
Chroot environment setup
A chroot is configured inside the staging directory. live-boot, Calamares, and boot components are installed within the chroot. -
Calamares configuration
Branding, partition layout (ext4 with EFI), display manager detection, and a post-install systemd service are configured. The service removes live packages from the installed system after first boot. -
Squashfs creation
The chroot is compressed into a squashfs filesystem using the selected compression algorithm (xz, lz4, or xz+bcj). -
Boot configuration
GRUB (EFI) and isolinux (BIOS) configurations are written with translated menu entries matching the selected language. -
ISO assembly
xorriso builds the final ISO with dual boot support. MD5 and SHA256 checksums are generated. -
Host cleanup
Calamares, live-boot, and build dependencies are removed from the host system. The staging directory is deleted.
License
distroClone is distributed under the GNU General Public License version 3 or later (GPL-3.0-or-later).
You are free to use, study, modify, and distribute this software under the terms of the GPL-3.0.
See the copyright file included in the package for the full license text, or refer to
gnu.org/licenses/gpl-3.0.