What Error 15 Means
The GRUB Error 15 message translates to File not found. During the initialization phase, the bootloader successfully reads its primary code but fails to locate the Linux kernel (vmlinuz) or initial RAM disk image (initrd.img) specified in the configuration. As a result, the system halts on a black screen with white text and does not hand over control to the operating system. This symptom appears immediately after selecting a menu entry in GRUB or automatically at startup if the configuration is corrupted.
Causes
- Disk structure changes: Deleting, formatting, or merging partitions shifts device numbers and changes the UUIDs recorded in
grub.cfg. - Clearing the
/bootdirectory: Manually deleting old kernels or a package manager failure (apt,dnf,pacman) removes the current kernel files. - Failed bootloader update: Installing packages, resizing partitions, or disconnecting a drive without synchronizing the changes via
update-grub. - Windows conflict: Installing or performing a major Windows update often overwrites the MBR/EFI, breaking the links to the GRUB configuration.
Solutions
Method 1: Automatic Boot-Repair Utility
The safest approach for users who prefer a graphical interface. Boot from your distribution's Live-USB and connect to the internet. Open a terminal and run:
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt update
sudo apt install boot-repair
Launch the utility from the application menu and select Recommended repair. The program will automatically scan the disks, restore the configuration, and install the bootloader to the correct partition. Once finished, restart your computer.
Method 2: Manual Reinstallation via chroot
Provides full control over the process. Boot from a Live-USB. Identify the root partition using lsblk -f. Mount the system and bind the virtual filesystems:
sudo mount /dev/sdX2 /mnt
# If /boot is mounted separately:
sudo mount /dev/sdX1 /mnt/boot
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
Enter the restored OS environment: sudo chroot /mnt. Reinstall the bootloader to the physical disk (specify /dev/sda, not /dev/sda1!):
# For BIOS/MBR systems:
grub-install /dev/sda
# For UEFI systems (replace the EFI partition path if it differs):
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
Update the configuration: update-grub (for Arch/Fedora, use grub-mkconfig -o /boot/grub/grub.cfg). Exit with exit, unmount the partitions, and reboot.
Method 3: Temporary Boot via GRUB Console
If you don't have a Live-USB handy and need immediate access to the system, you can boot the kernel manually. At the error screen, press c. Locate the correct partition using ls (hd0,gpt2)/ (adjust the number until you see vmlinuz and initrd). Specify the boot parameters:
linux (hd0,gpt2)/boot/vmlinuz-version root=/dev/sda2 ro quiet
initrd (hd0,gpt2)/boot/initrd.img-version
boot
💡 Tip: This method only temporarily boots the system. Immediately after logging into Linux, run
sudo update-grubto permanently fix the configuration and avoid manually specifying paths on every startup.
Prevention
To prevent this error from returning, always run sudo update-grub after modifying the partition table, installing new kernels, or cloning disks. When setting up a dual-boot system, install Windows first and Linux second, or place them on separate physical drives. Regularly back up /etc/default/grub and /boot/grub/grub.cfg. If you are experimenting with the configuration, use grub-customizer or edit files in /etc/grub.d/ instead of modifying grub.cfg directly.