From what you've already read in the post title, I'll explain how to boot ArchLinux (no idea if it works on other distros) without any kind of bootloader on EFI or UEFI computers.
First step
Install efibootmgr (if you don't already have it installed)
# pacman -S efibootmgr
Step
Mount efivarfs (if not already mounted)
# mount -t efivarfs efivarfs /sys/firmware/efi/efivars
Third step
Add your distro to your computer's "Boot Order"
# efibootmgr -c -L "Arch Linux" -l /vmlinuz-linux -u "root=/dev/sdaX initrd=/initramfs-linux.img"
in my case I did it like this
# efibootmgr -c -L "Arch Linux" -l /vmlinuz-linux -u "root=UUID=d5e93b09-02a8-4597-b059-3f87a8221825 initrd=/initramfs-linux.img quiet loglevel=0"
Final step
See if it worked
# efibootmgr -v
Delete your bootorder distro
If for some reason it hasn't worked for you or you just don't like the idea of not using a bootloader, you can do the following:
First step
See which is the number that corresponds to your distro in the bootorder
# efibootmgr -v
You should see something like this:
BootCurrent: 0000 Timeout: 0 seconds BootOrder: 0000,3000,2001,2002,2003 Boot0000 * Arch Linux HD (1,800,100000, bf49dd02-7af7-42bb-ac5d-967ea840e3f8) File (\ vmlinuz-linux) root = .UUID = .d.5.e.9.3.b.0.9 .-. 0.2.a.8 .-. 4.5.9.7 .-. B.0.5.9 .-. 3.f.8.7.a.8.2.2.1.8.2.5. .initrd =. /. initramfs-.linux..img .quiet .loglevel = .0. Boot2001 * USB Drive (UEFI) RC Boot2002 * Internal CD / DVD ROM Drive (UEFI) RC Boot3000 * Internal Hard Disk or Solid State Disk RC Boot3001 * Internal Hard Disk or Solid State Disk RC Boot3002 * Internal Hard Disk or Solid State Disk RC
You will see that it marks Boot0000 *, but in this case we are only interested in the number 0000
Step
Delete your bootorder distro
# efibootmgr -b 0000 -B
Source: Arch Linux Wiki