BIOS
A BIOS or Basic Input-Output System is the very first program
(firmware) that is executed once the system is switched on. In most
cases it is stored in a flash memory in the motherboard itself and
independent of the system storage. BIOS launches the first 440 bytes (
Master Boot Record)
of the first disk in the BIOS disk order. Since very little can be
achieved by a program that fits into the 440-byte boot code area,
usually a common boot loader like
GRUB or
Syslinux or
LILO would be loaded by the BIOS, and it would load an operating system by either chain-loading or directly loading the kernel.
UEFI
UEFI has support for reading both the partition table as well as
understanding filesystems. Hence it is not limited by 440 byte code
limitation (MBR boot code) as in BIOS systems. It does not use the MBR
boot code at all.
The commonly used UEFI firmwares support both MBR and GPT
partition table. EFI in Apple-Intel Macs are known to also support Apple
Partition Map besides MBR and GPT. Most UEFI firmwares have support for
accessing FAT12 (floppy disks), FAT16 and FAT32 filesystems in HDDs and
ISO9660 (and UDF) in CD/DVDs. EFI in Intel Macs can also access
HFS/HFS+ filesystems, in addition to the mentioned ones.
UEFI does not launch any boot code in the MBR whether it exists
or not. Instead it uses a special partition in the partition table
called
EFI System Partition in which files required to be launched by the firmware are stored. Each vendor can store its files under
<EFI SYSTEM PARTITION>/EFI/<VENDOR NAME>/
folder and can use the firmware or its shell (UEFI shell) to launch the
boot program. An EFI System Partition is usually formatted as FAT32 or
(less commonly) FAT16.
Under UEFI, every program whether it is an OS loader or a utility
(e.g. a memory testing app or recovery tool), should be a UEFI
Application corresponding to the EFI firmware bitness/architecture. The
vast majority of UEFI firmwares, including recent Apple Macs, use x86_64
EFI firmware. The only known devices that use IA32 (32-bit) EFI are
older (pre 2008) Apple Macs, some Intel Cloverfield ultrabooks and some
older Intel Server boards that are known to operate on Intel EFI 1.10
firmware.
An x86_64 EFI firmware does not include support for launching
32-bit EFI apps (unlike x86_64 Linux and Windows versions which include
such support). Therefore the UEFI application must be compiled for that
specific firmware processor bitness/architecture.