5

I am trying to install Linux on my new Vaio Pro which is an adventure in and of itself. I am trying to install Arch Linux with UEFI. I am following this tutorial (though I am using newer 2013.11 Arch Linux install media).

The problem is when I try to run modprobe -r efivars or modprobe efivars it tells me:

FATAL: Module efivars not found.

I can't find a solution to this anywhere on the internet. I get no error when I run modprobe efivarfs, but then when I try to install Grub it still says: EFI variables are not supported on this system.

4

There is a bit of a glitch in the tutorial for installing Archlinux on UEFI systems, but you can get past this particular hang issue like this:

You probably tried to run that modprobe command from inside the chroot of your target system. That won't get you anywhere; you need the functionality loaded in the host system's kernel. In fact my experience with the 2013.11 install media is that you don't need to load the module at all; it is already loaded. The problem is that the sysfs directories it uses are not accessible from inside the chroot, so that's the problem you need to fix.

  1. Leave your terminal open to the chroot, but switch to a new console (Alt+F2)

  2. Check that the /sys/firmware/efi/efivars directory exists. If it does not, then modprobe efivars, but I suspect you will find it does.

  3. Bind mount the directory into your choot (adjust if you are not using /mnt)

    mount --bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars
    
  4. Switch back to your first terminal (Alt+F1) and try your next command again. Depending on where you are in the install process, your next move is probably something like this: (assumes you have the FAT32 formatted BIOS partition mounted on /boot/efi inside the chroot)

    grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub --recheck
    grub-mkconfig -o /boot/grub/grub.cfg
    

If for some reason you run into problems in step #3 such as the directory you are mounting to not existing, then you haven't properly followed step #1. It is important to use the arch-chroot command to initialize the target system file space and only then use anther console to run the bind mount. The reason is that the arch-chroot script sets of several other bind mounts including ones for /proc and /sys that must be in place before you can add in the one that is missing for efi-vars. The above instructions have you opening a second console to do this specifically so you don't lose those other bind mounts while you add this one.

  • When running the command modprobe efivars from Step 2, I get the error modprobe: FATAL: Module efivars not found in directory /lib/modules/4.5.4-1-ARCH. Any ideas why I would be getting this? – Tyler Crompton Jul 2 '16 at 4:17
  • @Tyler that would happen if you are still in the chroot from the install procedure instead of a new root console from the archiso system as in step 1. – Caleb Jul 2 '16 at 10:04
  • 1
    Regarding step 2, I am getting the same modprobe error as @TylerCrompton yet I am not in chroot. Not sure where to proceed from here. – Jake Jun 24 '17 at 20:55
  • me too! (i.e. I am not in chroot) – dotbit Nov 6 '18 at 3:35
  • mount -t efivarfs efivarfs /sys/firmware/efi/efivars modprobe efivarfs modprobe efivars – dotbit Nov 6 '18 at 3:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.