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.
In this chapter of the Linux Jargon Buster series, I’ll tell you what is Grub and what is it used for. I’ll also briefly touch upon the configuration and customization part.
What is GRUB?
GRUB is complete program for loading and managing boot. 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 systems (shell, display manager, desktop environment etc).
Boot loader vs boot manager
I didn’t want to confuse you at this stage but I see no option to avoid bringing this topic. There is a blur line between a bootloader and a boot manager.
You already know that 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 are more than one OS 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 EFI system includes an EFI bootloader. In EFI capable systems, the firmware reads the EFI System Partition (ESP) for the EFI files for boot information.
Insert Image: Show partition table with ESP partition.
GRUB is both a bootloader and a boot manager. I’ll come back to GRUB in a moment. Let’s see other GRUB like programs.
What are some other boot managing programs like GRUB?
GRUB is the most popular boot manager for Linux. But it is not the only one. There is this highly customizable rEFInd boot manager that some Linux users love to use.
There is systemd-boot text-based boot manager. You can guess that this is exclusively for systemd-based Linux distributions. Some distributions like Pop OS use the systemd-boot.
Accessing or editing GRUB
The usual GRUB screen you see is its menu interface. It allows you to choose the operating systems if there are more than one operating system. You can also choose to load a different kernel if your Linux distribution as more than one kernel installed.
Depending upon the configuration set by the Linux distribution, you may have some other entries on the GRUB menu.
You can edit GRUB menu entry by pressing the key
e. 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.
You can also enter the command line menu of GRUB using the key
c at the GRUB menu interface.
GRUB configuration file
Any changes you make to the GRUB from the menu interface is temporary. If you want to make some permanent changes to GRUB like 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.
You must update GRUB for the changes to take into effect.
GRUB customizer for easily customizing GRUB
If you think editing 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.
It needs to be installed via PPA in Ubuntu and AUR in Arch Linux based distributions.
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 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 on GRUB, you can access the GRUB documentation in your Linux terminal using
info grub command.
I hope you have a tad bit better understanding of what is GRUB now. Here’s a GIF to humor you.
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.