Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-6954

rear doesn't include grub2-* tools when having a rogue file in /boot

    • rear-2.6-12.el8
    • Major
    • sst_cs_system_management
    • ssg_core_services
    • 25
    • 26
    • 3
    • False
    • Hide


    • No
    • None
    • Release Note Not Required
    • None

      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:


      Steps to Reproduce:
      1. Create a rogue file

      1. touch /boot/grub2FAIL

      2. Create a rescue in debug

      1. rear -dD mkrescue

      3. Check the rescue content: no /bin/grub2-* files embedded!

      1. 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.

            rhn-support-pcahyna Pavel Cahyna
            rhn-support-rmetrich Renaud M├ętrich
            Pavel Cahyna Pavel Cahyna
            Jakub Haruda Jakub Haruda
            0 Vote for this issue
            7 Start watching this issue