The UEFI hype and Microsoft's lies More than a year ago I wrote a document that I named "UEFI fact sheet" ( http://sininenankka.dy.fi/~sami/uefi_fact_sheet.php ). The purpose was to create a more truthful counterpart to a similarly named document which UEFI forum was spreading on various internet sites. For a long time my document was the first search result on most search engines when searching for "UEFI fact sheet". Recently I noticed that Bing (which is owned and maintained by Microsoft) had put my document to the second page of search results, and the first result now points to a disinformation document that is published by the UEFI forum. ( https://uefi.org/sites/default/files/resources/UEFI_Drive_Partition_Limits_Fact_Sheet.pdf ) For some reason the UEFI firmware is often being advocated by telling actual lies about both UEFI and BIOS, which is supposedly meant to be completely replaced by UEFI. Although these lies are technically not true, they are somehow achieved the status of an "official truth", to such extent that those claims are now everywhere and it is easier to find online sources that support them than it is to find those that don't. Those lies are being spread in such a determined manner that if you try to correct those claims in the articles of the Finnish Wikipedia, the changes are immediately reverted and you even get personally attacked by the user who reverted the changes. In general the most hardworking UEFI advocates seem to be people who don't do stuff like install alternative operating systems on their computers. They certainly don't write computer code that would have something to do with the motherboard's firmware or interface with the peripheral devices. The need for UEFI-type motherboard firmware is usually reasoned with seven main arguments: - BIOS does not support hard disks that are larger than two terabytes (2 TB). - BIOS supports only 512 bytes long sectors. - BIOS supports only MS-DOS-style partitioning scheme, and doesn't allow the use of GPT partitioning. - BIOS supports only four partitions. - BIOS is insecure. - BIOS is 16-bit. UEFI is either 32- or 64-bit, so UEFI must be better. - UEFI is extensible, unlike BIOS. None of those claims can withstand a closer scrutiny. Let's go through them all in detail. "BIOS does not support hard disks that are larger than two terabytes (2 TB)." When Microsoft claims that BIOS is limited to hard disks of two terabytes in size, they actually mean that Windows is limited to that size when it is installed to a computer that has BIOS. For some reason Microsoft has always hardcoded their operating systems to use some specific partition table: MS-DOS has its own partition table, which is also used by all Windows versions, if the firmware type is BIOS. If the computer has a UEFI firmware, the Windows versions newer than Windows 7 use GPT partitioning. Windows 7 and older versions cannot boot from UEFI at all. Microsoft's operating systems don't support other partitioning schemes than those two. The MS-DOS partition table doesn't support partitions that are larger than 2 TB. For the original IBM PC BIOS the maximum size of a hard disk is 8,4 GB, assuming that the sector size is 512 bytes. That was more than enough at the time. During the 90s the actual sizes of hard drives were rapidly approaching that limit and something had to be done. In 1995 the BIOS specification was appended with "Enhanced Disk Drive Specification" ( https://archive.org/details/specs-edd30 ) which added the support for 64-bit sector indexing, which also works better with non-spinning disks that don't have a physical CHS* geometry. It means that a storage device can now have 2^64 blocks, which leads to the largest possible drive size of 8'589'934'592 terabytes with block size of 512 bytes. Currently hard drives use only 48 physical bits for actually addressing the sectors, so the limits of the current BIOS interface are not going to be a problem in the near future. Often this claim also comes in a different form: "BIOS cannot boot from a larger partition than 2 TB." Of course that's also not true, because BIOS does not care at all about how the drive is partitioned - BIOS only reads the first sector from the drive and executes it as a computer code if it has a boot sector signature. Actually UEFI is in this sense more limited than BIOS, because UEFI needs to have a FAT32 filesystem on the EFI partition, which makes it practically impossible to boot from a media that does not support random access (such as tape drives). *cylinders, heads, sectors "BIOS supports only 512 bytes long sectors." The original IBM PC BIOS supports all sector sizes from 128 bytes to 64 kilobytes. The only limitation is that the sector size must be a power of two, or else the "Disk Base Table" ( https://stanislavs.org/helppc/dbt.html ) cannot show the exact sector size. This was also fixed by the Enhanced Disk Drive specification that was mentioned in the previous chapter. It added a "Get Drive Parameters" function that tells the sector size by one byte precision. The claim that BIOS would be limited to 512 byte sectors is not true. "BIOS supports only MS-DOS-style partitioning scheme, and doesn't allow the use of GPT partitioning." This claim is also a lie. BIOS doesn't actually "support" any partitioning scheme at all - instead BIOS is completely partition-agnostic and does not care at all how the drive is (or isn't) partitioned. Therefore using GPT partitioning with BIOS is very well possible and most operating systems can do it. Actually UEFI is again the more limited system here. According to its specification, UEFI supports booting only from drives that have either GPT- or MS-DOS-style partitioning scheme. Most UEFI implementations support only GPT partitioning. BIOS makes it possible to use also other partitioning schemes than those two. ST-DOS, an operating system that I wrote, uses its completely own partitioning scheme, which is so portable that by using it it's possible to copy the entire contents of the physical drive to a larger drive without changing anything. With GPT partitioning it is not possible. ST-DOS's partitioning scheme also supports an unlimited amount of partitions, and the maximum size of a partition is (2^16)*(2^64)*(2^8) bytes which results in 281'474'976'710'656 terabytes. Unfortunately UEFI doesn't work with ST-DOS's partitioning scheme because UEFI is hardcoded to only GPT and MS-DOS partitionings. "BIOS supports only four partitions." This claim is based on the previous claim, which implicates that BIOS is somehow hardcoded to support only MS-DOS's partition table, which can only divide the disk to four partitions. Therefore the claim is not true. "BIOS is insecure." This claim is probably based on the assumption that security can always be improved by adding some cryptography. That's why UEFI has a functionality called "Secure Boot", which checks that the digital signature of the bootable program binary (which is usually the bootloader of an operating system) before running it. In practice it has been proven to be nearly impossible to create an actually working implementation of Secure Boot, and UEFI firmwares have been suffering from ridiculous security vulnerabilities that have rendered the whole Secure Boot completely ineffective. Secure Boot only checks the EFI binary that is loaded from the EFI partition. It doesn't detect much more probable threats, such as changes in the actual operating system's filesystem made by some malware program in an attempt to start itself during the early initialization phase of the operating system. In addition to that most motherboards allow changing the CMOS settings programmatically from the operating system itself, which means that any malware code with sufficient permissions can easily just turn off the whole Secure Boot functionality. In practice the only guaranteed-to-work way to protect the boot security is to physically write protect the boot media containing the operating system, the firmware ROM chip and also the CMOS chip that contains the firmware settings. Actually that's how it was done before the UEFI buzz became mainstream. "BIOS is 16-bit. UEFI is either 32- or 64-bit, so UEFI must be better." Intel's x86-family CPUs have many different operating modes. They start up in the so-called "real mode", where the operand size is 16 bits. The programmer can then chance the operating mode to whatever they like the most. Most modern operating systems use either 32- or 64-bit CPU modes. x86 CPUs have also the so-called "operand size prefix", which allows using 32-bit general purpose registers while the CPU is in 16-bit real mode. In Turing-complete systems the bit width does not limit in any way what can be done with the computer. Either BIOS nor UEFI doesn't do anything that would greatly benefit from larger bit width of the default operand size. The BIOS interface had to be made for some specific CPU mode, and for historical reasons that CPU mode is the 16-bit real mode. It makes it possible to call the BIOS services from every CPU mode, be it a 16-, 32- or 64-bit mode - therefore it makes sense that the BIOS API of the IBM PC compatible computers is 16-bit. Some BIOS services temporarily switch the CPU to 32-bit mode. In UEFI's marketing material it is often stated to somehow be UEFI's benefit that the CPU "is already in 32-bit mode" when loading an operating system. In practice switching the CPU mode is such a small part of initializing an operating system that it is utterly insignificant. At most this makes it more difficult to load 16-bit operating systems. "UEFI is extensible, unlike BIOS." Again a lie. BIOS has been extensible from the very start and it has been defined in its specification. Practically every graphics card has a BIOS extension on its ROM chip, as well as disk controller cards and network adapters that support booting from network. IBM has released instructions for making BIOS extensions in their book "IBM Personal System/2 and Personal Computer BIOS Interface Technical Reference" ( https://archive.org/details/bitsavers_ibmpcps2PSTechnicalReferenceApr87_5816663 ) in chapter 4-12 Adapter Rom. Why does this all matter? The actions of those who spread the marketing lies of UEFI are unethical from many reasons. First of all, lying is bad. It is especially bad when it is done in an attempt to achieve financial gain. Microsoft has implemented an artificial limitation to their operating system, to create an artificial compatibility mismatch between old computers with BIOS firmware and new computers with UEFI firmware. The same operating systems cannot be used on them both anymore. This is how people are being forced to buy new computers when there is nothing technically broken with the old one. Spreading erroneous assumptions about technology is harmful. The IT industry is already in crisis because of the lack of skilled labour. New junior programmers cannot code anymore ( https://nmn.gl/blog/ai-and-learning ) because they don't know what they are doing. In school world concepts are either not taught at all ( http://techrights.org/n/2025/02/25/Sami_Tikkanen_Explains_What_Happened_to_Computer_Science_Educat.shtml ) or they are taught in some twisted way wrong. UEFI's marketing lies are very likely to cause more confusion and misconceptions to people who aim at becoming IT professionals. They need to manually learn away from these misconceptions, which is usually harder after having already once adopted the wrong information as the truth. The industry is in a particular need of developers who are able to do kernels, drivers and other low-level program components, and not many new ones aren't being graduated anymore. The development has taken an unsustainable route and any marketing buzz that contains technically untruthful claims always makes it worse. In addition to all that, the transition from BIOS to UEFI in the motherboard firmwares has made it difficult (and in many cases impossible) to boot other operating systems and programs than Microsoft Windows. With BIOS you can boot any operating system without having to do any tricks - all you need to do is to insert a bootable disk in a drive and the computer boots from that disk regardless of what type of partition table or filesystem is used by the operating system to be booted. With computers that have UEFI just disabling the Secure Boot is often already very difficult, and it may completely prevent technically less adept people from installing alternative operating systems. BIOS is an abbreviation of words "Basic Input/Output System". In practice it means firmware that offers runtime services for the operating system to do basic things like write text on the screen, read keystrokes from the keyboard and read and write to the persistent storage media. IBM PC is not the only computer platform that has BIOS-like runtime services on its ROM. BIOS has made it possible for computer hobbyists to create own operating systems without having to separately write drivers for all different models of graphics cards, disk controllers and keyboard interfaces - the driver code has been a part of the motherboard's ROM firmware and abstracted behind the calls to the BIOS runtime services. UEFI doesn't offer any helpful runtime services, so it will also make indie operating system development so laborious that people will mostly just stop doing it. And it will make the lack-of-skill crisis of the IT industry even worse.