This bug was initially created as a copy of Bug #1989140 I am copying this bug because: Also applies. Description of problem: When there is a rogue file e.g. /boot/grub2XXX, ReaR doesn't include the grub2-* binaries, making it impossible to recover a system. Version-Release number of selected component (if applicable): rear-2.4, maybe Upstream, didn't check How reproducible: Always Steps to Reproduce: 1. Create a rogue file # touch /boot/grub2FAIL 2. Create a rescue in debug # rear -dD mkrescue 3. Check the rescue content: no /bin/grub2-* files embedded! # ll /tmp/rear.BIwW0X1HU7trKny/rootfs/bin/grub2* Actual results: ls: cannot access '/tmp/rear.BIwW0X1HU7trKny/rootfs/bin/grub2*': No such file or directory Expected results: Files there Additional info: In the log, we can see that the script /usr/share/rear/prep/GNU/Linux/300_include_grub_tools.sh is kinda stupid because it checks for /boot/grub* files. Due to the rogue file, the name being returned is "/boot/grub2 /boot/grub2FAIL" which makes ReaR consider it's not valid and expects "/boot/grub" to exist. Due to not existing, it doesn't include the binaries: + source /usr/share/rear/prep/GNU/Linux/300_include_grub_tools.sh ++ test -d /var/lib/rear/recovery +++ echo -n /boot/grub2 /boot/grub2FAIL ++ local 'grubdir=/boot/grub2 /boot/grub2FAIL' ++ test -d '/boot/grub2 /boot/grub2FAIL' ++ grubdir=/boot/grub ++ has_binary grub-probe ++ for bin in $@ ++ type grub-probe /usr/share/rear/lib/_input-output-functions.sh: line 331: type: grub-probe: not found ++ return 1 ++ has_binary grub2-probe ++ for bin in $@ ++ type grub2-probe ++ return 0 ++ grub2-probe -t device /boot/grub ++ return 0 --> grub2-probe fails due to checking for /boot/grub which doesn't exist, so rest of the script is not executed.
Thanks for the analysis, I will investigate whether a more reliable check can be implemented.