Bug 2181380

Summary: Include High Risk Inhibitor In Leapp Report if Boot Disk's Embedding Area Too Small for grub2-install
Product: Red Hat Enterprise Linux 7 Reporter: ckrell
Component: leapp-repositoryAssignee: Leapp Notifications Bot <leapp-notifications-bot>
Status: NEW --- QA Contact: upgrades-and-conversions
Severity: urgent Docs Contact:
Priority: urgent    
Version: 7.9CC: pstodulk
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description ckrell 2023-03-23 22:39:49 UTC
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.