Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Doesn't this article confuse BIOS and UEFI? UEFI starts the bootloader in 32-bit mode, however, the classic BIOS still jumps through the bootloader in 16-bit mode.


That's a hard question to answer. On the original PC, ROM BIOS (Basic I/O System) was the name for both the (EEP)ROM-based firmware sitting at address F0000 and the INT based interface it provided to the OS.

This included how the system handed of control to the OS. BIOS just loaded the first disk sector and executed whatever it found there. MBR-based partition tables were a DOS-convention, the BIOS couldn't care less what the first disk sector did once it was in control.

When UEFI, the new boot interface, was invented, we needed a name for the old boot conventions. So we called them BIOS.

It's hard to claim the article confuses anything if the original word BIOS has such a confused meaning to begin with. If you say BIOS=PC firmware except the option ROMs, the article is correct.


The use of "BIOS" to name the PC, PC/AT, PC98, and suchlike firmwares long pre-dates the existence of EFI, and was not a reaction to it.

And the name is even more confusing than you paint it to be. The "BIOS" was also the bottom-half of MS/PC/DR-DOS, contained in IO.SYS in (pre version 6) MS-DOS and in IBMBIO.COM in PC-DOS and (post version 3) DR-DOS.


To clarify: The name BIOS was used for the very first PC, but there was no clear distinction made (or necessary) between firmware, boot protocol, interface, ...

When the old boot protocol needed a name, it got BIOS. This situation arose as reaction to the existence of the new UEFI boot protocol.

AFAIK, IO.sys/IBMBIO.COM was the interface used by DOS to the hardware (some kinde of HAL). Microsoft seemed to think every PC-clone vendor would implement its own firmware, and they would have to port IO.SYS for every platform. Happily, after I thinc Compaq reverse engineered the IBM BIOS, this turned out to be unnecesary: IO.sys was only ever implememented for BIOS.


Repeating that this was a reaction to EFI does not make it the case. That remains an ahistorical explanation.

And this despite the change of tack from from naming the firmware to naming the boot mechanism. The name used for the boot mechanism, also adopted long before EFI existed, was a "boot record" or "boot sector", subdivided by type into volume boot records and master boot records, terminology that goes back to the 1980s. The boot protocol was not actually named "BIOS" at all.

IO.SYS/IBMBIO.COM was the Basic Input/Output System, nomenclature (alongside the names of the other parts of the operating system: the BDOS, the command processor, and the housekeeping utilities) that MS-DOS got from CP/M. It was one of two things called that, the other being the machine firmware.

Neither was in any way influenced by something that did not exist until decades later. And although there was confusion between the two, it was not some generalized confusion about parts of the system in general. "BIOS" was not a name for a boot sector/record, even though one of the things contained within a boot record was a BIOS Parameter Block, which people had to regularly explain meant "the other thing that is called a BIOS". And people regularly distinguished in the 1980s between such things as "BIOS services" and the "ROM BIOS".


Let's try and find out:

https://www.pcjs.org/pubs/pc/reference/ibm/5150/techref/

First external PDF, pg 169 first talks about the ROM resident Basic I/O System (BIOS). From that point on, the text refers to this as BIOS, and says that a complete listing is provided in appendix A -- which has nothing concerning to IO.SYS. So it seems IBM considered only the ROM based part BIOS, without the IO.SYS part on the diskette. Even ROM BIOS seems to be a misnomer according to this document. But, as the BIOS sits in ROM and provides services, it is easy to see people talking about ROM BIOS and BIOS services.

As the 5150 has no hard disk, we need the 5160 manual for the HD boot protocol: pg 417 and 419 of https://www.pcjs.org/pubs/pc/reference/ibm/5160/techref/. It reads the first sector from the HD, and checks if the last 2 bytes have a specific value. If yes, it executes whatever it found there.

This de facto defines the MBR as that first sector, without ever calling it MBR. No partitions or Volume boot records exist at the BIOS level, these were purely DOS conventions. See

The Bios Parameter Block was a DOS structure in specific file systems like FAT16. It told DOS how to translate BIOS disk layout (e.g. Cylinder/Head/Sector) to DOS disk layout. See https://en.wikipedia.org/wiki/BIOS_parameter_block and note how details vary with DOS versions. Despite its name, the BIOS did not know or care about this structure.

UEFI is a new firmware standard for the PC, intended to replace the BIOS. At this point, the BIOS was used mainly for booting the OS and communicating PC parameters to the OS. Applications did not directly talk to the BIOS anymore - this was a habit from the DOS era. Seeing UEFI and BIOS today as only a boot mechanism is therefore not a 'change of tack'.

I found no references calling IO.SYS part of the BIOS. Maybe this was a CP/M convention?

Of course, the word BIOS did not time travel to after the release of UEFI. But if you need to describe the non-UEFI way with 1 word, what are you going to do? Call it "that stuff the BIOS did when it wanted to load an OS" is a bit long, so boot mode={UEFI,BIOS} seems reasonable to me. This nomenclature is regularly used in the references provided by https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_In...


> UEFI starts the bootloader in 32-bit mode

Or 64-bit mode, on most current systems.


it's a good point. the article doesn't say classic BIOS hands off to bootloader in 32-bit mode. most systems now-a-days leave off the system in 32-bit mode and that's the point this article makes. the only mention to classic BIOS is as an example of boot firmware.

having said that it is perhaps worth clarifying in the article that classic BIOS would hand off in 16-bit mode :)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: