I recently got upgraded Windows in my dual boot machine with Arch Linux. After update Linux is no more able to start. It ended with GRUB rescue mode. It may happen with any Linux which is dual booting with Windows.
Windows while updating created a new partition in my hard disk. I don’t why it has been created since it never happened to me till this update. Due to this partition label of my Linux space changed one level up. That was the problem and GRUB is unable to load Linux with that new change.
Here is how to solve this similar problem if you faced it. Although I am using Arch Linux but this process is similar to all Linux distro.
How to fix Linux unable to boot after changing/resizing partition
Create a bootabel drive with the Linux you use. We need to boot into live system and do our stuffs there. In Windows, rufus is I liked most.
Boot with the bootabe USB.
We need to know our Linux partitions. So do; cfdisk
to get the Linux partitions you have. For exmaple let’s say; /dev/sda9 > root , /dev/sda10 > home & /dev/sda2 > EFI
Now mounting all these partitions to /mnt
in my case.
mount /dev/sda9 /mnt mount /dev/sda10 /mnt/home mount /dev/sda2 /mnt/boot/efi
It may be different in your case. I had EFI partition mounted in /boot/efi
while installing. Make sure it is mounted the correct partition.
Now regenerating fstab
. We need to regenerate since Linux partition info are saved into /etc/fstab
file. So removing previously installed fstab
and creating a new fstab
.
rm /mnt/etc/fstab genfstab -U /mnt >> /mnt/etc/fstab
Now reinstalling GRUB. Do do so we need to enter root. Which is done by using chroot
. It is different other distro. In Arch Linux;
arch-chroot /mnt
There are different commands to install GRUB in Legacy and UEFI mode. Mine is UEFI hence for UEFI in Arch Linux the command is;
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
Finally generating grub.cfg
grub-mkconfig -o /boot/grub/grub.cfg
Now it is all done and Linux is able to boot normally.