Skip to main content

Build Status Ask DeepWiki License

Boom Boot Manager

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.

Features

  • 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.

Quick Start

Installation

Red Hat Enterprise Linux 8+/Fedora:

dnf install boom-boot

Red Hat Enterprise Linux 7:

yum install lvm2-python-boom

Manual Installation

Clone 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 .

Creating Your First Snapshot Boot Entry

  1. 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"
  1. 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/root

LVM2 Thin:

lvcreate --snapshot --name root-snapshot /dev/vg/thinroot

Stratis:

stratis fs snapshot pool/rootfs root-snapshot

BTRFS:

btrfs subvolume snapshot -r /root /root-snapshot
  1. 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 --backup to cache boot images for this entry (kernel and initramfs).
  1. 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
  1. Reboot and select your snapshot from the boot menu!

Managing Boot Entries

  • 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"

Working with Profiles

  • 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

Requirements

  • 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

Documentation

Project Structure

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

Configuration

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/

Contributing

We welcome contributions! Please see our Contributing Guide for details.

Submitting Changes

  • 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

Support

License

Licensed under the Apache License, Version 2.0. See LICENSE for details.

Related Projects


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.

Metadata

Release files for boom-boot 1.6.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for boom-boot 1.6.8
File Size Uploaded Provenance Actions
boom_boot-1.6.8.tar.gz 202.9 kB Without provenance Details for boom_boot-1.6.8.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for boom-boot 1.6.8
File Interpreter ABI Platform Actions
boom_boot-1.6.8-py3-none-any.whl Python 3 none any Details for boom_boot-1.6.8-py3-none-any.whl

Total release size: 322.1 kB

Release files / boom_boot-1.6.8.tar.gz

Download URL boom_boot-1.6.8.tar.gz
Size 202.9 kB
Tags Source
SHA-256 checksum
How to use checksums
58dd77ed3086b4f7d35b7b8b8d4aa110c637712d994cb153d8840f2129ec556b
BLAKE2b-256 checksum
How to use checksums
05fa4ddb87c9fa746a165a8ba7f15a260b8a11f2d304ef8c7499a2d972b4b649
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / boom_boot-1.6.8-py3-none-any.whl

Download URL boom_boot-1.6.8-py3-none-any.whl
Size 119.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f77f84f6d00af5923f016aa29cb9f041d66c815cf44c5e6ffe87db49793db0bd
BLAKE2b-256 checksum
How to use checksums
0ef7e030505687914b9ce13af47f5133ed339d86a9c9b209a3d3130d91b92f9d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Security for boom-boot 1.6.8

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page