12/26/2023
Ok, this is a little weird. The forum tells me I cannot add another post here, and that I must edit my original one. So here goes…
Hello PhilM,
Thank you so much for all this clarification. It is much appreciated!
Can you clue me in some more about this? I would like like to add some of the information from my first comment in this thread onto that GRUB wiki.
I’ll be looking forward to using the package install-grub when it hits stable. So thank you so much for this. I don’t have the skills to bug check, and don’t want to deal with potential instabilities.
My previous post below:
The issue for me here is poor documentation, and the fact that we as users have to manually intervene for an update for what is supposed to be an easy Linux distribution. Not all of us are experts in Linux that know everything inside out. While I can research and eventually figure out what needs to be done, there will be other less experienced users that will switch Linux distributions because Manjaro broke on an update. Most users don’t even know about these update announcements in the forums here and how necessary they are to read before doing major updates.
Was there really no other way to automate the GRUB update so that user intervention would not be necessary?
As grub is now at 2.12, before restarting your system, it is advised to run grub-install to ensure all parts of grub is up-to-date. See our wiki for more details: GRUB/Restore the GRUB Bootloader - Manjaro
This above message is not detailed enough. My initial take on it, was that the terminal command “grub-install” was all that was required. Had I done that I probably would have broken my system. I’d suggest adding: “sudo grub-install” plus the necessary variables after it needed, depending on whether GRUB is using a EFI or BIOS system.
Then there is the terrible documentation in the Manjaro GRUB/Restore the GRUB Bootloader. Again, had I assumed my system was EFI, I would have broken it. Thankfully I knew better to double check everything, though that required a good bit of research. Not everyone is going to know what type of system they have for GRUB and how it was previously installed.
Under the “Identify partitions” section, those two commands did not give me the information I needed to understand what system I had installed. Below is the output from those two commands for my computer.
$ lsblk -o PATH,PTTYPE,PARTTYPE,FSTYPE,PARTTYPENAME
PATH PTTYPE PARTTYPE FSTYPE PARTTYPENAME
/dev/sda dos
/dev/sda1 dos 0x7 ntfs HPFS/NTFS/exFAT
/dev/sr0
/dev/nvme0n1 dos
/dev/nvme0n1p1 dos 0x83 ext4 Linux
$ sudo fdisk -l
[sudo] password for main:
Disk /dev/sda: 1.82 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: ST2000DM001-1ER1
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xe8898b2d
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 3907028991 3907026944 1.8T 7 HPFS/NTFS/exFAT
Disk /dev/nvme0n1: 1.82 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: Sabrent Rocket Q
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x9e98d4aa
Device Boot Start End Sectors Size Id Type
/dev/nvme0n1p1 * 2048 3907024064 3907022017 1.8T 83 Linux
The below quote is from this same link and section about identifying partitions for GRUB.
The clues to look for is mbr vs. gpt and the presence of a small partition - usually the first - formatted with the vfat filesystem followed by a larger partition formatted as ext4.
I don’t see anything in the output of those two commands that matches up with the above quote.
What I did know, from the initial install of Manjaro XFCE, is that I installed it on my NVME SSD drive, that the boot loader went on that same drive, and secure boot is disabled. Again though, my motherboard is new enough at 2015, that I knew it has UEFI/EFI. Then why was I not seeing a small partition formatted with VFAT?
The asterisk under Boot section for /dev/nvme0n1 confirms the system boots from that drive.
What I had to do was get into the GRUB command line area to figure out which boot system I have. For those that only have Manjaro installed, such that GRUB defaults to not showing before booting:
1. Restart Manjaro and press the ESC key a bunch of times as the UEFI or BIOS is finishing up and before Manjaro boots. This will bring up the GRUB screen.
2. Press the C key to enter the command line mode.
3. Type in the command echo $grub_platform
If it shows PC, you have a BIOS install, if it shows EFI you have a EFI install.
Link: GNU GRUB Manual 2.12
4. Type in exit
to end the session, and Manjaro will boot automatically.
Now there is a bit more subtlety to this. As the above command showed PC for my computer. I could not understand why a modern UEFI/EFI motherboard would have GRUB using a BIOS install. Looking into my Asus Z-170a motherboard manual, I found a section in the boot area called CSM (Compatibility Support Module). And the choice language and description is as vague and hard to understand as old motherboard BIOS settings always have been. I left it to what it was defaulted to when I first got the system, but disabled secure boot.
Turns out this setting controls whether the boot system uses EFI or BIOS. Mine is set to “enabled”, and a sub-setting of “Boot Devices Control [UEFI and Legacy OPROM]”. There are two other options for “[Legacy OPROM only]” and “[UEFI only]”. Either GRUB, or Manjaro Linux chose to use the BIOS method automatically out of those two choices the UEFI offered during the operating system install.
As a real life example, I’m going to list the exact terminal commands I used after the update installed, but before restarting the system. Please be advised that you should NOT use these! They are specific to my system, and GRUB using the PC boot setting. If you know for sure GRUB is using the PC setting for booting, then just alter the drive name after /dev/ to what yours is. As the instructions say, the device is the disk (not a partition).
sudo grub-install --force --target=i386-pc --recheck --boot-directory=/boot /dev/nvme0n1
Then run:
sudo grub-mkconfig -o /boot/grub/grub.cfg
Then restart Manjaro Linux and you are done.
I had no issues after doing all this. Though it took me several hours of research and double checking to make sure I understood everything, and had all the information needed.
If GRUB uses EFI to boot from, you likely have it easier, as no devices need to be specified. Though this is not from experience on my end, just observation of the commands in the GRUB/Restore the GRUB Bootloader documentation. It appears that you can just put sudo in front of the grub-install and the grub-mkconfig they have listed in the “EFI System” section, and it should work.