BOOM(8)
π NAME π
Boom β linux boot manager β¨ (yes bestie, it's a whole boot manager)
π SYNOPSIS π
okay so boom is a real one and it takes so many shapes, so buckle up. Here's the whole shape of it:
β¨ Command types β¨
boom [entry|profile|host] [create|delete|clone|show|list|edit]
boom legacy [write|clear|show]
boom cache [list|show]
π¦ Subcommands π¦
boom entry create [--profile os_id] [--version version] [--root-device device] [--root-lv lv] [--linux kernel_path] [--initrd initrd_path] [--btrfs-subvol subvol] [--add-opts opts] [--del-opts opts] [--backup] [--update] [--no-fstab] [--mount mount] [--swap swap]
boom entry delete [--boot-id boot_id] [--profile os_id] [--version version] [boot_id]
boom entry clone [--boot-id boot_id] [--profile os_id] [--version version] [--root-device device] [--root-lv lv] [--linux kernel_path] [--initrd initrd_path] [--btrfs-subvol subvol] [--add-opts opts] [--del-opts opts] [--backup] [--update] [--no-fstab] [--mount mount] [--swap swap] [boot_id]
boom entry list [--boot-id boot_id] [--profile os_id] [--version version] [--name osname] [--short-name osshortname] [--os-version version] [--root-device device] [--root-lv lv] [--linux kernel_path] [--initrd initrd_path] [--btrfs-subvol subvol] [--nameprefixes] [--noheadings] [--options fields] [--sort fields] [--rows|--json] [--separator separator] [boot_id]
boom entry show [--boot-id boot_id] [--profile os_id] [--version version] [--name osname] [--short-name osshortname] [--os-version version] [--root-device device] [--root-lv lv] [--btrfs-subvol subvol] [boot_id]
boom profile create [--name osname] [--short-name short_name] [--os-version version] [--os-version-id version_id] [--from-host] [--os-release os_release] [--uname-pattern uname_pattern] [--lvm-opts lvm_opts] [--btrfs-opts btrfs_opts] [--os-options os_options]
boom profile delete [--profile os_id] [--name osname] [--short-name short_name] [--os-version version] [--os-version-id version_id] [--from-host] [--os-release os_release] [--uname-pattern uname_pattern] [--lvm-opts lvm_opts] [--btrfs-opts btrfs_opts] [--os-options os_options] [profile_id]
boom profile clone [--profile os_id] [--name osname] [--short-name short_name] [--os-version version] [--os-version-id version_id] [--from-host] [--os-release os_release] [--uname-pattern uname_pattern] [--lvm-opts lvm_opts] [--btrfs-opts btrfs_opts] [--os-options os_options] [profile_id]
boom profile list [--profile os_id] [--version version] [--name osname] [--short-name osshortname] [--os-version version] [--nameprefixes] [--noheadings] [--options fields] [--sort fields] [--rows|--json] [--separator separator] [profile_id]
boom profile show [--profile os_id] [--version version] [--name osname] [--short-name osshortname] [--os-version version] [profile_id]
boom host create [--name name] [--short-name short_name] [--profile os_id] [--machine-id machine_id] [--kernel-pattern kernel_pattern] [--initramfs-pattern initramfs_pattern] [--lvm-opts lvm_opts] [--btrfs-opts btrfs_opts] [--os-options os_options]
boom host delete [--host-profile host_id] [host_id]
boom host clone [--host-profile host_id] [--name name] [--short-name short_name] [--profile os_id] [--machine-id machine_id] [--kernel-pattern kernel_pattern] [--initramfs-pattern initramfs_pattern] [--lvm-opts lvm_opts] [--btrfs-opts btrfs_opts] [--os-options os_options] [host_id]
boom host edit [--host-profile host_id] [--name name] [--short-name short_name] [--profile os_id] [--machine-id machine_id] [--kernel-pattern kernel_pattern] [--initramfs-pattern initramfs_pattern] [--lvm-opts lvm_opts] [--btrfs-opts btrfs_opts] [--os-options os_options] [host_id]
boom host list [--host-profile host_id] [--name name] [--short-name short_name] [--profile os_id] [--machine-id machine_id] [--kernel-pattern kernel_pattern] [--initramfs-pattern initramfs_pattern] [--lvm-opts lvm_opts] [--btrfs-opts btrfs_opts] [--os-options os_options] [--nameprefixes] [--noheadings] [--options fields] [--sort fields] [--rows|--json] [--separator separator] [host_id]
boom host show [--profile os_id] [--version version] [--name osname] [--short-name osshortname] [--os-version version] [profile_id]
boom legacy write [--boot-id boot_id] [--profile os_id] [--version version] [--name osname] [--short-name osshortname] [--os-version version] [--root-device device] [--root-lv lv] [--linux kernel_path] [--initrd initrd_path] [--btrfs-subvol subvol] [boot_id]
boom legacy clear
boom legacy show [--boot-id boot_id] [--profile os_id] [--version version] [--name osname] [--short-name osshortname] [--os-version version] [--root-device device] [--root-lv lv] [--linux kernel_path] [--initrd initrd_path] [--btrfs-subvol subvol] [boot_id]
boom cache list [--image img_id] [--linux kernel_path] [--initrd initrd_path] [--nameprefixes] [--noheadings] [--options fields] [--sort fields] [--rows|--json] [--separator separator] [img_id]
boom cache show [--image img_id] [--linux kernel_path] [--initrd initrd_path] [img_id]
boom config create [--boot-dir boot_dir]
π DESCRIPTION π
So. Boom is a boot manager for Linux systems that use boot loaders supporting the Boot Loader Specification (BLS) for boot entry configuration. That's the whole vibe. π«Ά
It works best with a BLS-compatible boot loader β either the systemd-boot project, or Grub2 with the bls patch. And good news bestie: the grub2 boot loader that ships in CentOS, Fedora and Red Hat Enterprise Linux already includes this support. slay. π
Also, every long option boom supports can be written with or without dashes separating the words. So for example, --boot-id and --bootid are synonymous. Pick your fighter, it does not care. π
π DEPRECATION NOTICE π
β οΈ The legacy bootloader commands (boom legacy write | clear | show) andboom legacybootloader integration are deprecated as of boom-1.6.7 and will be removed in a future release. Not me warning you in advance β this one is real, so plan accordingly. π
β¨ OPTIONS β¨
okay here comes the big list, stay with me, they're all useful I promise πΈ
-a,--add-opts_opts_ β specify additional boot options for this entry. extra seasoning for your kernel cmdline.-d,--del-opts_opts_ β specify boot options to exclude from this entry. yeet them out.--backupβ back up boot images used for this entry.-b,--boot-id,--bootid_boot_id_ β specify a boot identifier to operate on.--boot-dir,--bootdir_path_ β specify the location of the/bootfile system. super useful for testing, or for getting at boom data from a system image. You can also set this via theBOOM_BOOT_PATHenvironment variable. π§-B,--btrfs-subvolume,--btrfssubvolume_subvol_path_ | _subvol_id_ β specify a BTRFS subvolume by its path or identifier.--btrfs-opts,--btrfsopts_btrfs_options_template_ β an OS profile template string for BTRFS boot options.--debug_debug_flags_ β a comma-separated list of subsystem names to enable debugging output for, or'all'to enable all debugging. The available debug classes are:profile,entry,command,report. π₯-e,--efi_efi_image_ β specify an EFI application image for a boot entry.-E,--expand-variablesβ expand bootloader variables in command output.-H,--from-host,--fromhostβ when creating a new OS profile, use os-release data from the running host.-P,--host-profile_profile_ β use the specified host profile for search or create operations.-i,--initrd_image_path_ β a Linux initial ramfs image path.-k,--kernel-pattern,--kernelpattern_pattern_ β an OS profile template used to generate kernel image paths.-l,--linux_image_path_ β a Linux kernel image path.-L,--root-lv,--rootlv_root_lv_ β the logical volume containing the root file system for a boot entry. And listen: if--root-lvis given but--root-deviceis not, then the root device is assumed to be the specified logical volume. noted. π--lvm-opts_lvm_opts_ β an OS profile template used to generate LVM2 boot options.-m,--machine-id,--machineid_machine_id_ β (the manpage gives zero description here and honestly? mysterious main character energy. it's just sitting there. π)-M,--mount_what:where:fstype:options_ β specify a command-line file system mount for the boot entry.-n,--name_os_name_ β the name of a boom operating system profile.--name-prefixes,--nameprefixesβ add a prefix to report field output names.--no-fstabβ disable processing of/etc/fstabfor the boot entry.--no-headings,--noheadingsβ suppress output of report headings.-o,--options_field_list_ β specify which fields to display.--os-version_os_version_ β the version string of a boom operating system profile.-O,--sort_key_list_ β a comma-separated list of sort keys (field names), with an optional per-field prefix of+or-to force ascending or descending sort order respectively for that field.-I,--os-version-id,--osversionid_os_version_id_ β a boom operating system profile version identifier.--os-options,--osoptions_options_template_ β an operating system profile template string used to generate the kernel command line options string.--os-release,--osrelease_os_release_path_ β a path to a file inos-release(5)from which to create a new operating system profile.-p,--profile_os_id_ β the operating system identifier (os_id) of a boom operating system profile to use for the current operation. Defaults to the OS profile of the running system if absent.-r,--root-device,--rootdevice_root_dev_ β the system root device for a new boot entry.-R,--initramfs-pattern,--initramfspattern_initramfs_pattern_ β an OS profile template used to generate initial ramfs image paths.--rowsβ output report columns as rows.--jsonβ output reports in JSON notation.--separator_separator_ β report field separator.-s,--short-name,--shortname_short_name_ β the short name of a boom operating system profile.--swap_what:options_ β specify a command-line swap configuration for the boot entry.-t,--title_entry_title_ β the title for a new boot entry.-u,--uname-pattern,--unamepattern_uname_pattern_ β an uname pattern to match for an operating system profile.--updateβ when used with--backup, update the backup image to the current version found in the boot directory.-V,--verboseβ increase verbosity level. Specify it multiple times, or set additional debug classes with--debugto enable more verbose messages.-v,--version_version_ β the kernel version of a boom boot entry.
ok that's the whole command map and every single flag, and we're literally only getting started π
β¨ OS Profiles and Boot Entries β¨
okay so boom is literally the bestie who manages boot loader entries for one or more installed operating systems π. Every OS gets an OS Profile β think of it as their little ID card plus a set of templates that boom uses to create boot loader entries. iconic.
An OS profile is identified by its os_id β it's an alphanumeric string made from an SHA digest of the profile's identity fields. And when boom shows you these IDs in command output, it auto-abbreviates them to the shortest length that still keeps them unique. You can use that short form anywhere boom expects an OS identifier. no cap.
A Boot Entry is one bootable instance of an installed OS: a kernel, optional initial ramfs image, command line options, and whatever other images or settings are needed for boot. periodt.
Every boot entry also gets its own SHA-based unique identifier called the boot_id. You use that ID to pick an entry for display, modification, deletion, or any other operation. slay.
And because the boot_id is based on the boot parameters used to create the entry, it will change if you modify an existing entry β like with the boom entry edit command. so keep that in mind π
.
πΈ Host Profiles πΈ
Host profiles are like the extra seasoning β¨ β they let you control boot entry templates on a per-host basis. A host profile is bound to a specific machine_id and gets used whenever new boot entries are created for that host.
A host profile can add or delete boot options from whatever the active OS Profile supplies, or it can override specific OS Profile keys completely. Any keys you don't set in the host profile just map straight to the original OS profile. easy.
π COMMANDS π
Commands are made of a type β entry, profile, host, legacy, cache, config β followed by a type-specific subcommand. iykyk.
π Boot Entry Commands π
β¨ boom entry create β¨
boom entry create [--profile os_id] [--version version] [--root-device device] [--root-lv lv] [--linux kernel_path] [--initrd initrd_path] [--btrfs-subvol subvol] [--add-opts opts] [--del-opts opts] [--backup] [--update] [--no-fstab] [--mount mount] [--swap swap]
Create a new boot entry using the values you give it. π
Heads up: the title of the new entry must be set with the --title option. no title, no entry, bestie.
The kernel version comes from --version. If you don't pass --version, boom assumes you mean the currently running kernel's version. easy.
If you give --profile, that's the OS identifier of an existing OS profile to use for the new entry. If you don't, and there's a profile that matches the version you supplied (or the detected one), boom will auto-use that profile. slay.
The new entry's machine-id gets automatically set to the current machine-id β read from /etc/machine-id β unless you override it with the --machine-id switch. π
You can explicitly set a root device with --root-device, or if you're using an LVM2 logical volume, use --root-lv. In that case, the root device is assumed to be the normal device path of that logical volume. periodt.
For BTRFS, you can set a subvolume by either its path or its identifier using --btrfs-subvol. πΈ
Extra boot options that aren't in the OsProfile templates can be added with --add-opts. You can also remove options from the entry with --del-opts β like if you want to disable graphical boot or the "quiet" flag for one specific entry. π
If you pass --backup, boom makes a backup of the boot images (vmlinuz and initramfs) used by the boot entry, and the new entry will point to the backup paths instead of the original image paths. By default, if a backup image already exists, boom reuses it instead of grabbing the latest matching image from the boot directory. You can override that with --update. π
On success, the newly created entry and its boot identifier get printed to your terminal: β¨
# boom create --title 'System Snapshot' --root-lv vg00/lvol0
Created entry with boot_id 14d6b6e:
title System Snapshot
machine-id 611f38fd887d41dea7eb3403b2730a76
version 4.13.5-200.fc26.x86_64
linux /vmlinuz-4.13.5-200.fc26.x86_64
initrd /initramfs-4.13.5-200.fc26.x86_64.img
options BOOT_IMAGE=/vmlinuz-4.13.5-200.fc26.x86_64 root=/dev/vg00/lvol0 ro rd.lvm.lv=vg00/lvol0 rhgb quiet
ποΈ boom entry delete ποΈ
boom entry delete [--boot-id boot_id] [--profile os_id] [--version version] [boot_id]
Delete the boot entry you specify. You can pick it by its boot identifier β in which case at most one entry gets removed β or by selection criteria that might match and remove multiple entries in one go. π
For example, if you pass --version, every entry matching that kernel version can be removed all at once. bye besties.
On success, boom prints how many entries were removed. If you pass --verbose, you also get a whole report of the entries that got removed. π
π― boom entry clone π―
boom entry clone [--boot-id boot_id] [--profile os_id] [--version version] [--root-device device] [--root-lv lv] [--linux kernel_path] [--initrd initrd_path] [--btrfs-subvol subvol] [--add-opts opts] [--del-opts opts] [--backup] [--update] [--no-fstab] [--mount mount] [--swap swap] [boot_id]
Clone an existing boot entry and tweak its config. twin energy β¨
You have to specify the entry to clone by its boot identifier. Any leftover command line arguments are treated as modifications to the original entry. slay.
If you pass --backup, boom backs up the boot images (vmlinuz and initramfs) used by the boot entry, and the new entry will use those backup paths instead of the original ones. By default, if a backup image already exists, it gets reused rather than using the latest matching image in the boot directory. Override that with --update. π
On success, the new entry and its boot identifier get printed to your terminal. π
π boom entry list π
boom entry list [--boot-id boot_id] [--profile os_id] [--version version] [--name osname] [--short-name osshortname] [--os-version version] [--root-device device] [--root-lv lv] [--linux kernel_path] [--initrd initrd_path] [--btrfs-subvol subvol] [--nameprefixes] [--noheadings] [--options fields] [--sort fields] [--rows|--json] [--separator separator] [boot_id]
Output a cute little tabular report of boot entries. π
It shows one boot entry per line, with fields describing the properties of your configured boot entries. π
You pick the fields to display with --options, as a comma-separated list of field names. To see all available fields, run boom list -o help. If your list starts with +, those fields get appended to the default field list. Otherwise, your list replaces the default set of report fields. periodt.
You can sort the report by multiple keys with --sort. It takes a comma-separated list of keys, and you can prefix each with + or - to sort ascending or descending for that field. iconic.
π boom entry show π
boom entry show [--boot-id boot_id] [--profile os_id] [--version version] [--name osname] [--short-name osshortname] [--os-version version] [--root-device device] [--root-lv lv] [--btrfs-subvol subvol] [boot_id]
Display boot entries that match your selection criteria on standard out. π
Entries that match the criteria you give on the command line get printed to the terminal in boot loader entry format. slay.
If you pass --expand-variables, any bootloader environment variables in the output get replaced with their current values β like the $kernelopts variable that some distros use to store the kernel command line. π
πΈ OS Profile Commands πΈ
β¨ boom profile create β¨
boom profile create [--name osname] [--short-name short_name] [--os-version version] [--os-version-id version_id] [--from-host] [--os-release os_release] [--uname-pattern uname_pattern] [--lvm-opts lvm_opts] [--btrfs-opts btrfs_opts] [--os-options os_options]
Create a new OS profile with the values you give it. π
You can make a new OS profile either by passing required values on the boom command line, or by reading data from the host's os-release file (at /etc/os-release), or from another file in os-release format that you specify on the command line. easy.
The info read from os-release (or the equivalent command line options) forms the profile's identity and is the basis for the profile OS identifier. no cap.
Besides the os-release data, a new OS profile also needs a uname version string pattern to match, plus template values used to construct boot entries. π
The uname pattern must be given on the profile create command line. It's a regular expression that matches the UTS release (uname -r) values that distribution reports. The pattern is only used to try to match unknown boot entries to a valid OS profile β like entries you manually edited, or ones another tool created. π
Boom ships with default templates that work for most Linux distros. You can also set these values on the command line when you create the profile, or modify them later using the boom program. slay.
To create a profile for the currently running host, use the --from-host switch. π
To create a profile from a saved os-release file, use the --os-release option and give it the path to the file you want to use. β¨
ποΈ boom profile delete ποΈ
boom profile delete [--profile os_id] [--name osname] [--short-name short_name] [--os-version version] [--os-version-id version_id] [--from-host] [--os-release os_release] [--uname-pattern uname_pattern] [--lvm-opts lvm_opts] [--btrfs-opts btrfs_opts] [--os-options os_options] [profile_id]
Delete the OS profile or profiles you specify. bye π
This deletes all OS profiles that match the selection criteria you give. If you use the --profile option to specify an OS identifier, then at most one profile gets removed. periodt.
On success, boom prints how many profiles were removed. If you pass --verbose, you also get a report of the profiles that got removed. π
boom profile clone
boom profile clone [--profile os_id] [--name osname] [--short-name short_name] [--os-version version] [--os-version-id version_id] [--from-host] [--os-release os_release] [--uname-pattern uname_pattern] [--lvm-opts lvm_opts] [--btrfs-opts btrfs_opts] [--os-options os_options] [profile_id]
bestie this is the dupe button for OS profiles β¨ it clones an existing OS profile and then lets you tweak its config however you want.
the thing you're cloning has to be pointed at by its OS identifier β no ifs, no buts. and literally any leftover command line arguments after that? those get treated as modifications to the original entry. cute, right?
if it works, the new entry and its OS identifier get printed to the terminal. slay π
boom profile list
boom profile list [--profile os_id] [--version version] [--name osname] [--short-name osshortname] [--os-version version] [--nameprefixes] [--noheadings] [--options fields] [--sort fields] [--rows|--json] [--separator separator] [profile_id]
this spits out a tabular report of your OS profiles, one profile per line, with fields describing the properties of the configured OS profiles. very demure, very organized π
- you pick which fields show up with
--options, as a comma separated list of field names. want the menu of available fields? runboom list -o help. and here's the tea: if your list starts with the+character, the fields you named get appended to the default field list. otherwise your list replaces the whole default set of report fields. - want it sorted?
--sorttakes a comma separated list of keys, and you can slap optional+and-prefixes on them for ascending and descending sort on that field respectively. multitasking king behavior π
boom profile show
boom profile show [--profile os_id] [--version version] [--name osname] [--short-name osshortname] [--os-version version] [profile_id]
displays the OS profiles matching your selection criteria on standard out πΈ the matches get printed to the terminal in a compact multi-line format. short, sweet, informative. periodt.
π Host Profile Commands π
boom host create
boom host create [--name name] [--short-name short_name] [--profile os_id] [--machine-id machine_id] [--kernel-pattern kernel_pattern] [--initramfs-pattern initramfs_pattern] [--lvm-opts lvm_opts] [--btrfs-opts btrfs_opts] [--os-options os_options]
creates a brand new host profile for the machine_id you give it, using the profile option arguments you pass. and here's the fun part β any OS Profile keys you give values to will override the values in the underlying profile. main character energy fr fr β¨
boom host delete
boom host delete [--host-profile host_id] [host_id]
deletes the host profile (or profiles) you point at. it nukes all host profiles matching the selection criteria you provided. but if you use --host-profile to name an host identifier, then at most one profile gets removed β one and done π
on success, the number of profiles removed gets printed to the terminal. and if you toss in the --verbose option, you also get a report of the profiles removed. nosy and proud of it π«Ά
boom host clone
boom host clone [--host-profile host_id] [--name name] [--short-name short_name] [--profile os_id] [--machine-id machine_id] [--kernel-pattern kernel_pattern] [--initramfs-pattern initramfs_pattern] [--lvm-opts lvm_opts] [--btrfs-opts btrfs_opts] [--os-options os_options] [host_id]
clones an existing host profile and lets you remix its configuration π¦ the entry to clone has to be specified by its host identifier. any remaining command line arguments are taken to be modifications to the original entry.
on success the new entry and its host identifier get printed to the terminal. iconic.
boom host edit
boom host edit [--host-profile host_id] [--name name] [--short-name short_name] [--profile os_id] [--machine-id machine_id] [--kernel-pattern kernel_pattern] [--initramfs-pattern initramfs_pattern] [--lvm-opts lvm_opts] [--btrfs-opts btrfs_opts] [--os-options os_options] [host_id]
edits an existing host profile and changes up its configuration β¨ the entry you're editing must be specified by its host identifier. any remaining command line arguments are taken to be modifications to the original profile.
on success the new profile and its host identifier get printed to the terminal. glow up complete π
boom host list
boom host list [--host-profile host_id] [--name name] [--short-name short_name] [--profile os_id] [--machine-id machine_id] [--kernel-pattern kernel_pattern] [--initramfs-pattern initramfs_pattern] [--lvm-opts lvm_opts] [--btrfs-opts btrfs_opts] [--os-options os_options] [--nameprefixes] [--noheadings] [--options fields] [--sort fields] [--rows|--json] [--separator separator] [host_id]
outputs a tabular report of host profiles. one host profile per line, containing fields describing the properties of the configured host profiles. chef's kiss π€
--optionstakes a comma separated list of field names for which fields to display. for the full list of available fields, runboom host list -o help. if your field list starts with+, those fields get appended to the default field list. otherwise your list replaces the default set of report fields entirely.--sortsorts the report output by multiple user-defined keys. it wants a comma separated list of keys, with optional+and-prefixes meaning ascending and descending sort for that field respectively. organized AND flexible π
boom host show
boom host show [--profile os_id] [--version version] [--name osname] [--short-name osshortname] [--os-version version] [profile_id]
displays host profiles matching your selection criteria on standard out πΈ whatever matches the criteria you gave on the command line gets printed to the terminal in a compact multi-line format. quick little vibe check, iykyk.
π₯ Legacy bootloader commands π₯
boom is able to write the current set of boot entries into the configuration file of a legacy boot loader installed on the system. this is useful either on platforms that don't have a native bootloader supporting the Boot Loader Specification, or to allow upgrades and recovery from an installation lacking BLS support. and if the system gets updated to a distribution that does support the BLS boot loader configuration, it'll be used automatically when present. flexible queen π
legacy support is enabled and configured via the boom.conf(5) configuration file.
β οΈ Warning: these commands are deprecated as ofboom-1.6.7and will be removed in a future release. beginning withboom-1.6.7theboomcommand will issue a deprecation warning if legacy bootloader integration is enabled inboom.conf(5)or if boom legacy commands are used. consider this your soft launch notice, bestie β don't get too attached π
boom legacy write
boom legacy write [--boot-id boot_id] [--profile os_id] [--version version] [--name osname] [--short-name osshortname] [--os-version version] [--root-device device] [--root-lv lv] [--linux kernel_path] [--initrd initrd_path] [--btrfs-subvol subvol] [boot_id]
writes out the current set of Boom boot entries into the configured legacy configuration file β¨ the normal command line selection options may be used to control which set of entries actually gets written to the file. you're in control, periodt.
boom legacy clear
boom legacy clear
removes all Boom boot entries from the configured legacy configuration file. no survivors π no options, no arguments, just a clean slate.
boom legacy show
boom legacy show [--boot-id boot_id] [--profile os_id] [--version version] [--name osname] [--short-name osshortname] [--os-version version] [--root-device device] [--root-lv lv] [--linux kernel_path] [--initrd initrd_path] [--btrfs-subvol subvol] [boot_id]
displays the selected boot entries exactly as they would appear in the configured legacy boot loader format π the normal command line selection options may be used to control which set of entries gets written to the terminal. it's giving preview mode.
π Boot image cache commands π
boom can optionally cache or back up the images used by a boom BootEntry. this means an entry can still be booted even if a subsequent update removed the original kernel and initramfs images, and it can be used to recover an earlier system state from a snapshot following even major operating system updates. lowkey a lifesaver π«Ά
boom cache list
boom cache list [--image img_id] [--linux kernel_path] [--initrd initrd_path] [--nameprefixes] [--noheadings] [--options fields] [--sort fields] [--rows|--json] [--separator separator] [img_id]
outputs a tabular report of the paths present in the boot image cache. one cache entry per line, containing fields describing the properties of the cache entry β¨
--optionsgives the list of fields to display, as a comma separated list of field names. to get the list of available fields, runboom cache list -o help. if the field list starts with the+character, those fields get appended to the default field list. otherwise your list replaces the default set of report fields.--sortsorts the report output by multiple user-defined keys, as a comma separated list of keys, with optional+and-prefixes indicating ascending and descending sort for that field respectively. chef's choice π
boom cache show
boom cache show [--image img_id] [--linux kernel_path] [--initrd initrd_path] [img_id]
displays matching cache entries on standard output πΈ entries matching your selection criteria get printed in a compact multi-line format. short, sweet, and exactly what you needed.
boom config create
boom config create [--boot-dir boot_dir]
creates (or replaces) a default configuration at /boot/boom/boom.conf, overwriting any existing configuration file π parent directories are created as needed. the directory used as /boot can be overridden with the --boot-dir option.
and when --boot-dir is specified, the configuration gets written to boot_dir/boom/boom.conf instead. make it make sense? it does. it so does β¨
π REPORT FIELDS π
The boom report ships with a bunch of field types that you can drop into the default field set for either Boot Entry or OS Profile reports β or use to build your own custom report from scratch. No cap, the report engine is lowkey the most fun part of this whole tool.
πΈ Boot Parameters πΈ
Boot parameter fields are the ones that actually make boot entries different from each other: the kernel version, and how the root device is set up. It's giving "the personality of the entry."
versionβ the kernel version of this Boot Entry.rootdevβ the root device of this Boot Entry.rootlvβ the root logical volume of this Boot Entry, inVG/LVnotation.subvolpathβ the BTRFS subvolume path for this Boot Entry.subvolidβ the BTRFS subvolume ID for this BootEntry.
β¨ Boot Entry fields β¨
These are the deets about an entry that its Boot Parameters don't tell you β the title, the boot identifier, where the boot images live, and the options you need to actually boot the thing. Very main character.
bootidβ boot identifier.titleβ the entry title as displayed in the boot loader.optionsβ the kernel command line options used to boot this entry.kernelβ the path to the bootable kernel image, relative to the boot loader.initramfsβ the path to the initramfs image, relative to the boot loader.machineidβ the machine-id associated with this Boot Entry.entrypathβ the absolute path to this Boot Entry's on-disk configuration file.
π¦ OS Profile fields π¦
OS Profile fields unlock all the details of a profile's configuration β its identity fields, plus the template strings that get used to generate entries.
Heads up bestie: every Boot Entry has an OS Profile attached to it, so all the profile fields below are also available to add to any Boot Entry report. Free real estate. π
osidβ OS profile identifier.osnameβ the name of this OS profile as read fromos-release.osshortnameβ the short name of this OS profile as read fromos-release.osversionβ the OS version of this OS profile as read fromos-release.osversion_idβ the OS version identifier of this OS profile as read fromos-release.unamepatternβ the configured UTS release pattern for this OS profile.kernelpatternβ the configured kernel image template for this OS profile.initrdpatternβ the configured initramfs image template for this OS profile.lvm2optsβ the configured LVM2 root device options template for this OS profile.btrfsoptsβ the configured BTRFS root options template for this OS profile.optionsβ the kernel command line options template for this OS profile.profilepathβ the absolute path to this OS Profile's on-disk configuration file.
π Host Profile fields π
Host Profile fields give you the details of a profile's configuration too β identity fields plus the template strings used to generate entries. This set includes everything available in the OS Profile report, plus some extra Host Profile identity fields on top.
hostidβ host profile identifier.hostnameβ the hostname of this host profile.labelβ the label of this host profile.
π Cache Entry fields π
Cache entry fields spill the tea on the paths and images sitting in the boom boot image cache.
imgidβ image identifier.pathβ path to the cached image, relative to the boot file system.modeβ path file system mode in human-readable format.uidβ image owner user identifier.gidβ image owner group identifier.tsβ image timestamp. Themtimeof the image file at the time it was added to the cache.stateβ a string description of the cache entry state:CACHED,MISSING,RESTORED, orBROKEN.countβ the number of boot entries that reference this boot image.
π REPORTING COMMANDS π
Both the entry list and profile list commands run on one shared reporting system to show you the results of the query. You get to control which fields show up and in what order, which means custom report formats are 100% yours to design. Obsessed.
π Displaying the available boot entry fields
# boom list -o help
Boot loader entries Fields
--------------------------
bootid - Boot identifier [sha]
title - Entry title [str]
options - Kernel options [str]
kernel - Kernel image [str]
initramfs - Initramfs image [str]
machineid - Machine identifier [sha]
entrypath - On-disk entry path [str]
OS profiles Fields
------------------
osid - OS identifier [sha]
osname - OS name [str]
osshortname - OS short name [str]
osversion - OS version [str]
osversion_id - Version identifier [str]
unamepattern - UTS name pattern [str]
kernelpattern - Kernel image pattern [str]
initrdpattern - Initrd pattern [str]
lvm2opts - LVM2 options [str]
btrfsopts - BTRFS options [str]
options - Kernel options [str]
profilepath - On-disk profile path [str]
Boot parameters Fields
----------------------
version - Kernel version [str]
rootdev - Root device [str]
rootlv - Root logical volume [str]
subvolpath - BTRFS subvolume path [str]
subvolid - BTRFS subvolume ID [num]
π§ Displaying the available OS profile fields
# boom profile list -o help
OS profiles Fields
------------------
osid - OS identifier [sha]
osname - OS name [str]
osshortname - OS short name [str]
osversion - OS version [str]
osversion_id - Version identifier [str]
unamepattern - UTS name pattern [str]
kernelpattern - Kernel image pattern [str]
initrdpattern - Initrd pattern [str]
lvm2opts - LVM2 options [str]
btrfsopts - BTRFS options [str]
options - Kernel options [str]
profilepath - On-disk profile path [str]
β Selecting custom fields for the entry list and profile list commands
# boom list -o bootid,osname
BootID Name
0d3e547 Fedora
bc18de2 Fedora
576fe39 Fedora
1838f58 Fedora
81520ca Fedora
327e24a Fedora
π« Adding additional fields to the default set
# boom list -o +options
BootID Version Name RootDevice Options
0d3e547 4.13.5-200.fc26.x86_64 Fedora /dev/mapper/vg_hex-root BOOT_IMAGE=/vmlinuz-4.11.12-100.fc24.x86_64 root=/dev/mapper/vg_hex-root ro rd.lvm.lv=vg_hex/root rhgb quiet rd.auto=1
bc18de2 4.13.5-200.fc26.x86_64 Fedora /dev/vg_hex/root-snap10 BOOT_IMAGE=/vmlinuz-4.13.5-200.fc26.x86_64 root=/dev/vg_hex/root-snap10 ro rd.lvm.lv=vg_hex/root-snap10
576fe39 4.13.5-200.fc26.x86_64 Fedora /dev/vg_hex/root BOOT_IMAGE=/vmlinuz-4.13.5-200.fc26.x86_64 root=/dev/vg_hex/root ro rd.lvm.lv=vg_hex/root
1838f58 4.13.5-200.fc26.x86_64 Fedora /dev/mapper/vg_hex-root BOOT_IMAGE=/vmlinuz-4.11.12-100.fc24.x86_64 root=/dev/mapper/vg_hex-root ro rd.lvm.lv=vg_hex/root rhgb quiet
81520ca 4.13.13-200.fc26.x86_64 Fedora /dev/mapper/vg_hex-root BOOT_IMAGE=/vmlinuz-4.13.5-200.fc26.x86_64 root=/dev/mapper/vg_hex-root ro rd.lvm.lv=vg_hex/root rhgb quiet LANG=en_GB.UTF-8
327e24a 4.13.5-200.fc26.x86_64 Fedora /dev/vg_hex/root BOOT_IMAGE=%{linux} root=/dev/vg_hex/root ro rd.lvm.lv=vg_hex/root
π«Ά Sort operating system profiles by ascending OS name and descending OS version
# boom profile list -O+osname,-osversion
OsID Name OsVersion
d4439b7 Fedora 26 (Workstation Edition)
9736c34 Fedora 25 (Server Edition)
9cb53dd Fedora 24 (Workstation Edition)
6bf746b Fedora 24 (Server Edition)
b99ea5f Red Hat Enterprise Linux Server 8 (Server)
3fc389b Red Hat Enterprise Linux Server 7.2 (Maipo)
c0b921e Red Hat Enterprise Linux Server 7 (Server)
98c3edb Red Hat Enterprise Linux Server 6 (Server)
b730331 Red Hat Enterprise Linux Server 5 (Server)
efd6d41 Red Hat Enterprise Linux Server 4 (Server)
21e37c8 Ubuntu 16.04 LTS (Xenial Xerus)
β¨ EXAMPLES β¨
Okay bestie, this is the part where it all clicks. Real commands, real output, no cap. π
πΈ List the available operating system profiles
# boom profile list
OsID Name OsVersion
efd6d41 Red Hat Enterprise Linux Server 4 (Server)
b730331 Red Hat Enterprise Linux Server 5 (Server)
98c3edb Red Hat Enterprise Linux Server 6 (Server)
c0b921e Red Hat Enterprise Linux Server 7 (Server)
3fc389b Red Hat Enterprise Linux Server 7.2 (Maipo)
b99ea5f Red Hat Enterprise Linux Server 8 (Server)
Look at all those gorgeous profiles just sitting there, waiting. π
π¦ List the available boot entries
# boom list
BootID Version Name RootDevice
0d3e547 4.13.5-200.fc26.x86_64 Fedora /dev/mapper/vg00-lvol0
bc18de2 4.13.5-200.fc26.x86_64 Fedora /dev/vg00/lvol0-snap10
576fe39 4.13.5-200.fc26.x86_64 Fedora /dev/vg00/lvol0
f52ba10 4.11.12-100.fc24.x86_64 Fedora /dev/vg00/lvol0-snap
1838f58 4.13.5-200.fc26.x86_64 Fedora /dev/mapper/vg00-lvol0
81520ca 4.13.13-200.fc26.x86_64 Fedora /dev/mapper/vg00-lvol0
327e24a 4.13.5-200.fc26.x86_64 Fedora /dev/vg00/lvol0
Seven entries, seven whole vibes. Snapshot city. ποΈ
π Create an OS profile for the running system (using Fedora 26 as an example)
# boom profile create --from-host --uname-pattern fc26
Created profile with os_id d4439b7:
OS ID: "d4439b7d2f928c39f1160c0b0291407e5990b9e0",
Name: "Fedora", Short name: "fedora",
Version: "26 (Workstation Edition)", Version ID: "26",
UTS release pattern: "fc26",
Kernel pattern: "/kernel-%{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}"
Not it reading the whole entire host and building a profile from scratch?? Main character energy fr fr. β¨
π Create a new boot entry for a specific OS profile and version
# boom profile list --short-name rhel
OsID Name OsVersion
3fc389b Red Hat Enterprise Linux Server 7.2 (Maipo)
98c3edb Red Hat Enterprise Linux Server 6 (Server)
c0b921e Red Hat Enterprise Linux Server 7 (Server)
# boom create --profile 3fc389b --title "RHEL7 snapshot" --version 3.10-272.el7 --root-lv vg00/lvol0-snap
Created entry with boot_id a5aef11:
title RHEL7 snapshot
machine-id 611f38fd887d41dea7eb3403b2730a76
version 3.10-272.el7
linux /vmlinuz-3.10-272.el7
initrd /initramfs-3.10-272.el7.img
options root=/dev/vg00/lvol0-snap ro rd.lvm.lv=vg00/lvol0-snap rhgb quiet
Ate. π Note how you had to point at a specific --profile and --version, because boom is not out here guessing for you.
π Create a new boot entry for the running system, changing only the root logical volume
# boom create --title Snap1 --root-lv vg00/lvol0-snap1
Created entry with boot_id e077490:
title Snap1
machine-id 611f38fd887d41dea7eb3403b2730a76
version 4.13.13-200.fc26.x86_64
linux /vmlinuz-4.13.13-200.fc26.x86_64
initrd /initramfs-4.13.13-200.fc26.x86_64.img
options BOOT_IMAGE=/vmlinuz-4.13.13-200.fc26.x86_64 root=/dev/vg00/lvol0-snap1 ro rd.lvm.lv=vg00/lvol0-snap1
One flag. One tiny little --root-lv. And boom just knew the rest because it's the running system. Lowkey iconic. π§
π Delete an entry by its boot identifier
# boom delete --boot-id e077490
Deleted 1 entry
Gone. Poof. π«Ά
π Delete all entries for the Fedora 24 OS profile
# boom delete --name Fedora --os-version-id 24
Deleted 4 entries
Four at once, because boom does not do things halfway. Periodt.
π₯ EXIT STATUS π₯
Bestie, boom always tells you how it went. It exits with one of these status codes:
0β Command completed successfully. Slay. π1β A runtime error occurred. π2β Invalid arguments or option parsing error. You said something boom could not parse, bestie.
π FILES π
Configuration is read from these locations:
/boot/boom/boom.conf/boot/boom/profiles/boot/boom/hosts
The main configuration file is /boot/boom/boom.conf. Defined OS and host profiles are stored in /boot/boom/profiles and /boot/boom/hosts respectively.
BLS configuration snippets are stored in /boot/loader/entries.
π«Ά So like, three places hold the lore, and the actual boot snippets live somewhere else entirely. iykyk.
π BUGS π
Please report bugs via the GitHub issue tracker:
https://github.com/snapshotmanager/boom-boot/issues
Not me begging you to file an issue instead of vague-posting about it. π
π AUTHORS π
Bryn M. Reeves <bmr@redhat.com>
π SEE ALSO π
boom.conf(5)lvm(8)stratis(8)- boom project page
- boot to snapshot documentation
- Boot Loader Specification
- LVM2 resource page
- device-mapper resource page
- Stratis resource page
And that's the whole page, bestie!! πβ¨π This one came from Linux, dated Sep 04 2025, and yes it is BOOM(8) β go forth and boot to snapshots responsibly. π¦ππ
π¦ where this page comes from
- centos-stream 10: boom-boot 1.6.8-2.el10 Β· Apache-2.0
- centos-stream 9: boom-boot 1.6.8-2.el9 Β· Apache-2.0
- fedora 43: boom-boot 1.6.8-3.fc43 Β· Apache-2.0
- fedora 44: boom-boot 1.6.8-4.fc44 Β· Apache-2.0
- fedora 44: boom-boot 1.6.8-5.fc44 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms