grub "error: file '/boot/grub/i386-pc/normal.mod' not found" after reinstalling Ubuntu in dualboot Windows 10 and choosing sdb as bootloader
Linux - Laptop and NetbookHaving a problem installing or configuring Linux on your laptop? Need help running Linux on your netbook? This forum is for you. This forum is for any topics relating to Linux and either traditional laptops or netbooks (such as the Asus EEE PC, Everex CloudBook or MSI Wind).
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
grub "error: file '/boot/grub/i386-pc/normal.mod' not found" after reinstalling Ubuntu in dualboot Windows 10 and choosing sdb as bootloader
I wanted to reinstall Ubuntu so I installed it in the same partition it was before, replacing all the previous contents I had. Basically, I wanted to start from scratch with Ubuntu. The thing is that when I had to choose the device for bootloader installation, I didn't want to change the default configuration (which was my primary hard drive, sda), and in fact I didn't. But it was during the installation that an error showed up regarding this, and I chose to change it to sdb, which is my SSD, as you can see in the attached screenshot.
And thanks to it, it allowed me to access to Ubuntu, but every time I power off or restart the PC the grub rescue screen shows up again and I need to type the same commands to access to Ubuntu, because the problem hasn't been fixed. Obviously, it doesn't let me access Windows, because I can't choose which operating system I want to work on. So now, I can only work from the Ubuntu version I just installed.
How can I fix this problem with the bootloader so I can choose between my two OS again?
That setting is a lie no matter your choice it will install to the first drive it sees in the system. The way to get it fixed is this boot with the installer for Ubuntu and install the boot-repair program make certain you have disconnected the Windows drive. Once that is done disconnect the Linux drive and boot with a windows disk and run its boot repair. With everything connected you will then be able to use your boot menu to select the drive to boot from or set it to the drive wanted to boot by default in the firmware. Once back into Ubuntu you can run sudo update-grub to have it re-scan the system and add a windows entry for you to its menu. Since the uuid in use will be set already it should have no trouble putting the loader where it belongs.
Before you made these changes, were you able to boot both windows and Ubuntu?
If so, which hard drive were they on? You have 2 windows partitions on sda which is a gpt drive. For windows to boot from a gpt drive, you need an EFI partition. I don't see it unless the microsoft reserved partition is it, doubt that but...
You also have multiple windows partitions and your Ubuntu partition on sdb. sdb is a dos partition and you have an Extended partition with logical partitions which includes an EFI partition. You can boot Ubuntu on a drive of this type but you can't boot an EFI install of windows on a dos drive. If you want Grub to boot both Linux and windows, you need both installed in the same mode, both EFI or both Legacy/CSM.
Which drive contains the windows install, sda or sdb?
That setting is a lie no matter your choice it will install to the first drive it sees in the system. The way to get it fixed is this boot with the installer for Ubuntu and install the boot-repair program make certain you have disconnected the Windows drive. Once that is done disconnect the Linux drive and boot with a windows disk and run its boot repair. With everything connected you will then be able to use your boot menu to select the drive to boot from or set it to the drive wanted to boot by default in the firmware. Once back into Ubuntu you can run sudo update-grub to have it re-scan the system and add a windows entry for you to its menu. Since the uuid in use will be set already it should have no trouble putting the loader where it belongs.
I booted my laptop with the USB containing Boot Repair, so I ran the program and after that I could boot normally and choose the operating system from the boot menu like I did in the past. Since now it works again, I didn't do anything else. However after Boot Repair repaired my boot problem it suggested me to make my BIOS boot on sdb (you can check the screenshot attached). As I said, I haven't done anything else because now it works perfectly, or should I?
Quote:
Originally Posted by colorpurple21859
at the grub-rescue prompt post the output of
Code:
set
Before booting with the USB and let "Boot Repair" do its thing, I did it, and I attached the output in a screenshot.
Quote:
Originally Posted by yancek
Before you made these changes, were you able to boot both windows and Ubuntu?
If so, which hard drive were they on? You have 2 windows partitions on sda which is a gpt drive. For windows to boot from a gpt drive, you need an EFI partition. I don't see it unless the microsoft reserved partition is it, doubt that but...
You also have multiple windows partitions and your Ubuntu partition on sdb. sdb is a dos partition and you have an Extended partition with logical partitions which includes an EFI partition. You can boot Ubuntu on a drive of this type but you can't boot an EFI install of windows on a dos drive. If you want Grub to boot both Linux and windows, you need both installed in the same mode, both EFI or both Legacy/CSM.
Which drive contains the windows install, sda or sdb?
Yes, I was able to boot both Windows and Ubuntu, and as I said, it seems I can do it now without any problem. I attached a screenshot of Disk Management in Windows if needed, but as I can see, I have Windows and Ubuntu in my SSD (sdb), and it has been always this way. After running "Boot Repair" the problem seems to be solved, so I don't know if I should do something else.
I booted my laptop with the USB containing Boot Repair, so I ran the program and after that I could boot normally and choose the operating system from the boot menu like I did in the past. Since now it works again, I didn't do anything else. However after Boot Repair repaired my boot problem it suggested me to make my BIOS boot on sdb (you can check the screenshot attached). As I said, I haven't done anything else because now it works perfectly, or should I?
If turning on the machine gives you the boot menu once it starts then the setting it to boot from the second drive (sdb) in the system makes no sense. Now it is working like you want leave it alone unless you encounter problems. If it was an EFI system you had installed you could check to see which EFI system partition had the loader installed on it, I have no clue how to check a MBR system for that location. It is simple with EFI you just see which partition is mounted as the /boot/efi. Then it can make sense to have it set to load the EFI from the sdb if it is the one used to save that couple of extra seconds in the boot process as it searches for the loader to boot with.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.