Theory
At first we need a little lession on how a current Linux system boots with UEFI:
There are normally two or three partitions on your drive:
- The EFI Boot partition, which contains the Bootloader (in our case GRUB-UEFI)
- (optionally) BIOS Boot partition
- The Root-Partition, which contains your installation, including the Kernel to boot from, all the system files and in case of EOS, also your Homedirectory
Secondly, we need to know how a partition can be accessed/identified:
- By it’s device path, e.g. /dev/sdXY, where X is the device number and Y the partition number. /dev/sda3 is the root partition in most cases
- By a UUID (example: e5189710-f245-11e9-aaef-0800200c9a66), which is generated during the filesystem creation
- By a Label (example: ostree) which is generated during the filesystem creation
When GRUB gets installed, the identifier of the partition containing the root filesystem is embedded into the Bootloader executable. When this identifier is for some reasons no longer available, the message “Error: no such device: XXXXXXXX” is displayed when booting.
EOS uses a Label as the identifier for booting wit GRUB.
How to fix it
Boot with a EOS Live CD, open a Terminal and make yourself root:
sudo bash
Then we need to make sure, that the filesystem is clean, by issuing:
e2fsck -f /dev/sda3
As the last step, we rewrite the Label of the root Partition:
tune2fs -L ostree /dev/sda3
Make sure that /dev/sda3
is your root partition, by issuing a blkid
after making yourself root.