The Boom Boot Manager
Project description
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
- 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/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
- 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!
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
- User Guide - Comprehensive usage documentation
- API Reference - Python API documentation
- Boot Loader Specification - BLS standard 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
- Issues: GitHub Issue Tracker
- Mailing List: dm-devel
- Documentation: ReadTheDocs
License
Licensed under the Apache License, Version 2.0. See LICENSE for details.
Related Projects
- 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.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
58dd77ed3086b4f7d35b7b8b8d4aa110c637712d994cb153d8840f2129ec556b
|
|
| MD5 |
0c52365f592ab93256806c8db3e273a2
|
|
| BLAKE2b-256 |
05fa4ddb87c9fa746a165a8ba7f15a260b8a11f2d304ef8c7499a2d972b4b649
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f77f84f6d00af5923f016aa29cb9f041d66c815cf44c5e6ffe87db49793db0bd
|
|
| MD5 |
eedbf0f0f12c14bf48af5a3d7536b234
|
|
| BLAKE2b-256 |
0ef7e030505687914b9ce13af47f5133ed339d86a9c9b209a3d3130d91b92f9d
|