In this tutorial, we will learn what is GRUB2, and how to configure GRUB2 Boot Loader settings in Ubuntu Linux systems. We can configure the settings either by directly editing the grub configuration file using any text editor or using any GUI applications like Grub-customizer.
What is GRUB2?
GRUB2, stands for GRand Unified Bootloader, is default boot loader for most Linux operating systems. GRUB boot loader is the first program that runs when the computer starts.
GRUB is responsible for loading and transferring control to the operating system Kernel. And then the Kernel takes charge, and initializes the rest of the operating system.
I tested the steps given below guide on Ubuntu 16.04 and 18.04 LTS desktops, however these instructions might work on all Linux operating systems that uses GRUB2 boot loader.
1. Configure GRUB2 Boot Loader settings in Ubuntu
Like I already said we can configure boot loader settings from command line or GUI.
Let us see the command line way first.
Warning: The default configuration file for GRUB2 is
/boot/grub/grub.cfg. You shouldn't edit or modify this file, unless you are much familiar with GRUB2. This is the main file to boot into the Linux OS. Any misconfiguration in this file may lead you to end up with broken Ubuntu system. So, don't touch this file!
/boot/grub/grub.cfg file is automatically generated by
grub-mkconfig using templates from
/etc/grub.d and settings from
/etc/default/grub. Any changes you made in in
/etc/default/grub file will be reflected to the GRUB2.
First, backup the
/etc/default/grub file before making any changes.
$ sudo cp /etc/default/grub /etc/default/grub.bak
The contents of typical grub file will look like below.
$ cat /etc/default/grub
# If you change this file, run 'update-grub' afterwards to update # /boot/grub/grub.cfg. # For full documentation of the options in this file, see: # info -f grub -n 'Simple configuration' GRUB_DEFAULT=0 GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT=10 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX="" # Uncomment to enable BadRAM filtering, modify to suit your needs # This works with Linux (no patch required) and with any kernel that obtains # the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...) #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef" # Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL=console # The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB with the command `vbeinfo' #GRUB_GFXMODE=640x480 # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux #GRUB_DISABLE_LINUX_UUID=true # Uncomment to disable generation of recovery mode menu entries #GRUB_DISABLE_RECOVERY="true" # Uncomment to get a beep at grub start #GRUB_INIT_TUNE="480 440 1"
Whenever you made any changes in this file, you must run the following command to apply the changes to the GRUB2.
$ sudo update-grub
Let us do a few tweaks in the GRUB2 boot loader.
Download - Free eGuide: "22 Useful Tweaks To Make Ubuntu Feel Like Home"
1.1. Select default OS (GRUB_DEFAULT)
/etc/default/grub file using any text editor, for example nano.
$ sudo nano /etc/default/grub
Find the line "
GRUB_DEFAULT". We can select the default OS to boot using this option. If you set the value as "0", the first operating system in the GRUB boot menu entry will boot. If you set it as "1", the second OS will boot, and so on.
Also, if you have more than one OS in your system, you can boot the last operating system using the value
GRUB_DEFAULT=saved. Whenever you reboot the system, the last operating system will start boot. Please note that you should add a line
GRUB_SAVEDEFAULT=true to make this trick work.
You can also specify the name of the operating system's entry to boot a particular OS. For example, if there is an entry called "Lubuntu 16.04 LTS" in the BOOT menu, you can use
GRUB_DEFAULT="Lubuntu 16.04 LTS" to boot Lubuntu by default. Be mindful that you should specify the value within the quotes.
Don't forget to update the changes made in grub file by running the following command:
$ sudo update-grub
1.2. Set OS timeout (GRUB_TIMEOUT)
By default, the selected entry from the boot menu will start to boot in 10 seconds.
You can increase or decrease this timeout setting. If the value is "0", the default OS will immediately start to boot. If the value is "5" , the boot menu will appear for 5 seconds, so that you can select which OS you want to load when the system starts.
1.3. Change GRUB background image
To change the GRUB background image, you need to copy your preferred image to
$ sudo cp ostechnix.png /boot/grub/
You can use JPG/JPEG format images as well. But GRUB supports only 256 color JPG/JPEG image formats only. So, it is better to use PNG format images.
Alternatively, you can directly mention the image file path in
/etc/default/grub file like below.
$ sudo nano /etc/default/grub
Add the following line:
Replace the image path with your own.
Once you made the necessary changes in the GRUB file, Save and close it.
To apply the changes, you must run the following command:
$ sudo update-grub
You should see the following output:
Generating grub configuration file ... Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported. Found background image: ostechnix.png Found linux image: /boot/vmlinuz-4.15.0-23-generic Found initrd image: /boot/initrd.img-4.15.0-23-generic Found linux image: /boot/vmlinuz-4.15.0-20-generic Found initrd image: /boot/initrd.img-4.15.0-20-generic Found memtest86+ image: /boot/memtest86+.elf Found memtest86+ image: /boot/memtest86+.bin done
Reboot and check whether the changes are working or not.
2. Configure GRUB2 Boot Loader settings Using Grub-customizer
Some of you may not comfortable with commandline. If you're one of them, you can use a graphical tool called "Grub-customizer" to configure Grub2 and Burg boot loaders.
Using Grub-customizer, we can,
- Edit, remove, rename and re-arrange boot menu entries,
- Hide or show boot menu,
- Change default boot entry,
- Change text color of boot menu entries,
- Change boot menu background image,
- Increase or decrease boot time,
- Edit kernel parameters,
- Reinstall Grub into Windows MBR.
Grub-customizer has an official PPA for Ubuntu and its derivatives such as Linux Mint. You can add it and install Grub-customizer by running the following commands one by one:
$ sudo add-apt-repository ppa:danielricht
$ sudo apt update
$ sudo apt install grub-customizer
Once installed, launch it from Dash or Menu. Here is how Grub-customizer default interface looks like.
As you can see in the above screenshot, Grub-customizer have the following threes tabs.
- List configuration,
- General settings,
- Appearance settings.
In List configuration, you can edit, delete, rename, and re-arrange(move) boot menu entries. For example, to rename a menu entry, just right click on it, choose Rename and enter the name of your choice.
Similarly, to move an entry, choose it, right click and then click Move up or Move down. You can also use UP/Down arrows in the menu bar to move entries.
After making the changes, click on the Save button on the menu bar.
In General settings section, we can,
- Change default boot entry (can use useful when dual-booting),
- Boot into last booted entry i.e boot the last operating system,
- Show/hide boot menu visibility,
- Change boot menu delay,
- Change kernel parameters.
In Appearance settings, we can,
- Change font for boot menu entries,
- Set font color,
- Set background image and so on.
Do not forget to hit the Save button after making any changes.
There is also an additional section called "Advanced settings" in the right bottom side of Grub-customizer interface. In the advanced settings section, you can quickly add, remove, enable/disable and edit values for various boot loader settings such as GRUB_DEFAULT, GRUB_TIMEOUT, GRUB_MENU_PICTURE and a few more.
Again, I warn you - do not edit or modify GRUB2 settings in production systems. I recommend you to test these settings in any virtual machine and then apply them in your personal desktop.
grub-customizer wants un-installable packages as pre-requisite.
I don’t have any problem editing a text file, /etc/default/grub, and this info was just what I needed to save default, load saved.
I have grub-customizer installed on my Ubuntu Mate 18.04. You can also use a PPA to install it. As for un-installable packages that can happen with any package due to dependencies that haven’t been updated for the version of the OS you are running. Usually when that happens eventually the packages are updated, so try again before you do an upgrade.
I tried to use “nano” without success. It took a couple of tries for me to discover that the cursor doesn’t blink. Eventually I discovered that by moving the cursor over the value I wanted to change highlighted it to the end of the line. I was trying to change a zero to a four. I wound up with three fours at the beginning of the file. After fruitless searching I used “gedit” which worked as expected. I saved my file, did the update and tested it. All was well.
I like the background image. Can you share it?
I deleted that image. My apologies.
I followed all the CLI instructions. I got no error. But the GRUB settings didn’t change. At all. I added BG image, beep on grub load, change of default boot OS, no change occurred. I rechecked the grub file and it confirmed that all the changes I made to the file were noted.
I used gedit. worked fine. Thank you so much.