Post by AragornPost by David BrownUEFI is a complete waste of time and effort. It added nothing useful
that you couldn't do with traditional BIOSes, but made everything more
complicated. In theory, it allowed for extensibility of different
pre-boot programs - in practice, there are a total of zero use-cases
for this. There is nothing that a UEFI BIOS can do that a
traditional BIOS cannot, and there is nothing that could not be done
better with a simple BIOS and a flash disk with a dedicated Linux
system for when you want something more complex (like settings with a
more advanced gui).
I'm not sure I agree with your assessment, David. For one, the legacy
BIOS is the main reason why x86-64 processors still have (and need to
power up in) a "real mode", i.e. the 16-bit mode that the 8086/8088
processors ran in, with only 1 MiB of addressable memory (of which part
is reserved for hardware access), no privilege separation, no memory
management unit, and all software having full access to all of the
hardware.
There is no need to make UEFI to solve that - just scrap the badly
outdated "real mode" and start code running in "sane mode" (I've
forgotten what that is called in modern x86 parlance - enhanced long
mode, or something). The only thing that is needed to make this work is
a very simple default setup in the memory management unit. Coreboot has
perhaps three or four instructions in "ancient mode" before jumping
straight to "sane mode" for everything else. There is no early reason
why BIOSes should do anything else. And there is certainly no need for
shells, hidden partitions, "extensible" firmware that is never extended,
"trusted encryption", or any of the other complicating twaddle of UEFI.
UEFI was created for one purpose, and one purpose only - it was invented
by Microsoft in order to make life difficult for anyone who wanted to
put something other than Windows on a computer. Everything else is just
an excuse with no real benefit to anyone.
Look at it this way - how often have you ever used your computer's UEFI
BIOS in a way that is different from a "traditional BIOS" ? Apart from
the inconvenience of having to waste a little disk space on a pointless
UEFI partition, what difference does it make? The answer is /none/.
Post by AragornRISC machines — which do not have a real mode, and which were never
designed to work with real-mode operating systems like CP/M or MS-DOS —
have already long used an EFI. So while UEFI does have its flaws and
its corporately controlled committee overseeing the UEFI specification,
the legacy BIOS was an anachronism and really needed to go.
Now, that said, while I really see no use for a 32-bit UEFI on 64-bit
hardware — what genius ever came up with that idea anyway? — a 64-bit
UEFI running a 64-bit OS does offer things that a legacy BIOS cannot.
I think we should be clear here on the terms, and what we mean by them -
then it will be easier to see what I mean here.
The original PC BIOS had three functions. It would do the initial setup
of the system (ram initialisation, chipset configuration, etc.). It
would find and start the bootloader from the beginning of the disk. And
it provided services (such as INT 13, if my memory serves me) for the OS
to access hardware.
After a while, this third function was effectively useless as OS's
handled the hardware themselves.
BIOS's continued to be developed in an idiotic manner - often in
assembly, and invariably in real mode. That was the choice / fault of
the BIOS designers - there was no requirement to do so, and no purpose
in doing so. (They'd still need some real mode and assembly code to
support INT 13 and the rest, as long as they wanted to support DOS.)
Intel tried to change this by starting the EFI project. It petered out
from lack of support. Intel, Microsoft and some manufacturers got
together to make the UEFI specifications. These were full of a range of
ideas, features and complications which have never been used in
practice. Much of the point - for Microsoft - was to make sure Linux
would not work. Intel hoped it would let them scrap the silly old
compatibility modes on their cpus. Manufacturers hoped it would mean
the BIOS writers would use tools from this century and make BIOSes that
didn't look like DOS programs.
None of the complications of UEFI add anything of use. Almost none of
the new features are used. (There are a couple of things that OS's read
from it about motherboard and cpu setup, which could have been handled
in other ways.) None of the claimed benefits of UEFI, such as support
for sane cpu modes, big disks and C programming are in any way a feature
of UEFI - they could all have been part of any kind of BIOS.
The only things that are particular to UEFI are the signed firmware
stuff, and the ability to run different programs from a specific
dedicated partition. Those are the bits designed to be inconvenient,
and the provide no benefit.
Post by AragornFor one, it saves the boot loader and the kernel bootstrapping code from
having to pull all kinds of tricks for storing information about the
hardware in a memory location that won't get zapped when the kernel
bootstrap code switches the processor from real mode to protected mode,
PAE mode and then long mode (in that order). If on the other hand the
system boots in UEFI mode, then the kernel can obtain all information
about the hardware directly from the firmware, because the UEFI runs in
the same 64-bit address space.
That doesn't need UEFI - it needs a simple default "all memory mapped
directly and fully accessible" default to the memory management unit in
the x86 cpu, as is done on sensible processors, and then all the other
silly old compatibility modes can be scrapped (other processors never
had them).
Post by AragornAnother advantage — one that I personally have no use for, but many
other people do — is that a UEFI allows for booting multiple operating
systems installed on the same drive, even if those operating systems
don't have a boot loader that can do this. The legacy BIOS cannot do
that, because it requires one partition to be marked with the boot
flag, and then loads that partition's boot sector into memory, and then
passes control of the machine onto whatever code was in that boot
sector. The only caveat is that all operating systems on the same
drive have to be installed in either UEFI mode or in BIOS mode, but not
as a mix of both — such is possible if the operating systems are
installed on different drives, but not when they're on the same drive.
That doesn't need UEFI. People were using bootloaders to handle
multiple operating systems long before UEFI was conceived.
Post by AragornOf course, additions to the UEFI specification such as Secure Boot —
which should rather be called Restricted Boot, because that's what it
was really included for — are deplorable, as are hardware optimizations
like Fast Boot for making Microsoft Windows perform better at
boot-up. If Microsoft Windows needs to be able to boot faster, then
that's on the Microsoft developers, and then that should not require any
special modifications of how the hardware works. That's turning the
world upside down — which Microsoft has a long history of doing.
That all said, this computer here is a shop-built machine — the shop's
own "brand" if you will, and they're all sold without an OS installed —
and I've set it up to boot in UEFI mode, with both Secure Boot and Fast
Boot disabled. It runs Manjaro Stable, installed on a GPT-partitioned
SSD, and I've also added an older and slightly smaller HDD — also
partitioned as GPT — for storing my backups. No proprietary stuff either
— it's an MSI motherboard with onboard Intel 630 UHD graphics. And it
works like a charm. ;)
UEFI is no longer a problem (it was, when it was introduced). You make
sure you have your pointless little partition, then install your OS of
choice like normal. But that does not stop it being a useless waste of
effort.