Alpine and UEFI

From Alpine Linux
Revision as of 22:22, 18 August 2019 by Mckaygerhard (talk | contribs) (explain the UEFI vs BIOS problem for alpine linux: draf 1 no alpine cited her for now)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

What is UEFI? A new (relatively) firmware system (almost mini OS embebed), for computers that manages the early boot process

When something new comes.. all the bad things become good and news become bad!

Now it's on regular home/office made computers and some ARM server boards. It's a huge bloated mess of a spec due manufacturers try to include many things with the UEFI Forum org!

The problem it's doesn't matter. It's what we have. Learn it or become obsolete.


In the old days, BIOS (for Basic Input Output System) was how computers booted from the 1980s onwards. But now in newer hardware for laptops and desktops computers the UEFI (for Unified Extensible Firmware Interface) defines a software interface between an operating system and platform firmware into the vendor hardware.

What that's means?

UEFI replaces the BIOS firmware interface originally present in all IBM PC-compatible personal computers, early modern computer's UEFI firmware implementations provide legacy support for BIOS services.

Why change, why more complications?

Stupid companies.. due stupid is booting Windows from drives bigger than 2TB (something that linux can just do easyle due partitioning and boot management). But really, the issue is about 16-bit processors.

All the system included 16-bit CPU inside? with UEFI will be pure 64-bit

As example: a top of the range Skylake i7-6700k still has an 80286 embedded in it - for the people who insist on using BIOS. Indeed. But BIOS strictly only supports 16-bit 8088-derivative processors.

All of this crap are just due redmon's company operating system limitations in fact! due intel, amd and others can easyle provide for many more years an 80286 embedded in each processor

The history so far

Due newer incoming 64-bit incoming processors the older computers boot process are not more possible. It started life on Itanium (Intel's first 64-bit processor) systems. Itanium had no support for 32-bit, and certainly no embedded 80286, so they had to come up with a different system.

Intel developed the original Extensible Firmware Interface (EFI) specification. Some of the EFI's practices and data formats mirror those from Microsoft Windows.[4][5] In 2005, UEFI deprecated EFI 1.10 (the final release of EFI). The Unified EFI Forum is the industry body that manages the UEFI specification.

Alpine UEFI support

The support for EFI System Partition was started in the Alpine 3.7.0 new mayor release, preliminary support in that version does not create the EFI Partition, only has support for existing ones or manually created.

Started in the Alpine 3.8.0 new mayor release support in the installer for the GRUB boot loader was added so now Linux experimental users can play with combinations of solutions and proper UEFI complete installations.

EFI System Partition are not the complete overall of the UEFI, it's just the need minimal infrastructure to property boot by and UEFI modern machine.

BIOS boot process for newbies

BIOS only supports two methods of booting - loading 448ish bytes of 8088 machine code from the start of a floppy disk, or the same from the start of a fixed IDE disk

BIOS can only assume one boot loader occupying the start of hard drive. So each OS overwrites it with its own boot loader. Messy messy. There's also the 2TB issue I mentioned before

In order to make your drive more useful, it's split up into partitions - chunks of disk which can be treated as independent drives from inside your OS. Ruindows (following on from MS-DOS) only supports one method for partitioning its boot drive on BIOS systems: "MBR"

MBR cannot handle numbers bigger than 2,199,023,255,552. It is impossible to talk about any drive beyond 2TB using MBR layout. So if you're booting from it and use BIOS, you MUST use MBR (because that's all Windows supports) - and you simply can't use any space beyond that if your boot drive is 3TB or bigger.

For now. Ish. Any modern motherboard (some 2011 onwards, all with a Ruindows 8 logo on the box) is using UEFI natively, but most can emulate BIOS enough for you to keep booting with BIOS.

UEFI boot process for newbies.. i mean for complications

Well, let's start with installers. It'll read a UDF or FAT32-formatted USB drive or DVD, and look for the file /efi/boot/bootx64.efi and run it. An app, written in the UEFI "OS". It can be anything! Here's classic text adventure Zork, as a UEFI app.

It's possible to make boot media which is valid for both UEFI and BIOS. Unfortunately, in a slightly user-unfriendly twist, you (the user) need to pick the right boot entry. For example, on the wife's PC, a USB stick gets listed as both "UEFI: Sandisk Cruzer Edge" and "USB: Sandisk Cruzer Edge". Just... make sure you pick the right entry. It's impossible to change mode after this point.

It uses a different partitioning system called GPT instead of MBR, and secondly it creates an extra ~100 meg partition called the "EFI System Partition" - a FAT32 partition where the boot loader apps get installed to (no more boot sectors).

Each OS will stick its boot loader somewhere in the ESP, then send a signal to the firmware to write this new loader's location into the CMOS. Each entry installed in this manner will get its own listing in your "boot devices" list on the firmware - so if you installed MACOSX, you'll have "MACOSX Boot Manager" as an entry next to your DVD drive and hard drive after you reboot. This is why you don't do the old "unplug drive A when installing a different OS to drive B" thing, or swap cables, or anything like that. You should only have one ESP, the one on drive A.

What's this infamous "secure boot"

It's a way for your motherboard to prevent tampering of your OS (e.g. boot-sector viruses, or backdoors installed without your knowledge .. umm suuureeeee). You can provide a list of certificates you trust, then the firmware enforces that everything involved with the boot process (not just the boot loader, but the OS kernel itself, and all your device firmwares like your GPU BIOS) are signed with a trusted key.

It stops you booting "untrusted stuff" (suuuurrreeee). So you can sign your own crap, and trust the certificate you used to do that signing. Or you can get your crap signed by Microsoft - every motherboard has a small list of pre-trusted certificates which includes Microsoft's cert, which they'll let anyone use for a small fee.

How to boot older things?

Must be disable the Secure Boot, but that option will not remains forever.

Overall notes and conclusions

UEFI is buggy due Motherboard manufacturers dont implement property the specs, and hire the cheapest developers to work for them, so problems will come so far!

BIOS has been around a couple of decades longer, so has a couple of decades of extra bug fixing applied. Problems exist but with solutions!

It's not malice, it's incompetence. But the solution isn't sticking with BIOS - it's learning a new set of workarounds.

See Also

  1. Newbie_Alpine_Ecosystem
  2. Alpine newbie apk packages
  3. Alpine newbie desktops
  4. Alpine newbie developer
  5. Alpine newbie lammers