[Oberon] UEFI

Michael Schierl schierlm at gmx.de
Thu Nov 26 23:42:17 CET 2020


Am 25.11.2020 um 23:29 schrieb Liam Proven:

> I have read that it is possible to write small apps that run directly
> in UEFI, including in FreePascal:

Even possible for larger apps. There is e.g. efivim for those who like
the Vim text editor and want to use it from the UEFI shell. Or there is
Python for UEFI if you want to execute scripts from the UEFI shell (or
use it as a powerful calculator).

> If someone ported the native x86 version of Oberon to run entirely
> from UEFI. Compile the entire OS into a single binary that didn't boot
> from hard disk, but actually fit inside the EFI System Partition as a
> single file and booted and ran straight from there, without a disk
> partition.

You have to keep in mind that while UEFI applications don't *need*
hardware-specific drivers, they also cannot *have* hardware-specific
drivers. You can only use what the EFI Boot Services provide.

In particular:

- No multiprocessing (you can only use one core of your multicore
   machine)
- No multithreading (you cannot run stuff in the background)
- Graphics are limited to the EFI GOP framebuffer (quite slow compared
   to "real" drivers, no hardware acceleration)
- Mouse is either not supported at all, or very primitive (on my
   notebook, the internal touchpad does not work, but an external USB
   mouse works with 2 buttons and no scroll wheel
- Only wired internet, and only if your device has a netboot ROM (can
   boot from network). Internet settings are limited to usual netboot
   settings (so only DHCP which has to supply an IP to devices that want
   to netboot).
- The limit to 4GB of RAM is not that bad (yet). Certainly better than
   640KB.

Without the mouse limitation, it might be possible to run some Oberon on
it. The question is whether it would be any fun.

> It's probably the only remotely modern OS in the world that could fit
> and could do this.

If you take one of the small rescue Linux distributions that completely
fit into initramfs (maybe strip down the kernel to only include the
drivers you need), and put SYSLINUX, the kernel and an initramfs
directly into the ESP, you get a system that is much more usable. As
Linux can mount filesystem images inside FAT32 partitions just fine, you
can even have some persistent data that way.


Regards,


Michael


More information about the Oberon mailing list