Skip to main content

The Boom Boot Manager

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

boom_boot-1.6.8.tar.gz (202.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

boom_boot-1.6.8-py3-none-any.whl (119.2 kB view details)

Uploaded Python 3

File details

Details for the file boom_boot-1.6.8.tar.gz.

File metadata

  • Download URL: boom_boot-1.6.8.tar.gz
  • Upload date:
  • Size: 202.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for boom_boot-1.6.8.tar.gz
Algorithm Hash digest
SHA256 58dd77ed3086b4f7d35b7b8b8d4aa110c637712d994cb153d8840f2129ec556b
MD5 0c52365f592ab93256806c8db3e273a2
BLAKE2b-256 05fa4ddb87c9fa746a165a8ba7f15a260b8a11f2d304ef8c7499a2d972b4b649

See more details on using hashes here.

File details

Details for the file boom_boot-1.6.8-py3-none-any.whl.

File metadata

  • Download URL: boom_boot-1.6.8-py3-none-any.whl
  • Upload date:
  • Size: 119.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for boom_boot-1.6.8-py3-none-any.whl
Algorithm Hash digest
SHA256 f77f84f6d00af5923f016aa29cb9f041d66c815cf44c5e6ffe87db49793db0bd
MD5 eedbf0f0f12c14bf48af5a3d7536b234
BLAKE2b-256 0ef7e030505687914b9ce13af47f5133ed339d86a9c9b209a3d3130d91b92f9d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page