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

Include High Risk Inhibitor In Leapp Report if Boot Disk's Embedding Area Too Small for grub2-install

    • leapp-repository-0.20.0-3.el7_9
    • None
    • Critical
    • 1
    • rhel-sst-upgrades
    • 26
    • 6
    • False
    • Hide

      None

      Show
      None
    • None
    • Leapp: 9.5 & 10.0 public beta
    • If docs needed, set a value
    • None

      Description of problem:

      If you attempt a leapp upgrade and the boot disk's embedded area is too small (ie. the boot disk's first partition starts on a low sector number such as 63) for the core.img file then the grub2-install fails during the upgrade kernel portion of the upgrade. Normally the first partition starts on 2048.

      grub2-install error example during upgrade kernel:

      ~~~
      2023-03-21 10:18:41.722 INFO     PID: 70738 leapp.workflow.RPMUpgrade.update_grub_core: GRUB is installed on /dev/sda
      2023-03-21 10:18:41.728 DEBUG    PID: 70738 leapp.workflow.RPMUpgrade.update_grub_core: External command has started: ['grub2-install', u'/dev/sda']
      2023-03-21 10:18:41.753 DEBUG    PID: 70738 leapp.workflow.RPMUpgrade.update_grub_core: Installing for i386-pc platform.
      2023-03-21 10:18:42.728 DEBUG    PID: 70738 leapp.workflow.RPMUpgrade.update_grub_core: grub2-install: warning: ../grub-core/partmap/msdos.c:401:your core.img is unusually large.  It won't fit in the embedding a
      rea.
      2023-03-21 10:18:42.735 DEBUG    PID: 70738 leapp.workflow.RPMUpgrade.update_grub_core: grub2-install: warning: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However,
       blocklists are UNRELIABLE and their use is discouraged..
      2023-03-21 10:18:42.741 DEBUG    PID: 70738 leapp.workflow.RPMUpgrade.update_grub_core: grub2-install: error: will not proceed with blocklists.
      2023-03-21 10:18:42.747 DEBUG    PID: 70738 leapp.workflow.RPMUpgrade.update_grub_core: Command ['grub2-install', u'/dev/sda'] failed with exit code 1.
      2023-03-21 10:18:42.759 DEBUG    PID: 70738 leapp.workflow.RPMUpgrade.update_grub_core: External command has finished: ['grub2-install', u'/dev/sda']
      2023-03-21 10:18:42.766 WARNING  PID: 70738 leapp.reporting: Stable Key report entry not provided, dynamically generating one - 54ba8c51e17b2088df653f3df0f1ae490f9ead88
      2023-03-21 10:18:42.779 WARNING  PID: 70738 leapp.workflow.RPMUpgrade.update_grub_core: GRUB core update on /dev/sda failed
      ~~~
      

      After rebooting this leads to a can't boot scenario where it fails to boot at the grub rescue shell with a message:

      ~~~
      error: symbol 'grub_calloc' not found. 
      Entering rescue mode...
      grub rescue>
      ~~~
      

      or

      ~~~
      error: symbol 'grub_real_boot_time' not found.
      ~~~
      

      Version-Release number of selected component (if applicable):
      leapp-0.15.0-2.el7_9.noarch

      How reproducible:
      Every time

      Steps to Reproduce:
      1. Make a RHEL 7 boot disk with the first partition starting on sector 75 or another early sector (to do this I had to create the partitions using a RHEL 6 version of fdisk).
      2. leapp upgrade
      3. Reboot to upgrade kernel, during this you may witness the grub2-install failure
      4. Reboot again and see the boot failure to grub rescue shell

      Actual results:
      No inhibitor with messages about the boot device's embedded area being too small so the system fails to boot to grub rescue after the upgrade.

      Expected results:
      Inhibitor with message that the boot disk has insufficient space in the embedded area to perform grub2-install so that we can catch this before a can't boot scenario.

              mhecko@redhat.com Michal Hecko
              rhn-support-ckrell Charlie Krell
              Michal Hecko Michal Hecko
              RHEL Upgrades QE Team RHEL Upgrades QE Team
              Votes:
              5 Vote for this issue
              Watchers:
              11 Start watching this issue

                Created:
                Updated:
                Resolved: