Authors Top

If you have a few years of experience in the Linux ecosystem, and you’re interested in sharing that experience with the community, have a look at our Contribution Guidelines.

1. Overview

In this tutorial, we’ll learn how to add different OSes to the boot menu. After dual booting or multi-booting our systems, sometimes the system fails to add the other present OSes to the GRUB menu entry. Let’s see how we can resolve this issue. For simplicity, we’ll refer to GRUB 2 as GRUB.

2. os-prober

The GRUB bootloader is installed by default during Linux installation. During this time, GRUB should discover any other bootable partition within the disk and add the OS within it to the GRUB menu entries. When it fails to do so, we’d need to add it by ourselves. We use the os-prober command to correct GRUB’s failure to discover the other OSes. os-prober is a command that lists other OSes found in bootable partitions within the disk. It’s used during installation to create a GRUB boot menu that shows all the discovered OSes. We can also use it to reconfigure the GRUB menu after installation is complete. os-prober can fail to locate other OSes due to different reasons. For example, Ubuntu 20.04 has os-prober disabled, and it doesn’t discover any other available OS during installation. Let’s run os-prober:
$ sudo os-prober
/dev/sda1:Windows 10:Windows:chain
If our system is dual-booted, we’ll get a similar output with the name of the second OS. Otherwise, it gives us an empty output followed by a new line meaning only one OS exists on our disk. If we get the following result, we need to install os-prober since it’s missing:
$ sudo os-prober
Command 'os-prober' not found, but can be installed with:
sudo apt install os-prober
Do you want to install it? (N/y)
Now that we’ve looked at os-prober let’s see how we can use it to discover other OSes. First, let’s check if os-prober is disabled:
$ sudo cat /etc/default/grub | grep 'GRUB_DISABLE_OS_PROBER'
GRUB_DISABLE_OS_PROBER=true
If we get false, then it shows os-prober is active. Otherwise, if it’s true, it’s not active. Let’s enable it by changing true to false. Apart from this, if we get no output, this setting is missing, and we need to add it. If it’s missing, let’s append this line to /etc/default/grub:
$ sudo vi /etc/default/grub
GRUB_DISABLE_OS_PROBER=false
Afterward, we save the file. Now, let’s update the GRUB menu configuration and reboot for the changes to take effect:
$ sudo update-grub
$ sudo reboot -f
After we’ve rebooted, the discovered OS/OSes should be on the GRUB menu. We must note that os-prober is insecure. This is because it mounts all partitions on our disk as root using the grub-mount command to check if they contain other OSes. As a result, this can be exploited and used to gain root privileges. For this reason, os-prober is disabled in some distros.

3. Reinstalling GRUB

In some instances, after an update, Windows may write on the MBR of our disk. This may change the bootloader, and the BIOS will go straight into the Windows bootloader at boot time. Other times, this might happen after installing Windows as our second OS. For both cases, we’ll need to reinstall GRUB. If we can’t access our installed Linux, we have to use a live CD/USB to access the Linux terminal. Let’s list the drive, see which partitions are bootable, and find the drive letters:
$ sudo fdisk -l
Disk /dev/sda: 465.76 GiB, 500107862016 bytes, 976773168 sectors
Disklabel type: dos
Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda1  *         2048    104447    102400    50M  7 HPFS/NTFS/exFAT
/dev/sda2          104448 484152681 484048234 230.8G  7 HPFS/NTFS/exFAT
/dev/sda3       484155392 485249023   1093632   534M 27 Hidden NTFS WinRE
/dev/sda4       485251070 976771071 491520002 234.4G  5 Extended
/dev/sda5       485251072 974772223 489521152 233.4G 83 Linux
/dev/sda6       974774272 976771071   1996800   975M 82 Linux swap / Solaris
Given that our system only has a single drive, it’s listed as sda. The partitions within our disk have a number appended to sda. From this output, we notice that we’ve got OSes installed in sda4, sda5 while sda1 is the boot partition. To reinstall GRUB, let’s run these commands:
$ sudo mount /dev/sda1 /mnt
$ sudo grub-install --boot-directory=/mnt/boot /dev/sda
$ sudo update-grub
$ sudo reboot -f
If we plan to dual-boot/multi-boot our system with Windows, we need to install Windows first, followed by any other Linux distro.

4. Using Boot-Repair

Boot-Repair is a tool to repair the boot issues we usually experience. We use Boot-Repair to create boot-info, configure GRUB, purge GRUB, specify the disk to install GRUB, and add kernel options. Let’s use apt to install the boot-repair tool:
$ sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt update
$ sudo apt install -y boot-repair && boot-repair
After installation, we can launch it from System Settings, where we’ll find it under Administration. After it loads, we select recommended repair and follow the prompts:

5. Conclusion

In this article, we looked at adding other OSes to our GRUB menu entry. We saw how to use os-prober to discover other OSes on our disk. We also learned how to manually add these OSes by reinstalling GRUB. It’s important to be aware of the bootable partitions when adding additional OSes to the GRUB menu. Lastly, a live CD/USB can help if we lose access to our Linux system.
Authors Bottom

If you have a few years of experience in the Linux ecosystem, and you’re interested in sharing that experience with the community, have a look at our Contribution Guidelines.

2 Comments
Oldest
Newest
Inline Feedbacks
View all comments
Comments are closed on this article!