Installing Arch Linux, issue with `modprobe efivars`
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.
Leave your terminal open to the chroot, but switch to a new console (Alt+F2)
Check that the
/sys/firmware/efi/efivars
directory exists. If it does not, thenmodprobe efivars
, but I suspect you will find it does.-
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
-
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.