A little introduction:

When in your system you have different operating system you need something that allows you to chose which operating system to use every time you boot your machine. This “thing” is called a boot loader.  The greatest loader for booting Linux and practically any other OS open source or otherwise is probably GRUB (GNU GRand Unified Bootloader).

The purpose of the GRUB kernel is to recognize filesystems and load boot images, and it provides both menu-driven and command-line interfaces to perform these functions.

On Linux GRUB has a configuration file locate at:

/boot/grub/grub.cfg

where you can see all the kernel that GRUB sees on your machine and that it will allows you to boot.

 

Here is the problem:

Sometimes something is missing in this configuration file. It could happens that, after a change in the partition table that GRUB doesn’t see one of your partition. although ou are sure that this partion is still inside your machine (just to be sure, if you type as root sfdisk -l, you’ll se all partition in your system, although GRUB doesn’t recognizes one of them).

 

Solution:

To solve this problem, you can try typing as root the following command:

grub-mkconfig

This command, at this moment, will not change any configuration of your system. It will just print out a configuration file with (probably) all the partitions in your system, so also the one missing.

If you can find the missing partition in this output, you just need to replace the old GRUB configuration file with this new one. TO do that, just type:

grub-mkconfig -o /boot/grub/grub.cfg

It will overwrite the old configuration file with the new one. Then just reboot your system and hopefully the boot loader will recognize all the partition that you have in your system.