GRUB rescue returns unknown filesystem after Windows update [duplicate]

I run dual boot Ubuntu and Windows on my machine. Last night Windows started installing some updates and it stated the machine would restart a few times during the updates.

Well, after the first restart it brought up this GRUB rescue screen, and it seems my machine can't find the Ubuntu partition. I start to think Windows may have destroyed it by updating.

In all other threats I've found so far it says to execute the 'ls' command to find all partitions and the 'set' command to see what GRUB has set up.

ls returns:

(hd0) (hd0,msdos5) (hd0,msdos2) (hd0,msdos1)

OK, set returns:

cmdpath=(hd0)
prefix=(hd0,msdos7)/boot/grub
root=hd0,msdos7

Now I understand this is wrong. The solution would be to ls every partition until the Ubuntu one is found. I tried this by doing ls (hd0,msdos#)/ where # is one of the numbers shown by ls. All of the commands return:

error: unknown filesystem.

I also tried adding boot/grub and combinations to the command, but nothing works.

Now, my next plan is to get a Ubuntu live USB using somebody else's computer, but I can't right now.

What is wrong here? Is my hard disk drive broken? Did the uncompleted update break it? Is there another solution?


I had a very similar problem.

I dual boot Windows 10 and Debian (BunsenLabs), and if it is relevant then I use the (U)EFI BIOS system. Here is how I solved the problem.

Yesterday, I opened Windows for first time since summer, and it needs to install updates and to reboot and at second reboot I get the GRUB rescue prompt.

error: unknown filesystem
grub rescue>

ls gave: (hd0) (hd0,gpt6) (hd0,gpt5) (hd0,gpt4) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1)

In order to find a filesystem GRUB rescue could recognise I run through ls (hd0,#) where the hashtag is a number between 1 and 6 (note: one can leave out the "gpt"-part and probably also the "msdos" part if you use the old partition table).

It turns out gpt5 is my home partition and gpt4 is my Debian root partition. None of the other partitions had a filesystem that could be recognised (by GRUB rescue).

I now followed Carla Schroder's "How to rescue a non-booting GRUB 2 on Linux" guide. At the end of the guide she provides commands to boot from GRUB rescue. Notice when reading the guide, that at first she addresses the problem of booting from the normal GRUB prompt - that is not the rescue prompt, which is relevant to us, so read past that part, and you'll get to the rescue prompt.

Since my boot partition is gpt4, I ran the following commands:

set prefix=(hd0,4)/boot/grub
set root=(hd0,4)
insmod normal

The last one made the font of the prompt change a bit, and then the command

normal

which started the my normal GRUB 2 graphical boot menu. The guide didn't say anything about that, that would happen... but it worked splendid. I choose the Windows booter, and the update install continued. It rebooted another time, and sent me back into the GRUB rescue prompt, and I repeated the procedure, again choosing to boot Windows, and this time the update installation finished.

Now reboot manually (when the Windows update have been configured). Again I get the GRUB rescue prompt and I repeat, but this time in the graphical boot menu I choose my Linux (BunsenLabs), and when I have logged in I open a terminal and still following Carla Schroder's guide, I did

sudo update-grub

which finds my Linux image and the Windows boot manager, and then I did:

sudo grub-install /dev/sda

Finally I reboot again to check that everything works. I now directly get the graphical GRUB boot menu and both Linux and Windows can be chosen.

I hope this will be helpful, if anyone experiences a similar problem.


Major Windows updaters have a bug that changes Linux partition types on MBR disks. Either use testdisk see how to here to fix your MBR partition problem, or a full Ubuntu install would be needed to fix the problem in this case.