The GRUB Bootloader

The GRUB Bootloader

GRUB Bootloader

GRUB (GRand Unified Bootloader) is a powerful bootloader software used in most Linux distributions. A bootloader is a program that manages the boot process of an operating system, allowing the user to select the OS to boot from a list of available ones.

How GRUB works

GRUB is installed on the computer’s hard drive or an external drive, where it stores configuration files and a list of available operating systems. When the computer is turned on, the BIOS (Basic Input/Output System) or the UEFI (Unified Extensible Firmware Interface) firmware locates the bootloader on the hard drive and loads it into the memory.

GRUB then displays a menu that allows the user to select the operating system to boot or enter additional boot parameters. The menu can be customized to include various options, such as recovery mode or different kernel versions.

The default menu timeout is usually set to 5 seconds, but this can be changed by the user. If the user does not select an operating system within the timeout period, GRUB will boot the default operating system.

Features of GRUB

GRUB is a flexible and customizable bootloader with numerous features, including:

  • Support for multiple filesystems, such as ext4, NTFS, and FAT.
  • Multiboot support, allowing the user to boot from different operating systems and kernels.
  • Customizable menu with different themes and options.
  • Password protection for the bootloader and menu entries.
  • Boot options, such as kernel parameters and recovery mode.
  • Support for booting from network devices and USB drives.
  • Ability to load other bootloader software, such as LILO or Windows Boot Manager.

GRUB configuration

GRUB configuration is stored in the /boot/grub/grub.cfg file, which is generated automatically by the sudo grub-mkconfig -o /boot/grub/grub.cfg command or manually edited by the user. The file contains the list of available operating systems and the menu options.

Users can customize the GRUB menu by editing the /etc/default/grub file, which contains various options, such as timeout, default menu entry, and kernel parameters. The changes can be applied by running the update-grub command.

It is important to note that the /boot/grub/grub.cfg file should not be edited manually, as it is generated by the update-grub command and any manual changes may be overwritten. Instead, users should edit the /etc/default/grub file and then run the update-grub command to generate a new /boot/grub/grub.cfg file.

Some additional information

GRUB is not only used in Linux distributions but also in some other operating systems. For example, GRUB can be used to boot Mac OS X, Windows, and BSD-based operating systems.

GRUB can be used to load and boot other operating systems from the hard drive or a network device. This feature is called chainloading, and it is commonly used to boot Windows or other Linux distributions.

GRUB can also be used to boot different kernels or configurations of the same operating system. For example, if the user has multiple Linux distributions installed, GRUB can be used to select a specific kernel or configuration to boot.

In addition to the features mentioned above, GRUB also supports advanced features, such as booting from a RAID array, LVM (Logical Volume Manager), or encrypted filesystems.


GRUB is a powerful and versatile bootloader that provides users with various options and features for managing the boot process of their operating systems. Its flexibility and customization options make it a popular choice for Linux users, allowing them to boot from different configurations and kernels. Whether you need to boot a different operating system, select a specific kernel configuration, or use advanced features such as LVM or RAID, GRUB is the go-to bootloader for most Linux distributions. And with its support for other operating systems and advanced features, it is a great choice for anyone looking for a reliable and customizable bootloader.