#3136 PR merged
: Include GRUB tools unconditionally and don't create $VAR_DIR/recovery/bootdisk in prep¶
Labels: bug
, cleanup
pcahyna opened issue at 2024-01-25 16:06:¶
Pull Request Details:¶
-
Type: Bug Fix
-
Impact: Normal
-
Reference to related issue (URL): see discussion in commit ccae513d8362078c5d4bcffe9b1167835e6449b8
-
How was this pull request tested?
touch /boot/grub2FAIL
full backup and recovery. Original code fails to recover: "Installing GRUB Legacy boot loader:
ERROR: Cannot install GRUB Legacy boot loader because there is no 'grub' program." New code works.touch /boot/grub2FAIL && shopt -s nullglob && rear -d mkrescue && find /*/tmp/rear.*/rootfs /tmp/rear.*/rootfs -name grub\*-\* -executable
original code: nothing
new code:
/usr/tmp/rear.noYr1PET9AefVbz/rootfs/bin/grub2-mkimage
/usr/tmp/rear.noYr1PET9AefVbz/rootfs/bin/grub2-mkpasswd-pbkdf2
/usr/tmp/rear.noYr1PET9AefVbz/rootfs/bin/grub2-mkrelpath
/usr/tmp/rear.noYr1PET9AefVbz/rootfs/bin/grub2-bios-setup
/usr/tmp/rear.noYr1PET9AefVbz/rootfs/bin/grub2-install
/usr/tmp/rear.noYr1PET9AefVbz/rootfs/bin/grub2-mkconfig
/usr/tmp/rear.noYr1PET9AefVbz/rootfs/bin/grub2-probe
/usr/tmp/rear.noYr1PET9AefVbz/rootfs/bin/grub2-reboot
/usr/tmp/rear.noYr1PET9AefVbz/rootfs/bin/grub2-set-default
/var/tmp/rear.noYr1PET9AefVbz/rootfs/bin/grub2-mkimage
/var/tmp/rear.noYr1PET9AefVbz/rootfs/bin/grub2-mkpasswd-pbkdf2
/var/tmp/rear.noYr1PET9AefVbz/rootfs/bin/grub2-mkrelpath
/var/tmp/rear.noYr1PET9AefVbz/rootfs/bin/grub2-bios-setup
/var/tmp/rear.noYr1PET9AefVbz/rootfs/bin/grub2-install
/var/tmp/rear.noYr1PET9AefVbz/rootfs/bin/grub2-mkconfig
/var/tmp/rear.noYr1PET9AefVbz/rootfs/bin/grub2-probe
/var/tmp/rear.noYr1PET9AefVbz/rootfs/bin/grub2-reboot
/var/tmp/rear.noYr1PET9AefVbz/rootfs/bin/grub2-set-default
- Description of the changes in this pull request:
- Do not detect GRUB before including GRUB tools. When there was a
file matching
grub*
in/boot
(e.g./boot/grub2FAIL
), the code got confused by the glob pattern intended to match/boot/grub
or/boot/grub2
and subsequently the rest of the script was skipped, asgrubdir
got assigned something like"/boot/grub2 /boot/grub2FAIL"
, which does not exist, sogrubdir
was set to/boot/grub
, which does not exist either, andgrub-probe
fails.
As a result, the GRUB tools were not included in the recovery image.
The code have been proceeding anyway when neithergrub-probe
nor grub2-probe was found, so the tests have not been very useful.
Fix and simplify by not checking for the existence of GRUB and just trying to include the GRUB tools always. - Don't create
$VAR_DIR/recovery/bootdisk
inprep
. This file is unused and creating it in prep stage is against the guideline in prep/README:
- Do not detect GRUB before including GRUB tools. When there was a
file matching
You should not put scripts into this 'prep' stage that modify things
in ROOTFS_DIR or in VAR_DIR/recovery and VAR_DIR/layout because
scripts for ROOTFS_DIR belong to the 'rescue' stage and scripts
for VAR_DIR/recovery and VAR_DIR/layout belong to the 'layout' stages.
pcahyna commented at 2024-01-28 17:42:¶
Note to myself:
the whole check in
usr/share/rear/prep/Linux-s390/305_include_s390_tools.sh should now
be deleted, it is useless and potentially harmful (any failure during
checking /boot will result in all s390 tools omitted from the recovery
image, with disastrous results).
Actually this whole file can then be deleted and the PROG+= lines moved
to usr/share/rear/conf/Linux-s390x.conf or whatever is appropriate for
s390 (this file got deleted in cba3590b27bedb526e5b439cd8d4d01e1ec0169a
without explanation).
pcahyna commented at 2024-02-06 17:37:¶
@schlomo thanks for the review, merging!
[Export of Github issue for rear/rear.]