
64-bit Tiano Core UEFI for the Raspberry Pi 3 - Lwrless
https://github.com/andreiw/RaspberryPiPkg
======
Quequau
My understanding is that one of prerequisites of CoreOS is UEFI. The last time
I checked there wasn't much support for CoreOS on Raspberry Pi, so I wonder if
this might help.

~~~
andreiw
Maybe. I'll look.

------
floatboth
Is there much need for the big ass TianoCore? FreeBSD uses U-Boot's tiny
implementation successfully, it even supports netbooting

~~~
pritambaral
Not for regular purposes of booting Raspbian, or just a standard Linux
kernel(+initramfs). In fact, even u-boot is not needed to boot Linux, because
the RPi firmware is designed to boot Linux. FreeBSD uses u-boot because
otherwise it'd have to implement Linux's conventions for booting, and it's
just simpler to chainload via u-boot since u-boot already implements that.

~~~
andreiw
RaspberriPiPkg can’t boot Raspbian today, since the latter is 32-bit. Can boot
stock 64-bit SUSE and Ubuntu, though.

~~~
pritambaral
My point was, for booting Raspbian, this is _not needed_.

------
fao_
TianoCore was a horrible implementation of UEFI. When I used it to code
against it had several standard-divergent parts.

~~~
wolfgke
Can you give details?

~~~
fao_
The specific problems I had I don't entirely remember (It was around 3 - 4
years ago at this point). The bug I encountered was relating to escaping the
UEFI environment. My code was written to the UEFI 2.6 standards document, and
it turns out that TianoCore diverged from that document with relation to how
memory allocation was dealt with, and how setting up the post-boot environment
was done.

EDIT: I think that it was something along the lines of some implementations
(including TianoCore) required the ExitBootServices call to be performed more
than once to exit the UEFI-controlled environment correctly? Even after doing
that I had some problems with it.

~~~
mjg59
> I think that it was something along the lines of some implementations
> (including TianoCore) required the ExitBootServices call to be performed
> more than once to exit the UEFI-controlled environment correctly?

As hinted at in andreiw's reply, this is entirely spec-compliant (if really
annoying). Quoting from the spec:

"Firmware implementation may choose to do a partial shutdown of the boot
services during the first call to ExitBootServices(). A UEFI OS loader should
not make calls to any boot service function other than GetMemoryMap() after
the first call to ExitBootServices()."

~~~
fao_
Ah, yes you're right, I remember reading that now. This means that I truly do
not remember what the actual error was that caused me to give up.

------
andreiw
Author here, feel free to AMA.

------
znpy
Can it netboot?

~~~
andreiw
Not yet... the good news is that iPXE supports the SMSC USB NIC on the Pi. I
don't know if iPXE will work out of the box, but I certainly intend on porting
the iPXE NIC driver as a standalone (and GPL-licensed, of course) SNP
implementation so you can use it with UEFI's own PXE implementation or
anything else (like, _shudder_ , it's shitty network tools...).

The biggest possible barrier to that today, which is still unknown, is the
quality of the USB host controller. NICs use bulk, but there's no guarantee
that the host controller driver is good enough. Time will tell, I suppose...

