I'm porting UEFI BIOS. I'd like to download an Linux image (bzImage) to system memory by TFTP in my UEFI shell, and then boot the OS directly. I know we generally need another bootloader to do that. But is it possible to boot Linux in UEFI BIOS? And how?
A UEFI firmware (not BIOS, that's something else) can only load UEFI applications corresponding to the EFI firmware architecture. So you can't directly load a Linux kernel, but you should be able to load a UEFI bootloader which will then load the Linux kernel into memory and jump to it.
Since kernel version 3.3
It become possible to compile a Linux kernel with the EFISTUB option, which allows to directly execute/load the kernel as an EFI image without having to use a boot loader.
Basically, yes but firstly you need to enable the network card so that your target machine can ping the FTP server to get the kernel image.
Checkout the EDK Boot Loader (EBL) WiKi SourceForge link.