#1 2020-01-10 16:42:32
- light9876
- Member
- Registered: 2020-01-05
- Posts: 113
[SOLVED] grub-install: error «cannot find EFI directory»
I never had the following problem when I used to install Arch on an HDD.
But not on my new SSD, this is what I’m doing (note that when I do fdisk -l I can see the SSD has a GPT partitioning table):
1. I have been reading the following guides all day (and I’m following them):
https://wiki.archlinux.org/index.php/Installation_guide
https://wiki.archlinux.org/index.php/Partitioning
https://wiki.archlinux.org/index.php/Arch_boot_process
2. cgdisk /dev/sda and I create 3 partitions:
sda1; 2GB, code:ef00, name=efi
sda2; 200GB, code:8300, name=root
sda3; ~750GB, code:8302, name=home
3. I format all 3 partitions:
mkfs.ext4 /dev/sda1
mkfs.ext4 /dev/sda2
mkfs.ext4 /dev/sda3
4. Mount root:
mount /dev/sda2 /mnt
5. Install base:
pacstrap /mnt base base-devel linux grub efibootmgr
mkinitcpio -p linux
6. : All of the following commands give the same error: grub-install: error «cannot find EFI directory»
grub-install /dev/sda
grub-install —target=x86_64-efi /dev/sda
grub-install —efi-directory=/boot/efi —target=x86_64-efi /dev/sda
Can someone tell me what I am doing wrong please?
Last edited by light9876 (2020-01-10 18:37:40)
#2 2020-01-10 17:09:51
- Head_on_a_Stick
- Member
- From: London
- Registered: 2014-02-20
- Posts: 6,991
- Website
Re: [SOLVED] grub-install: error «cannot find EFI directory»
You forgot to mount the EFI system partition, it should be FAT-formatted (not ext4) and you should (arch-)chroot in before running the GRUB commands.
Step 4 should be
# mount /dev/sda2 /mnt
# mkdir -p /mnt/boot/efi
# mount /dev/sda1 /mnt/boot/efi
And step 6 should start with
Note that the UEFI grub-install command doesn’t need a block device.
EDIT: and the mkinitcpio command should be run from the chroot (although you probably don’t need to run it at all).
Last edited by Head_on_a_Stick (2020-01-10 17:11:24)
#3 2020-01-10 17:15:38
- light9876
- Member
- Registered: 2020-01-05
- Posts: 113
Re: [SOLVED] grub-install: error «cannot find EFI directory»
Thank you, I will try this immediately!
I am already doing arch-chroot /mnt but I forgot to mention it.
I will try now to format correctly and to mount /mnt/boot/efi
Last edited by light9876 (2020-01-10 17:15:58)
#4 2020-01-10 18:46:02
- light9876
- Member
- Registered: 2020-01-05
- Posts: 113
Re: [SOLVED] grub-install: error «cannot find EFI directory»
Thank you so much everything works okay now!
Only for future reference: the information you provided is written here:
https://wiki.archlinux.org/index.php/GR … allation_2
One final question:
I installed lxde and lxdm; then I logged in my user account. Now the partition /dev/sda3 that I created for /home, is not mounted at /home.
Instead, /home directory and all of its contents are resident on /dev/sda2
How can I fix this please?
Last edited by light9876 (2020-01-10 18:46:36)
#5 2020-01-10 18:58:31
- Head_on_a_Stick
- Member
- From: London
- Registered: 2014-02-20
- Posts: 6,991
- Website
Re: [SOLVED] grub-install: error «cannot find EFI directory»
light9876 wrote:
How can I fix this please?
Create an fstab line to mount /home correctly then move the contents over to the new partition.
If you need more help with that then please open a new thread, it is off-topic here.
#6 2020-01-10 20:09:57
- light9876
- Member
- Registered: 2020-01-05
- Posts: 113
Re: [SOLVED] grub-install: error «cannot find EFI directory»
Thank you so much! I am very happy with the generous support you and everyone else have given me! : ) God bless you!
Last edited by light9876 (2020-01-10 20:10:39)
Device Start End Sectors Size Type
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1050624 837228543 836177920 398.7G Linux filesystem
/dev/sda3 1452748800 1465147391 12398592 5.9G Linux swap
/dev/sda4 837228544 1452748799 615520256 293.5G Microsoft basic data
Partition table entries are not in disk order.
Disk /dev/sdb: 14.6 GiB, 15636364800 bytes, 30539775 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00378159
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 2048 30539774 30537727 14.6G c W95 FAT32 (LBA)
I am kinda lost here. I am not very experienced with ubuntu and might need a little detailed solution. I installed Windows 10 after ubuntu 16.10 and when I try to reinstall grub2 and it gives me the following error:
Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
Please help!
asked Nov 25, 2016 at 13:49
10
Try this:
Boot the Ubuntu Live Usb-Dvd.
Open a terminal,
Press Ctrl+Alt+T
Run it:
sudo -i
mount /dev/sda2 /mnt
mount /dev/sda1 /mnt/boot/efi
grub-install --boot-directory=/mnt/boot --bootloader-id=ubuntu --target=x86_64-efi --efi-directory=/mnt/boot/efi
reboot
answered Nov 25, 2016 at 15:28
kyodakekyodake
14.9k3 gold badges38 silver badges45 bronze badges
5
The root cause of your problem is Temporary failure resolving 'al.archive.ubuntu.com
This means that when you attempted this process the server was temporarily unavilable. You have 2 options.
1) Try again
2) Choose a different mirror By Opening Software & Updates and selecting a different server in the Download from drop down menu. (Choosing Other will run a series of tests to determine which is the best server for you.)
answered Nov 25, 2016 at 16:07
Elder GeekElder Geek
35.3k25 gold badges94 silver badges179 bronze badges
This article documents issues that might arise when trying to use or install GRUB2.
Installation errors
Installing GRUB2 from within a chroot
When a separate /boot partition exists, be sure to mount the target root partition before chrooting, but do not mount the /boot partition until after chrooting to the new environment. This is required because grub-mkconfig will not detect /boot as a separate partition and will assume the /boot directory and the root (/) directory are on the same partition.
Reinstalling the GRUB2 EFI boot manager entry
In case the boot manager entries need to be restored, they can be re-added without invoking grub-install. Load the efivars
kernel module and install sys-boot/efibootmgr:
root #
emerge --ask sys-boot/efibootmgr
Next add a boot menu entry:
root #
efibootmgr --create --gpt --disk /dev/sda --part 1 --write-signature --label "gentoo" --loader "\EFI\gentoo\grubx86.efi"
grub-install: error: cannot find EFI directory.
Note
The following examples presumes a 64-bit EFI GRUB2 install, adjust accordingly for 32-bit EFI.
root #
grub-install --target=x86_64-efi
grub-install: error: cannot find EFI directory.
Properly setting the GRUB_PLATFORMS variable in /etc/portage/make.conf (the first time!) as listed above should resolve this error. Set the GRUB_PLATFORMS variable then re-emerge GRUB2 using the following command:
root #
emerge --ask --newuse sys-boot/grub:2
In the case this error persists try forcing the install to the EFI directory by issuing the grub-install command with correct parameters for the --target
and --efi-directory
options:
root #
grub-install --target=x86_64-efi --efi-directory=/boot
grub-install: Attempting to install GRUB2 to a disk or partition
root #
grub-install /dev/sda1
Attempting to install GRUB to a partition disk or to a partition. This is a BAD idea. Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged.
There could be many reasons for this error to come up.
No mounted /boot
A /boot partition is not mounted.
No BIOS boot partition while using BIOS-GPT setup
This could mean there is not a EF02
or bios_boot
partition to embed the core.img file in.
Creating a little partition of a few hundreds kilobytes may be enough, although it is good practice to align this partition to 2048 sectors to avoid a performance penalty with the disk. A 1 MiB partition should work well.
Attempting to install GRUB2 in a partition
When attempting to install GRUB2 in a partition e.g. /dev/sda5 (for instance because the boot loader will be chainloaded by a different boot loader), simply add --force
option switch to force install.
Missing target detection
If grub-install does not print any errors message or if the error message is about scanning disk files and several platforms are enabled in /etc/portage/make.conf while nothing is installed on the disk, then edit the /sbin/grub-install script with a text editor of choice.
Change the platform variable to the appropriate platform for the current use case. The platform must be rightly set when emerging sys-boot/grub, else it will be incorrectly configured in the /sbin/grub-install script.
For example, to set the platform for «PC», change platform=qemu
to platform=pc
.
Note
This is true for GRUB version 1.99x only… for GRUB2 the correct file to investigate can be found at /etc/grub.d/00_header; change transform="s,grub,grub-qemu,"
to transform="s,grub,grub2,"
for instance to install rightly with grub-$platform-install.
grub-setup: no post-MBR gap
root #
grub-bios-setup
grub-setup: warn: This msdos-style partition label has no post-MBR gap; embedding won't be possible! grub-bios-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and its use is discouraged. grub-bios-setup: error: If you really want blocklists, use --force.
This error means that GRUB2 could not find the usual gap between the MBR and first partition of a disk. It is possible that the gap does not exist. Some tools (e.g. LiveUSB disk installer) format disks so that the first partition starts at sector 1 instead of 2048.
Repartitioning might be necessary to resolve the issue.
grub-install: embedding area is unusually small
root #
grub-install /dev/sda
grub-install: warn: Your embedding area is unusually small. core.img won't fit in it. grub-install: warn: 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.
There is not enough room at the beginning of the disk before the first partition.
In general this is a bit of trouble to fix. One or more partitions need to be resized in order to leave some free space at the beginning of the drive. The GParted LiveCD or SystemRescueCD are excellent tools to make this job less difficult.
If the swap partition is the first partition on the disk (e.g. /dev/sda1) it is possible to simply remove the existing swap space partition and re-partition the space. This resolution would avoid the need for booting into a live medium in order to resize a root (/) partition.
Boot errors
Troubleshooting steps in this section presume GRUB has been installed correctly, but issues are encountered when booting the operating system.
error: no such device
This error occurs when GRUB cannot detect a device for which to boot. This can occur for one or many of the following reasons:
- Physical issues
- The device has been intentionally removed/disconnected from the system.
- The device has been unintentionally removed/disconnected from the system. Perhaps a power or data cable is loose or disconnected, the device has been damaged via water, impact, electrical surge, or other type of damage, the device has failed to age or end-of-life component failure.
- Logical issues
- The device is connected, but the motherboard firmware has not detected the device. A common cause is a time-of-check to time-of-use style race condition: the device itself or the bus subsystem hosting the device (PCI, SATA, USB, etc.) has not (yet) been make visible to GRUB at the time GRUB performs device detection. This results in the device not being detected. GRUB does not automatically perform a device redetection, therefore the device will not be discovered. This can be fixed by disabling fast/quick boot on via the motherboard’s firmware. If disabling quick boot does not solve the problem, then it may be possible to add additional delays to the power-on self-test process so that the motherboard will give more time for all bus subsystems to initialize.
error: unknown filesystem
Unknown filesystem errors could be the result of GRUB not having the correct filesystem module inserted (loaded) at run time. This should be a result of the filesystem not being supported by the GRUB bootloader, or an issue within the grub.cfg configuration file. Generally GRUB does a good job of automatically probing filesystem when updating its configuration file.
This issue could also be a result of the device containing the filesystem not (yet) being detected by the system’s firmware. See error: no such device.
I just now encountered this issue. I booted a rescue USB stick. Let me describe the fix that worked for me.
Prowling around with gdisk -l /dev/sda
I can see that my original root partition is /dev/sda2
. To access it, I type sudo mount /dev/sda2 /mnt
So far, so good. Let me first describe what didn’t work, and then a solution. Some pages advise chroot /mnt
and then grub-install
, but this won’t work; giving the grub-install: error: cannot find EFI directory.
error.
Following other suggestions, I see that my EFI partition is /dev/sda1
so I try sudo mount /dev/sda1 /mnt/boot/efi
and chroot again. Now, grub complains about missing /dev
so I mount --bind /dev/ /mnt/dev
. … But then grub complains about something else. It’s snowballing out of control. chroot
is not the answer.
What did work was this: grub-install -d /mnt/usr/lib/grub/x86_64-efi --boot-directory=/mnt/boot /dev/sda
Note that the -d
flag is mandatory, as otherwise, grub tries to use /usr/lib/grub/i386-pc
from the rescue image, which does not contain the correct stuff.
Yayy! My system is now bootable again!
I recently dual-boot kali-linux-2016.2-amd64 with windows 10. After sometime I updated my windows 10 and due to this windows might have removed grub from the boot menu. Now I can’t boot kali-linux from the boot menu because it doesn’t appear there anymore.
So I decided to re-install grub by booting into Live-kali(Persistent) from USB. I entered the following command in the terminal:
fdisk -l
sudo mount /dev/sda* /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt
grub-install /dev/sda
CTRL + D
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/sys
sudo umount /mnt
After the 7th command-line I got this error:
asked Oct 31, 2016 at 5:42
It’s very hard to help you because you don’t know basic commands… but I’ll try okay?
- With
fdisk -l
you list your current partition, like your image. - With your image I can see that you have /dev/sda1 as EFI System, /dev/sda10 as Linux filesystem and /dev/sda11 as Linux swap. Keep this information.
-
When you boot with a live cd you must do a
chroot
for access your system, in other words, an operation that changes the apparent root directory for the current running process and its children. Lets go: -
mount your system at /mnt. Remember? Linux filesystem? Yes. It’s /dev/sda10. So do command:
sudo mount /dev/sda10 /mnt
.You are using
sudo
because you must have administrator permissions to do it. -
So, mount the temporary filesystems needed for programs work, with the commands:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
-
You are modifying your boot, so you need your /boot partition too. Some systems uses the same partition for the /boot directory and system root (/). If you don’t know what is your case, so at this point check if you have files in the folder /mnt/boot/ (you will find your kernel images, configurations , etc).
— If the /mnt/boot folder is empty, so you need mount the /boot partition. The only other possibly usable partition on your case is /dev/sda1, so will be it. Mount at /mnt/boot.
— If you found the files, so the another partition at /dev/sda1 should be really the EFI Filesystem, and it must be mounted at /mnt/boot/EFI.
-
With all mounted,change root directory using:
sudo chroot /mnt /bin/bash
-
Now, inside chroot, you can install grub:
sudo grub-install /dev/sda
answered Oct 31, 2016 at 6:03
4
You must log in to answer this question.
Not the answer you’re looking for? Browse other questions tagged
.
Not the answer you’re looking for? Browse other questions tagged
.