Linux Jargon Buster: What is Grub in Linux? What is it Used for?

If you ever used a desktop Linux system, you must have seen this screen. This is called the GRUB screen. Yes, it is written in all capital letters.

Grub Screen Linux
Remember this screen? This is GRUB

In this chapter of the Linux Jargon Buster series, I’ll tell you what Grub is and what is it used for. I’ll also briefly touch upon the configuration and customization part.

What is GRUB?

GRUB is a complete program for loading and managing the boot process. It is the most common bootloader for Linux distributions. A bootloader is the first software that runs when a computer starts. It loads the kernel of the operating system and then the kernel initializes the rest of the operating system: shell, display manager, desktop environment, etc.

Boot loader vs boot manager

I didn’t want to confuse you at this stage but this topic needs to be introduced before going on. There is a blurry line between a bootloader and a boot manager.

You already know that the bootloader starts first and then loads the kernel into memory and executes it. A boot manager program allows you to choose between operating systems, if there is more than one on your system. A boot manager doesn’t load the OS directly,

With Linux kernel version 3.3, the Linux kernel includes a built-in EFI bootloader. In fact, any operating system that is capable of working the EFI system includes an EFI bootloader. In EFI capable systems, the firmware reads the EFI system partition (ESP) to locate the EFI files for boot information.

Disk Partition Gparted

GRUB is both a bootloader and a boot manager. I’ll come back to GRUB in a moment. First, let’s see other GRUB-like programs.

Trivia

GRUB is acronym for GRand Unified Bootloader.

What are those lines in Grub screen mean?

You’ll see a few lines on the Grub screen. These lines will be different for different setups, different distributions.

Usually, the first line is your Linux distribution. If you see something like Advanced option, you can enter into it and find some lines starting with linux-generic-x-y-z etc.

When your Linux distribution updates the kernel version, it keeps at least one older version. You can choose to boot into the older Linux kernels in case your system encounters any issue with the newly updated Linux kernel.

You may also see a recovery option in Ubuntu based distribution.

Boot into recovery mode
Under the advanced options, there is usually an older kernel version and recovery option

At the last, you may see an entry like System setup or UEFI Settings to access the BIOS settings of your system.

What are some other boot managing programs similar to GRUB?

GRUB is the most popular boot manager for Linux. But it is not the only one. There is the highly customizable rEFInd boot manager that some Linux users love.

Refind Boot Manager
Customized rEFInd Boot Manager Screen | Image Credit

There is also systemd-boot text-based boot manager. You can guess that this is exclusively for systemd-based Linux distributions. Some distributions such as Pop OS, use the systemd-boot.

systemd-Boot in Pop OS
systemd-Boot in Pop OS | Image Credit

Accessing or editing GRUB

The usual GRUB screen you see is its menu interface. It allows you to choose which operating systems to boot, if there is more than one on your machine. You can also choose to load a different kernel if your Linux distribution has more than one installed.

Depending upon the configuration set by the Linux distribution, you may have some other entries on the GRUB menu.

You can edit a GRUB menu entry by pressing the “e” key. This way, you can change the kernel parameters before loading it. For example, in some cases, disabling the graphics driver from the kernel helps you with Linux system stuck at boot.

Editing grub to fix frozen boot issue with Ubuntu Linux

You can also enter the command line menu of GRUB using the “c” key at the GRUB menu interface.

GRUB configuration file

Any changes you make to GRUB from the menu interface is temporary. If you want to make some permanent changes to GRUB, such as changing the default timeout, you can change the configuration file after you boot into your Linux system.

The default GRUB configuration file is located at /etc/default/grub. There is also a /etc/default/grub.d directory. You may edit the /etc/default/grub file directly, however it is advised to make additional changes by adding config files (.cfg files) in this directory.

Default Grub Config File
Default GRUB Config File

You must update GRUB for the changes to take into effect. In fact, whenever you install an additional Linux on your system, it will try to overwrite the existing GRUB config with its own.

GRUB customizer for easily customizing GRUB

If you think editing a file with a text editor in the terminal is not something you feel comfortable with, you can use a graphical tool called GRUB Customizer.

It allows you to change the boot order, default timeout etc. You can also use it to change the background of GRUB with a custom wallpaper.

Make Windows default option in Grub in dual boot mode

GRUB Customizer can be installed in Ubuntu 20.04 from Universe repository and via PPA in Ubuntu 18.04. It is available via AUR in Arch Linux based distributions.

Conclusion

I have touched everything on the surface. EFI, boot loading and GRUB itself is detailed and complicated topic and not in the scope of this article. This article intended to give you a high-level overview of the GRUB boot program.

Perhaps I’ll write a detailed guide on GRUB explaining the low-level details. For now, if you want to learn more about GRUB, you can access the GRUB documentation in your Linux terminal using the info grub command.

Grub Manual Linux Terminal
GRUB Manual can be accessed via Terminal

I hope you have a tad bit better understanding of what GRUB is now. Here’s a GIF to humor you.

What Is Grub
What Is GRUB? UEFI don’t hurt me, no more… :)

I may not have answered all questions you have about GRUB. Please feel free to let me know in the comment section. I may update the article with your questions or suggestions.

Similar Posts

  • Sorry, you missed letter h here: “You can also choose to load a different kernel if your Linux distribution as more than one installed.”

  • Good article. But one thing I find about GRUB is that it’s not unified at all. I once spent about an hour entering the text, the options, the headings etc, that I wanted GRUB to display, only to have my config overwritten during the next Ubuntu, Mint, LXDE or whatever update.

    Is there a way to enter one’s own config and not have it destroyed by the next update of another distro?

    • i think he covered it by saying “Any changes you make to GRUB from the menu interface is temporary. If you want to make some permanent changes to GRUB, such as changing the default timeout, you can change the configuration file after you boot into your Linux system”