In particular case several Google's AI Assistant proposals appeared to be questionable and were resolved in development phase. This post is immediate follow up for Setup Timeshift on Debian forky with btrfs root
Setup below would work with following vda virtual disk layout
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sr0
vda
├─vda1 vfat FAT32 AD99-8BB9 68.6M 12% /boot/efi
├─vda2 btrfs 394a393c-14dd-40d3-801a-6f64bffacaf1 56.6G 10% /home
| /
└─vda3 LVM2_member LVM2 001 3jvYq2-x8VH-5LY6-QYVN-KLiW-KNEJ-K4CpxN
└─debianVGS-vol01 xfs bc73e007-c2dc-47f8-ad9f-390d7da5974d 55.1G 3% /var
what exactly I mean it won't allow partition /boot with ext4 FS . Start configuration of "Debian GNU/Linux snapshots" grub sub-menu :-
$ sudo apt update
$ sudo apt install git make inotify-tools build-essential
$ git clone https://github.com/Antynea/grub-btrfs.git
cd grub-btrfs
# Install the script layout globally
$ sudo make install
$ sudo blkid /dev/vda2 => YOUR_COPIED_UUID_HERE
==================================
UPDATE /etc/grub.d/41_snapshots-btrfs
==================================
$ sudo nano /etc/grub.d/41_snapshots-btrfs
# Root subvolume UUID
# root_uuid_subvolume="$(btrfs subvolume show / 2>/dev/null | \
# awk -F':' '/^\s*UUID/ {gsub(/^[ \t]+/, "", $2); print $2}')"
root_uuid_subvolume="YOUR_COPIED_UUID_HERE"
[ -z "$root_uuid_subvolume" ] && print_error "UUID of the root subvolume is not available"
==================
TUNING BLOCK
==================
$ sudo nano /etc/default/grub-btrfs/config
Add to the bottom
GRUB_BTRFS_SNAPSHOTS_DIRS=("/run/timeshift")
GRUB_BTRFS_SUBVOLUME_DATA_PATH="/"
$ sudo systemctl edit --full grub-btrfsd
[Unit]
Description=Regenerate grub-btrfs.cfg
[Service]
Type=simple
LogLevelMax=notice
# Set the possible paths for `grub-mkconfig`
Environment="PATH=/sbin:/bin:/usr/sbin:/usr/bin"
# Load environment variables from the configuration
EnvironmentFile=/etc/default/grub-btrfs/config
# Start the daemon, usage of it is:
# grub-btrfsd [-h, --help] [-t, --timeshift-auto] [-l, --log-file LOG_FILE] SNAPSHOTS_DIRS
# SNAPSHOTS_DIRS Snapshot directories to watch, without effect when --timeshift-auto
# Optional arguments:
# -t, --timeshift-auto Automatically detect Timeshifts snapshot directory
# -o, --timeshift-old Activate for timeshift versions <22.06
# -l, --log-file Specify a logfile to write to
# -v, --verbose Let the log of the daemon be more verbose
# -s, --syslog Write to syslog
# ExecStart=/usr/bin/grub-btrfsd --syslog /.snapshots
# Directive must be update to support Timeshift
ExecStart=/usr/bin/grub-btrfsd --syslog --timeshift-auto
[Install]
WantedBy=multi-user.target
========================================
# Force systemd to recognize the freshly built paths
$ sudo systemctl daemon-reload
# Enable and start the tracker daemon
$ sudo systemctl enable --now grub-btrfsd
$ sudo systemctl status grub-btrfsd
========================================
As of now
boris@debianVDA2SRV:~$ sudo systemctl status grub-btrfsd
● grub-btrfsd.service - Regenerate grub-btrfs.cfg
Loaded: loaded (/etc/systemd/system/grub-btrfsd.service; enabled; preset: enabled)
Active: active (running) since Sun 2026-05-24 02:49:55 EDT; 6min ago
Invocation: 8132805e3c424d3e856c889243caa91c
Main PID: 870 (bash)
Tasks: 3 (limit: 18558)
Memory: 6.2M (peak: 8.3M)
CPU: 20.783s
CGroup: /system.slice/grub-btrfsd.service
├─ 870 bash /usr/bin/grub-btrfsd --syslog --timeshift-auto
├─ 884 bash /usr/bin/grub-btrfsd --syslog --timeshift-auto
└─4917 sleep 1
May 24 02:56:42 debianVDA2SRV grub-btrfsd[4854]: Watching /run/timeshift for timeshift to start
May 24 02:56:43 debianVDA2SRV grub-btrfsd[4860]: Watching /run/timeshift for timeshift to start
$ sudo update-grub
==========================================
Keeping update-grub invoked automatically
==========================================
sudo nano /etc/systemd/system/grub-btrfs-watcher.path
[Unit]
Description=Monitor Timeshift Snapshot Directory Changes
[Path]
PathChanged=/timeshift-btrfs-snapshots
Unit=grub-btrfs-watcher.service
[Install]
WantedBy=multi-user.target
=======================================
sudo nano /etc/systemd/system/grub-btrfs-watcher.service
[Unit]
Description=Regenerate GRUB Menu on Snapshot Change
[Service]
Type=oneshot
ExecStart=/usr/sbin/update-grub
======================================
sudo systemctl daemon-reload
sudo systemctl enable --now grub-btrfs-watcher.path
Why running both services together works ( commented by Google AI assistent)
The reason this setup operates correctly when both services are enabled simultaneously comes down to how they hand off tasks: Grub-btrfsd acts as the listener. It uses inotifywait to watch /run/timeshift and detect when a snapshot is created or deleted.
Grub-btrfs-watcher.path acts as an administrative bridge.Because it runs as a native systemd tracking primitive, its presence helps elevate permissions when
grub-btrfsd triggers an update event, preventing the background execution from stalling out
over hardcoded XFS /var settings.













