Modern GRUBing: Difference between revisions

Created page with "Rocky Linux 9 does not use the /etc/default/grub and /boot/grub2/grub.cfg Files any longer. Instead the BLS (Boot Loader Specification) 'method' is used. If one reads the documentation from RedHat, it seems like thing got really messy (and confusing). ==== BLS (Boot Loader Specification) ==== /etc/fstab grub2-mkconfig -o /tmp/boot/grub2/grub.cfg --root-directory=/tmp/LV.ROOT ==== GRUB "Installation" for MBR / BIOS ==== Installs the Stage 1 Boot Code (program) in..."
 
mNo edit summary
Line 2: Line 2:




==== BLS (Boot Loader Specification) ====
====BLS (Boot Loader Specification)====


Nope, not anymore (sort of): /etc/fstab


/etc/fstab
Nope, not anymore (sort of): grub2-mkconfig -o /tmp/boot/grub2/grub.cfg --root-directory=/tmp/LV.ROOT


Look in /boot/loader/entries and / or use GRUBBY


grub2-mkconfig -o /tmp/boot/grub2/grub.cfg --root-directory=/tmp/LV.ROOT
====GRUB "Installation" for MBR / BIOS====
 
==== GRUB "Installation" for MBR / BIOS ====
Installs the Stage 1 Boot Code (program) in the MBR and Stage 1.5 Boot Code (program) in the "MBR Gap": grub2-install --target=i386-pc /dev/sdd
Installs the Stage 1 Boot Code (program) in the MBR and Stage 1.5 Boot Code (program) in the "MBR Gap": grub2-install --target=i386-pc /dev/sdd


Line 19: Line 19:
Use DD to clone the Boot Partition
Use DD to clone the Boot Partition


==== Sources ====
====Sources====
https://www.baeldung.com/linux/grub-menu-management
https://www.baeldung.com/linux/grub-menu-management


Line 26: Line 26:
https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/managing_monitoring_and_updating_the_kernel/configuring-kernel-command-line-parameters_managing-monitoring-and-updating-the-kernel
https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/managing_monitoring_and_updating_the_kernel/configuring-kernel-command-line-parameters_managing-monitoring-and-updating-the-kernel


==== ChatGPT's Opinion ====
====ChatGPT's Opinion====


===== GRUB "Installation" ('''What Does <code>grub2-install</code> Do?)''' =====
=====GRUB "Installation" ('''What Does <code>grub2-install</code> Do?)'''=====
The <code>grub2-install</code> command is used to '''install''' the '''GRUB bootloader''' onto a disk or partition. It places the necessary GRUB '''boot code''' onto the target disk and copies GRUB modules required for booting.
The <code>grub2-install</code> command is used to '''install''' the '''GRUB bootloader''' onto a disk or partition. It places the necessary GRUB '''boot code''' onto the target disk and copies GRUB modules required for booting.


====== '''How <code>grub2-install</code> Works''' ======
======'''How <code>grub2-install</code> Works'''======
When executed, <code>grub2-install</code> performs the following actions:
When executed, <code>grub2-install</code> performs the following actions:


'''1. Determines the Installation Target'''
'''1. Determines the Installation Target'''


* If given a disk (e.g., <code>/dev/sda</code>), it installs '''GRUB to the MBR or GPT boot partition'''.
*If given a disk (e.g., <code>/dev/sda</code>), it installs '''GRUB to the MBR or GPT boot partition'''.
* If given a partition (e.g., <code>/dev/sda1</code>), it may fail or install to the '''partition's boot sector''' (not recommended).
*If given a partition (e.g., <code>/dev/sda1</code>), it may fail or install to the '''partition's boot sector''' (not recommended).
* If on a '''BIOS system''', it installs the <code>i386-pc</code> GRUB bootloader.
*If on a '''BIOS system''', it installs the <code>i386-pc</code> GRUB bootloader.
* If on a '''UEFI system''', it installs <code>x86_64-efi</code> and places EFI files in the EFI system partition.
*If on a '''UEFI system''', it installs <code>x86_64-efi</code> and places EFI files in the EFI system partition.


'''2. Copies GRUB Core to the Correct Location'''
'''2. Copies GRUB Core to the Correct Location'''


* On '''BIOS/MBR systems''', GRUB places its '''boot code''' in the MBR and additional code in the '''post-MBR gap''' (sectors after the MBR).
*On '''BIOS/MBR systems''', GRUB places its '''boot code''' in the MBR and additional code in the '''post-MBR gap''' (sectors after the MBR).
* On '''GPT systems using BIOS (BIOS-GPT)''', it places GRUB in the '''BIOS Boot Partition'''.
*On '''GPT systems using BIOS (BIOS-GPT)''', it places GRUB in the '''BIOS Boot Partition'''.
* On '''UEFI systems''', it installs the <code>grubx64.efi</code> file into the '''EFI System Partition (ESP)'''.
*On '''UEFI systems''', it installs the <code>grubx64.efi</code> file into the '''EFI System Partition (ESP)'''.


'''3. Selects the Correct GRUB Modules'''
'''3. Selects the Correct GRUB Modules'''


* <code>grub2-install</code> determines which GRUB modules are needed based on the filesystem, partition layout, and system firmware.
*<code>grub2-install</code> determines which GRUB modules are needed based on the filesystem, partition layout, and system firmware.
* It installs these modules into <code>/boot/grub2/</code> (BIOS) or <code>/boot/efi/EFI/</code> (UEFI).
*It installs these modules into <code>/boot/grub2/</code> (BIOS) or <code>/boot/efi/EFI/</code> (UEFI).


'''4. Writes GRUB Boot Code'''
'''4. Writes GRUB Boot Code'''


* '''BIOS (MBR) Installation:'''
*'''BIOS (MBR) Installation:'''
** The '''Stage 1 boot code''' is written into the MBR.
**The '''Stage 1 boot code''' is written into the MBR.
** The '''Stage 1.5 boot code''' is stored in the post-MBR gap (if available).
**The '''Stage 1.5 boot code''' is stored in the post-MBR gap (if available).
** The '''Stage 2 boot code''' (GRUB core modules) is stored in <code>/boot/grub2/</code>.
**The '''Stage 2 boot code''' (GRUB core modules) is stored in <code>/boot/grub2/</code>.
* '''UEFI Installation:'''
*'''UEFI Installation:'''
** The <code>grubx64.efi</code> file is copied to the EFI System Partition.
**The <code>grubx64.efi</code> file is copied to the EFI System Partition.
** GRUB is registered as a boot entry with the system's UEFI firmware.
**GRUB is registered as a boot entry with the system's UEFI firmware.


'''5. Registers the Bootloader (If UEFI)'''
'''5. Registers the Bootloader (If UEFI)'''


* On '''UEFI systems''', <code>grub2-install</code> registers <code>grubx64.efi</code> with the UEFI boot manager using <code>efibootmgr</code>.
*On '''UEFI systems''', <code>grub2-install</code> registers <code>grubx64.efi</code> with the UEFI boot manager using <code>efibootmgr</code>.


<br />
<br />