Boom is a Linux boot manager that simplifies creating and managing bootable snapshots using the Boot Loader Specification (BLS). It enables flexible boot configuration without modifying your existing bootloader setup.
Boom integrates with Snapshot Manager to provide higher level snapshot management, including automated multi-volume snapshot sets, coordinated revert using failsafe boot entries, snapshot scheduling with flexible retention policies and more.
- Minimal Configuration: Create boot entries with just a title and a device. Boom auto-detects the rest.
- Snapshot Boot Entries: Easily boot from LVM2, Stratis, or BTRFS snapshots.
- Profile-Based Configuration: Automatic OS detection and template-based entry generation.
- BLS Compliance: Works with systemd-boot and BLS-enabled GRUB 2.
- Non-Intrusive: Preserves existing boot configuration and distribution integration.
- Host Customization: Per-system boot parameter customization.
- Boot Image Cache: Optional backup of kernel and initramfs images.
Red Hat Enterprise Linux 8+/Fedora:
dnf install boom-bootRed Hat Enterprise Linux 7:
yum install lvm2-python-boomClone the boom-boot repository and install using pip:
git clone https://github.com/snapshotmanager/boom-boot.git
cd boom-boot
python3 -m venv .venv && source .venv/bin/activate
python3 -m pip install .- Create an OS Profile:
boom profile create --from-host
Example output (Fedora 42):
boom profile create --from-host
Created profile with os_id 6d5913a:
OS ID: "6d5913af35d4b022ba6b203c4160879b492e6fed",
Name: "Fedora Linux", Short name: "fedora",
Version: "42 (Server Edition)", Version ID: "42",
Kernel pattern: "/vmlinuz-%{version}", Initramfs pattern: "/initramfs-%{version}.img",
Root options (LVM2): "rd.lvm.lv=%{lvm_root_lv}",
Root options (BTRFS): "rootflags=%{btrfs_subvolume}",
Options: "root=%{root_device} ro %{root_opts} rhgb quiet",
Title: "%{os_name} %{os_version_id} (%{version})",
Optional keys: "grub_users grub_arg grub_class id", UTS release pattern: "fc42"- Create a snapshot:
Create a snapshot using the appropriate command for the installed system's storage configuration. Adjust LV/subvolume names and sizes to match your setup:
LVM2 Copy-on-Write:
lvcreate --snapshot --size 5G --name root-snapshot /dev/vg/rootLVM2 Thin:
lvcreate --snapshot --name root-snapshot /dev/vg/thinrootStratis:
stratis fs snapshot pool/rootfs root-snapshotBTRFS:
btrfs subvolume snapshot -r /root /root-snapshot- Create a boot entry for the snapshot:
boom create --title "System Snapshot $(date +%Y-%m-%d)" --root-lv vg/root-snapshot
The new boot entry is displayed on the terminal:
# boom create --title "System Snapshot $(date +%Y-%m-%d)" --root-lv vg/root-snapshot
Created entry with boot_id 6f5d483:
title System Snapshot 2025-09-09
machine-id 5d1e621b0c1349aea3bd47e4bb619024
version 6.15.9-201.fc42.x86_64
linux /vmlinuz-6.15.9-201.fc42.x86_64
initrd /initramfs-6.15.9-201.fc42.x86_64.img
options root=/dev/vg/root-snapshot ro rd.lvm.lv=vg/root-snapshot rhgb quiet
grub_users $grub_users
grub_arg --unrestricted
grub_class kernel
- Tip: add
--backupto cache boot images for this entry (kernel and initramfs).
- List your boot entries:
boom list
For example:
# boom list
BootID Version Name RootDevice
605b3bb 6.15.9-201.fc42.x86_64 Fedora Linux /dev/mapper/vg-root
66dc7ad 6.15.9-201.fc42.x86_64 Fedora Linux /dev/vg/root-snapshot
- Reboot and select your snapshot from the boot menu!
- Create a basic boot entry
boom create --title "System Backup" --root-lv vg/root- Create a debug boot entry
boom create --title "Debug Boot" --root-lv vg/root --add-opts debug --del-opts "rhgb quiet"- List all boot entries
boom list- Show detailed entry information
boom show <boot_id>- Clone an existing entry with modifications
boom clone --title "Modified Entry" --add-opts debug <boot_id>- Delete an entry
boom delete <boot_id>- Edit an existing entry
boom edit <boot_id> --title "New Title"- List OS profiles
boom profile list- Create a custom profile
boom profile create --name "Custom OS" --short-name custom \
--os-version "1.0" --os-version-id 1 \
--kernel-pattern "/vmlinuz-%{version}" \
--initramfs-pattern "/initramfs-%{version}.img" \
--uname-pattern custom1- List host profiles (per-system customizations)
boom host list- Linux system with BLS-compatible bootloader:
- GRUB 2 with BLS support (Red Hat/Fedora builds), or
- systemd-boot
- Python 3.9+
- LVM2, Stratis, or BTRFS for snapshot functionality
- User Guide - Comprehensive usage documentation
- API Reference - Python API documentation
- Boot Loader Specification - BLS standard documentation
boom-boot/
├── boom/ # Python package
│ ├── bootloader.py # Boot loader integration
│ ├── osprofile.py # OS profile management
│ ├── hostprofile.py # Host-specific profiles
│ ├── cache.py # Boot image cache
│ ├── command.py # Command-line interface
│ ├── config.py # Configuration management
│ ├── mounts.py # Mount handling (Boot Environments)
│ └── stratis.py # Stratis storage support
├── bin/boom # Command line tool
├── doc/ # Sphinx documentation
├── examples/ # Example configurations and profiles
├── man/ # Manual pages
└── tests/ # Test suite
Boom stores its configuration in:
- Boot entries:
/boot/loader/entries/ - Configuration:
/boot/boom/boom.conf - OS profiles:
/boot/boom/profiles/ - Host profiles:
/boot/boom/hosts/ - Boot image cache:
/boot/boom/cache/
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository on GitHub
- Create a feature branch from
main - Make your changes with appropriate tests
- Ensure your branch applies cleanly as a fast-forward merge
- Submit a pull request
- Issues: GitHub Issue Tracker
- Mailing List: dm-devel
- Documentation: ReadTheDocs
Licensed under the Apache License, Version 2.0. See LICENSE for details.
- Snapshot Manager - Automated system snapshot management
- Boot-to-snapshot Design - Design documentation
Note: Boom requires BLS support in your bootloader. This is enabled by default in Fedora 30+ and RHEL 8+. For older distributions, you may need to enable BLS support manually.