EFI stub

The (U)EFI firmware present in many newer computers can function as boot loader, allowing you to boot without installing a separate boot loader like GRUB2 or Syslinux.

= Partitioning = You need to create a partition of type "EFI System partition", which is EF00 on GPT and EF on MBR. Example using :

Create a FAT32 filesystem inside:

If you don't have mkfs.vfat (part of ) installed, you can use busybox:

= Kernel =

Configuration
In order to boot directly from UEFI, the kernel needs to have CONFIG_EFI_STUB support enabled.

UEFI does not pass kernel parameters to the kernel during normal boot, so you need to hardcode them via CONFIG_CMDLINE. Example for the root partition on /dev/sda2:

For GPT systems, using root=PARTUUID=... might be preferable. To find out, you can use gdisk:

Initramfs
UEFI does not support loading a separate initramfs for your kernel. So if you need an initramfs, it has to be built into the kernel via CONFIG_INITRAMFS_SOURCE. It must be an uncompressed CPIO archive with .cpio filename extension. Example for a genkernel initramfs:

Installation
Now build the kernel and copy the image to your EFI partition as. Example (with your EFI partition mounted to /mnt/EFI):

= Adding more kernels =

You can optionally make additional kernels known to UEFI. This is especially useful if you want to test more kernels or dual-boot with another operating system. These will be shown in the boot selection prompt, normally shown after you press a hotkey at the right time during system initialization.

Ensure that you have CONFIG_EFI_VARS enabled in your kernel, install and make them known to your UEFI.

= Further reading =
 * EFI Stub - booting without a bootloader Blog posting which this article is partially based on.
 * GPT fdisk homepage with information and tutorials about GPT partitioning.
 * EFI bootloaders listing alternative ways to boot an (U)EFI system.