====== Fedora ====== ===== GRUB Btrfs snapshots ===== From this [[https://www.reddit.com/r/Fedora/comments/1bd3eo2/comment/mnljzv9/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button|comment]]. Set-up Snapper & Btrfs-assistant sudo dnf install btrfs-assistant snapper python3-dnf-plugin-snapper libdnf5-plugin-actions sudo snapper -c root create-config / sudo snapper -c home create-config /home Create /etc/dnf/libdnf5-plugins/actions.d/snapper.actions and add the following lines: # Get the snapshot description pre_transaction::::/usr/bin/sh -c echo\ "tmp.cmd=$(ps\ -o\ command\ --no-headers\ -p\ '${pid}')" # Creates pre snapshots for root and home and stores snapshot numbers in variables pre_transaction::::/usr/bin/sh -c echo\ "tmp.snapper_pre_root=$(snapper\ -c\ root\ create\ -t\ pre\ -p\ -d\ '${tmp.cmd}')" pre_transaction::::/usr/bin/sh -c echo\ "tmp.snapper_pre_home=$(snapper\ -c\ home\ create\ -t\ pre\ -p\ -d\ '${tmp.cmd}')" # Creates post snapshots for root and home if pre snapshot numbers exist post_transaction::::/usr/bin/sh -c [\ -n\ "${tmp.snapper_pre_root}"\ ]\ &&\ snapper\ -c\ root\ create\ -t\ post\ --pre-number\ "${tmp.snapper_pre_root}"\ -d\ "${tmp.cmd}" post_transaction::::/usr/bin/sh -c [\ -n\ "${tmp.snapper_pre_home}"\ ]\ &&\ snapper\ -c\ home\ create\ -t\ post\ --pre-number\ "${tmp.snapper_pre_home}"\ -d\ "${tmp.cmd}" Setup grub-btrfs Download the latest release from ''https://github.com/Antynea/grub-btrfs/releases'' Unzip, enter the directory and run: ''sudo make install'' Uncomment and change the following options in ''/etc/default/grub-btrfs/config'' GRUB_BTRFS_GRUB_DIRNAME="/boot/grub2" GRUB_BTRFS_BOOT_DIRNAME="/boot" GRUB_BTRFS_MKCONFIG=grub2-mkconfig GRUB_BTRFS_SCRIPT_CHECK=grub2-script-check GRUB_BTRFS_MKCONFIG_LIB=/usr/share/grub/grub-mkconfig_lib I couldn't get the included systemd unit to trigger the grub update but it can be done as follows: Go back to the ''/etc/dnf/libdnf5-plugins/actions.d/snapper.actions'' you created earlier and add the following lines at the bottom: # Update grub with the new snapshots post_transaction::::/usr/bin/sh -c /etc/grub.d/41_snapshots-btrfs this will trigger the grub update after each package install so that the grub snapshot menu is always up to date. You can also manually update the grub snapshot menu by running: ''sudo /etc/grub.d/41_snapshots-btrfs''