[SOLVED] GRUB error: "file '/boot/grub/x86_64-efi/normal.mod' not found"
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/x86_64-efi/normal.mod' not found"
My sister recently received an HP 14-Dq0xxx laptop running Windows 11. I offered to install BunsenLabs Linux (version 3 "Lithium") on it for her as a dual boot with Windows. During the course of the installation, I received a message to the effect that GRUB did not install properly. I don't remember the wording exactly, but sure enough, when I tried to boot the machine up after the install, I got this instead of the GRUB menu:
Code:
Welcome to GRUB!
error: file '/boot/grub/x86_64-efi/normal.mod' not found.
grub rescue>
I did some research and found that this appears to be a fairly common issue. However, I couldn't for the life of me find a solution that worked. Here's what I tried.
Fixing From the GRUB Rescue Prompt
One solution that I found involved using the GRUB rescue prompt. Using the ls command, I identified the partition containing the Linux system and ran these commands:
Code:
set root=(TARGET-PARTITION)
set prefix=(TARGET-PARTITION)/usr/lib/grub
insmod normal
Once I hit Enter on that last command, though, I got the same error from before:
Code:
file '/boot/grub/x86_64-efi/normal.mod' not found
Fixing From Linux
Of course, not having GRUB online means not being able to boot into Linux. However, I am able to boot into a live USB system if I need to. This I did in order to follow some of the other suggestions.
Once in my live system, I mounted the target partition into /mnt, chrooted into it, and ran:
Code:
sudo update-grub
No problems yet...until I ran:
Code:
grub-install /dev/mmcblk0p5
And got this:
Code:
grub-install: warning: File system 'ext2' doesn't support embedding.
grub-install: warning: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged.
grub-install: error: will not proceed with blocklists.
This even though the blkid command returns this line for /dev/mmcblk0p5:
So blkid sees this as an ext4 system, but grub-install sees it as an ext2...?
Fixing From BIOS
Another post that I saw mentioned that someone had fixed this problem on his computer through BIOS. His machine booted using EFI as the default, but could be switched to use legacy boot. I discovered that this laptop, too, has a legacy boot option. After enabling this option, I wiped and reinstalled the BunsenLabs system using the legacy-boot version. This time, there was no "GRUB not installed" error.
However...
Upon booting the machine up after the install, I got the same error as before:
Code:
file '/boot/grub/x86_64-efi/normal.mod' not found
NOTE: During this latest reinstall, I noticed another issue. It may or may not be related to the problem at hand, but I'll throw it out there just in case. While formatting the computer's hard drive during the install, I found that I couldn't change the boot flags on any of the partitions. The Windows system is stuck in bootable mode, the Linux partition is non-bootable, and it didn't let me modify either one. Again, this may or may not have any bearing on the GRUB issue. If not, you can ignore it and I'll work on it on my own time. (That is, unless you do happen to have some ideas...)
If anyone has any suggestions on what I should try next or noticed something I did wrong above, I would greatly appreciate it. And if you need any more information on the computer or the OS, I'll be glad to provide them.
The computer has windows 11 so I would expect that if you want to dual boot with it you would need to install Bunsen Labs in UEFI mode, generally that requires booting in UEFI mode. If you have a UEFI system, it will show a partition named EFI system partition. Mount to access it and see if you have a folder for Bunsen Labs containing its Grub efi boot files.
Quote:
grub-install /dev/mmcblk0p5
That's not correct. It would only work if you had another Linux OS with Grub or another bootloader to boot that partition. You need to install to the device: /dev/mmcblk0 or if it is UEFI, to the EFI partition. Did you have options during the install as to where to install Grub and which option did you choose?
Grub in my experience has always shown Linux ext2, ext3 and ext4 filesystems as ext2 so that is not a problem.
If you do have a UEFI system, you must have the EFI partition labelled as boot, esp which you should be able to do in GParted. Not sure what the problem is there. You should be able to have windows UEFI and Bunsen Labs Legacy. The only problem with that is that Grub will not boot an EFI install of windows if Grub is Legacy so you would have to access the BIOS firmware to switch to the other OS. Windows will of course, only boot itself.
If you have an EFI install, the EFI partition must have the boot and esp flags set. Do you have or can you get GParted (Linux partition manager) and use that? Linux systems do not need a boot flag set to boot only with EFI.
Quote:
Of course, not having GRUB online means not being able to boot into Linux
Not sure what you mean by that?? The suggestion in post 2 at the thread below or similar? That is only needed to install Grub EFI files and from a Debian/Ubuntu derivative using apt-get.
After enabling this option, I wiped and reinstalled the BunsenLabs system using the legacy-boot version. This time, there was no "GRUB not installed" error.
However...
Upon booting the machine up after the install, I got the same error as before:
Code:
file '/boot/grub/x86_64-efi/normal.mod' not found
You may be able to boot the system from the bios boot menu by selecting the drive from the boot menu options. It being an hp maybe the F9 key to use when first booting.
If so, after booting running the following commands may fix without having to reinstall:
Thanks for all the replies. This morning, I did a fresh install of BunsenLabs in UEFI mode and noticed the same GRUB install error from before. Here it is in verbatim:
Code:
GRUB installation failed
The 'grub-efi-amd64' package failed to install into /target/. Without the GRUB boot loader, the installed system will not boot.
When I chose the option to continue without the bootloader, I got this message:
Code:
No boot loader installed
No boot loader has been installed, either because you chose not to or because your specific architecture doesn't support a boot loader yet.
You will need to boot manually with the /vmlinuz kernel on partition /dev/mmcblk0p5 and root=/dev/mmcblk0p5 passed as a kernel argument.
Quote:
Did you have options during the install as to where to install Grub and which option did you choose?
No, I wasn't given an option.
Quote:
You may be able to boot the system from the bios boot menu by selecting the drive from the boot menu options. It being an hp maybe the F9 key to use when first booting.
Actually, that F9 window is how I was able to boot into my live USB system. This menu also displays the Linux partition, but when I select it, I am redirected to the same GRUB rescue prompt from before.
Quote:
If you do have a UEFI system, you must have the EFI partition labelled as boot, esp which you should be able to do in GParted.
I was able to do this with my live USB, but again, I got the GRUB rescue prompt once I tried to boot.
Quote:
You need to install to the device: /dev/mmcblk0 or if it is UEFI, to the EFI partition.
I'm thinking I'll need to install to the EFI partition. How do I do this?
Your first post says you installed BunsenLabs Linux, efibootmgr shows mx19 installed, they are both based on debian.
Right--I'd installed MX originally, but eventually decided to use BunsenLabs instead. I've been noticing that, when I wiped MX, it left behind some partition labels like that.
Quote:
from the live iso open a terminal post the ouput of the following:
Code:
sudo mount /dev/mmcblk0p5 /mnt
df -h
sudo parted -l
ls /mnt/boot/grub
cat /sys/firmware/efi
Code:
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 376M 6.0M 370M 2% /run
/dev/sda1 1.3G 1.3G 0 100% /run/live/medium
/dev/loop0 991M 991M 0 100% /run/live/rootfs/filesystem.squashfs
tmpfs 1.9G 12M 1.9G 1% /run/live/overlay
overlay 1.9G 12M 1.9G 1% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
tmpfs 1.9G 4.0K 1.9G 1% /tmp
tmpfs 376M 12K 376M 1% /run/user/1000
/dev/mmcblk0p5 35G 3.2G 30G 10% /mnt
$ sudo parted -l
Warning: The driver descriptor says the physical block size is 2048 bytes, but
Linux says it is 512 bytes.
Ignore/Cancel? ignore
Model: Philips USB Flash Drive (scsi)
Disk /dev/sda: 8087MB
Sector size (logical/physical): 2048B/512B
Partition Table: mac
Disk Flags:
Number Start End Size File system Name Flags
1 2048B 6143B 4096B Apple
2 2615kB 5171kB 2556kB EFI
Model: MMC DA4064 (sd/mmc)
Disk /dev/mmcblk0: 62.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 274MB 273MB fat32 EFI system partition boot, esp
2 274MB 290MB 16.8MB Microsoft reserved partition msftres
3 290MB 24.4GB 24.1GB ntfs Basic data partition msftdata
5 24.4GB 61.9GB 37.5GB ext4 root-bunsenlabs3 boot, esp
4 61.9GB 62.5GB 611MB ntfs Basic data partition hidden, diag
Error: /dev/mmcblk0boot0: unrecognised disk label
Model: Generic SD/MMC Storage Card (sd/mmc)
Disk /dev/mmcblk0boot0: 4194kB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
Error: /dev/mmcblk0boot1: unrecognised disk label
Model: Generic SD/MMC Storage Card (sd/mmc)
Disk /dev/mmcblk0boot1: 4194kB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
$ ls /mnt/boot/grub
ls: cannot access '/mnt/boot/grub': No such file or directory
$ cat /sys/firmware/efi
cat: /sys/firmware/efi: Is a directory
$ ls /sys/firmware/efi
config_table esrt fw_vendor runtime-map vars
efivars fw_platform_size runtime systab
Right--I'd installed MX originally, but eventually decided to use BunsenLabs instead. I've been noticing that, when I wiped MX, it left behind some partition labels like that.
That is on the EFI partition and with an HP, you usually won't be able to change it (delete) with efibootmgr. Go into the BIOS Setting with F10 and delete it.
You have boot and esp on the Bunsen Labs partition as well as the EFI partition where it should be. Use GParted to remove them from partition 5.
If you are using a 'live' Linux, chroot from the USB to the hard drive to install the grub-efi files, explained at the link below.
Err:1 http://ftp.uk.debian.org/debian buster InRelease
Temporary failure resolving 'ftp.uk.debian.org'
Err:2 http://security.debian.org buster/updates InRelease
Temporary failure resolving 'security.debian.org'
Err:3 https://deb.debian.org/debian-security buster/updates InRelease
Temporary failure resolving 'deb.debian.org'
Err:4 http://pkg.bunsenlabs.org/debian lithium InRelease
Temporary failure resolving 'pkg.bunsenlabs.org'
Err:5 http://pkg.bunsenlabs.org/debian buster-backports InRelease
Temporary failure resolving 'pkg.bunsenlabs.org'
Err:6 http://ftp.uk.debian.org/debian buster-updates InRelease
Temporary failure resolving 'ftp.uk.debian.org'
Reading package lists... Done
W: Failed to fetch https://deb.debian.org/debian-security/dists/buster/updates/InRelease Temporary failure resolving 'deb.debian.org'
W: Failed to fetch http://pkg.bunsenlabs.org/debian/dists/lithium/InRelease Temporary failure resolving 'pkg.bunsenlabs.org'
W: Failed to fetch http://pkg.bunsenlabs.org/debian/dists/buster-backports/InRelease Temporary failure resolving 'pkg.bunsenlabs.org'
W: Failed to fetch http://ftp.uk.debian.org/debian/dists/buster/InRelease Temporary failure resolving 'ftp.uk.debian.org'
W: Failed to fetch http://security.debian.org/dists/buster/updates/InRelease Temporary failure resolving 'security.debian.org'
W: Failed to fetch http://ftp.uk.debian.org/debian/dists/buster-updates/InRelease Temporary failure resolving 'ftp.uk.debian.org'
W: Some index files failed to download. They have been ignored, or old ones used instead.
I tried another live USB to see if the error would persist. I get the same thing on both systems, so I'm guessing it's a hardware problem with the laptop itself.
By the way, I think installing Linux messed up the laptop's wireless card. I've only been able to connect to wi-fi via a USB dongle. I don't mind not having internal wi-fi; I just thought I'd mention this in case it might have some bearing on the issue at hand.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.