C8.1 Grub Problem

Home » CentOS » C8.1 Grub Problem
CentOS 15 Comments

Hi list,

I reinstalled on my workstation CentOS 8.1.

I explain: I’m a KDE user but packages shipped from EPEL currently are buggy so I prefer a stable and functioning system to work with. So I
tried to remove KDE workgroup and installed group “Workstation” but the system bricked so I reinstalled with GNOME.

I’ve an nvidia gtx 1050ti GPU so I installed kmod-driver from rpmfusion. After the installation of Nvidia driver, I rebooted, gdm start and after I perform the login the system freeze. So this problem happened to me with C7.5 and nvidia driver. In my case I need to blacklist i915 module and system works.

Also in this case I tried to boot CentOS changing grub kernel parameters pressing ‘e’ in the grub menu and adding “i915.modeset=0
rd.driver.blacklist=i915”, booted and system works.

So I tried to make this permanent updating grub configuration adding the previous directives (and removed rhgb and quiet) to /etc/default/grub and run grub2-mkconfig -o /boot/efi/EFI/CentOS/grub.cfg.

Reboot the system and checked again kernel parameters on grub menu and seen that nothing changed. Booted and freezed.

I checked /boot/efi/EFI/CentOS/grub.cfg and kernelops has the new directives.

Seems that grub configuration does not take effect.

I made another test inside a VM installed with minimal selection and remove rhgb and quiet parameters and worked fine. The vm is BIOS and my workstation UEFI.

How I can solve this problem? Currently to boot my system I need always to add this params.

Thank you in advance

15 thoughts on - C8.1 Grub Problem

  • Hi there!
    I had a similar problem recently with grub. No idea why it doesnt work. Try using grubby instead of grub2-mkconfig if you want the system to keep your kernel parameters between boots.

    Something like:

    sudo grubby –args=”i915.modeset=0 rd.driver.blacklist=i915″ –update-
    kernel=ALL

    Hope it helps!
    Have a nice day!

  • Il 06/04/20 11:54, Georgios ha scritto:

    Hi,

    I tried as suggested, parameters will be updated but I get already crash. So I tried to remove also rhgb and quiet and works well.

  • No idea. I stop looking after I manage to pass the arguments I wanted to the kernel. If you find the problem send an email on the list. It would be good to know what is wrong.

  • Il 06/04/20 14:42, Georgios ha scritto:
    Hi,

    I noticed that running grub2-mkconfig the output file is modified. Using simply grubby grub.cfg seems not to be modified.

    So seems that something changed but I don’t know where to search

  • Just to be sure, your subject line says this is on CentOS 8.1, right?

    Because IIRC grub2-mkconfig was broken in CentOS 7 despite the head of every grub cfg file telling us “It is automatically generated by grub2-mkconfig using templates”.

    Really weird that you see the same with CentOS 8.1.

    Regards, Simon

  • Il 06/04/20 15:21, Simon Matter via CentOS ha scritto:

    Hi Simon,

    I’m on 8.1. I’m searching help to see if this is a bug or error by me but can’t find nothing. Currently I used grubby but it does not write any file that I know like
    /boot/efi/EFI/CentOS/grub.cfg (I tried to remove and add arg but nothing changed on files), so I don’t know where it make update.

    I never got a problem using grub2-mkconfig -o file on C7 (last used was
    7.5) It always worked as expected to me (for example when I installed nvidia driver using NVIDIA package to blacklist nouveau manually).

  • In CentOS 8, GRUB2 uses ‘blscfg’ to store bootloader-independent boot entries in /boot/loader/entries (by default). grub2-mkconfig generates an initial configuration but grubby modifies the individual bootloader spec files in the entries directory. After It’s updated the kernel arguments, it overrides the kernelopts in the grub.cfg and hard-codes them per-spec file.

    In addition to providing a bootloader-agnostic config file, another benefit of blscfg is that the EFI volume is usually a FAT32 filesystem and can’t recover easily from filesystem errors. We want to avoid writing to the EFI volume repeatedly, so we write a single configuration once and it should remain static. New kernel entries create new bootloader spec files in /boot/loader/entries/, which is on the /boot filesystem, which is normally a journaled EXT4 or XFS
    filesystem, which can recover better from failures.

  • Il 06/04/20 20:51, Jonathan Billings ha scritto:
    Hi Jonathan,

    thank you for your explanation. So in el8 grubby should be used to update kernel opts and grub2-mkconfig is used to generate an initial config.

    If I’m not wrong, grubby updates every single (sperated) entries on
    /boot/loader/entries and then generate the /boot/efi/EFI/CentOS/grub.cfg?

    Suppose that I want use only grub2-mkconfig to generate the grub.cfg what other operation are needed to make it working?

    Thank you in advance.

  • grubby only alters the existing configuration. It never regenerates the grub.cfg in EFI. You can’t use “grub2-mkconfig” to create individual boot spec entries.


    Jonathan Billings

  • Il 08/04/20 01:46, Jonathan Billings ha scritto:
    Please explain how the process work, it is not so clear for me. I’m confused.

    In C7 when I need to modify grub menu kernel option I modify
    /etc/default/grub and run grub2-mkconfig and thats all. It always worked for me.

    On C8 this does not work anymore, grub2-mkconfig is not enough, it generates only the grub.cfg but it does not update the menu entries and need to modify each entry using grubby. At this point what grub.cfg is used for if directives are not loaded by it and need grubby to modify entries?

    I’m missing something….

  • To get the old way.

    set

    GRUB_ENABLE_BLSCFG=false

    in

    /etc/default/grub

    Warning: some OS updates resets this value to “true” on update.


    Lee

  • Am 08.04.20 um 10:01 schrieb Alessandro Baggi:

    Normally grub2-mkconfig is enough.

    Whats your output of

    # grub2-editenv list

    and

    # cat /proc/cmdline

    and

    # cat /etc/default/grub


    Leon

  • Don’t use grub2-mkconfig, it is really only for initial grub configuration. It has a problematic past in CentOS 7 too. Disabling blscfg is possible but it isn’t the default setup and not the recommended way of updating kernel entries. If you need to update kernel parameters, use grubby. That’s what is run in the kernel package install scripts (via new-kernel-package). That’s what is run in packages like the nvidia 3rd party packages.


    Jonathan Billings

  • Sorry, it’s ‘new-kernel-pkg’ in el7, not ‘new-kernel-package’, and in el8, it’s ‘kernel-install’ which eventually calls new-kernel-pkg.

    Look at the output of `rpm -q –scripts kernel` (el7) and
    `rpm -q –scripts kernel-core` (el8)


    Jonathan Billings

  • Il 08/04/20 13:40, Jonathan Billings ha scritto:

    Ok thank you for your suggestion.