Network boot (PXE) from BIOS/EFI

biospxeuefi

What is the difference between these two loading schemas?

  1. PXE from BIOS.
  2. PXE from EFI.

I know that firmware passes control to NIC program which is stored in the NIC ROM. This program gives IP address over BOOTP and at least a path to the loader. This loader loads over TFTP into the NIC's RAM and begins executing. Then the loader (syslinux, grub …) loads kernel and initrd over TFTP/HTTP/FTP into the host RAM and passes control to kernel.

Why I must have two different loader versions (BIOS version and EFI version)?

Best Answer

I thought that loaders that have been retrieved by NIC firmware are executed by the NIC controller, but that's wrong. This loader is executed by BIOS or EFI. BIOS is 16-bit environment, EFI is 32/64-bit environment. Thus, loader must be compatible with execution environment. Thanks for link Managing EFI Boot Loaders for Linux

Related Question