I like PC hardware. OK, that's sort of a lie; PC hardware infuriates me no end, because I can never find a motherboard with precisely the set of features I want, but it's the kind of infuriation that comes of having high expectations. My main PC is a self-built desktop system, and Apple simply doesn't have a desktop system offering the kind of longevity and flexibility that I want. PC hardware does, and this is great.

But Apple from time to time does some things which are really neat, and sometimes I find myself looking at those things and yearning for them. Operating system installation and disaster recovery is one of those things. There are all sorts of situations that might prompt you to install the operating system onto a blank machine. Perhaps it's a newly built system with empty disks. Perhaps your disk failed and you need to restore from backup. Perhaps you don't trust the Windows upgrade system and feel more comfortable with a clean install.

The normal way this works is that you have to find some install media from somewhere and pop them in the system. In times gone by, this perhaps wasn't a big deal, because every system had an optical drive, and came with optical install media. But it's the year 2015, and you can no longer count on having a CD or DVD drive in every machine.

Now we have USB install media, and they're great... as long as you created a USB key before you needed it. Being able to download an app from Microsoft to create a USB install drive for Windows 10 is all well and good if you can, you know, download and run the app, but it's a fat lot of good if you just stuck a new hard disk to replace the old one that died. And besides: that install DVD or USB key you made a year ago? They're obsolete! The operating system has been patched numerous times since then to make it better and more secure.

In these cloud connected times, it's easy enough to make sure your data is safely stashed away online, but you still need an operating system to get at it. And Apple's solution to this conundrum is very neat: even with a blank hard disk, the system firmware can connect to Wi-Fi or wired Ethernet, go online, and download the operating system directly from Apple. You can do a bare metal restore with nothing more than an Internet connection.

That's pretty neat. I would even go so far as to say as it's the only sensible way of handling one-off installs. Sure, you wouldn't want to image a thousand corporate desktops this way, but for a home user wanting to recover their system, it's the logical thing to do; it means there's no longer any need to worry about mislaid DVDs or USB sticks that you forgot to create.

On the face of it, however, this kind of thing feels very, well, un-PC. There are various moving parts needed to get online; you need a network connection and drivers and IP addresses and so on and so forth. These are things that are easy for Apple to produce, because Apple builds the entire widget, but seem a great deal trickier for the Wild West that is PC hardware.

The future is now

But the pieces needed to give everyone this kind of capability are coming together. The lynchpin of this is UEFI, the open replacement for the PC BIOS that handles basic hardware initialization and booting. While the traditional PC BIOS is severely limited in its capabilities, UEFI is a flexible, programmable environment that supports a wide range of capabilities. Among other things, UEFI firmware can use network adaptors, get an IP address from a DHCP server, and make IP connections.

The most recent version of the spec, UEFI 2.5, was finalized in April of this year. It included a new capability: HTTP-based network booting. Network booting as such isn't new; PCs have long been able to boot from networks using either DHCP or a predecessor to DHCP called BootP to figure out where to pull their operating system from. But traditional network booting is only well suited to corporate networks, where an administrator can control the DHCP server (to make it send the boot information) and host the install image.

But HTTP-based network booting opens that up. The UEFI spec still permits that corporate-style network booting using DHCP to configure things, but that's not the only option. One possibility it describes is for the system vendor to bake a URL into the firmware that it will use to boot from. This would be a good fit for, say, Lenovo, or Dell, or any other PC builder—they could just hard code the address and fetch the operating system accordingly. Another option is to simply ask the user for a URL to fetch and download. We could imagine combinations of options, too; a motherboard might come with a list of hardcoded URLs—perhaps Microsoft and a handful of Linux distributions—and offer a custom, user-entered option. This variety is all possible on the UEFI platform.

The spec is one thing; having firmware that actually works is another. Although UEFI is an open specification and, in theory at least, any developer could write a UEFI firmware, in practice, most UEFI systems use code based on the UEFI reference implementation provided by Intel. This implementation, called TianoCore, is then modified by firmware vendors such as AMI and Phoenix, and subsequently integrated into motherboards by Dell, HP, Lenovo, Asus, and so on and so forth.

That implementation was updated yesterday to include support for the new HTTP boot feature.

It will take a bit of time for those changes to actually find their way into end-user systems, however. The UEFI situation is unfortunately similar to that of Android, with Intel making improvements and updates to TianoCore and the downstream companies taking an age to deliver those updates to end-users (and often not providing them at all—motherboard vendors routinely stop providing firmware updates after a year or two).

But the basic building blocks are mostly in place. With a little effort from the PC industry to take advantage of this, we could see PC vendors, including self-built machines, offering the capability to directly boot from an Internet-based server and start an operating system installer. Ideally, Microsoft and others would publish simple URLs to point our UEFI firmwares at, and vendors could build a handful of download URLs into their systems to make things simpler still. We'd be able to install a current, fully patched version of Windows or Linux or FreeBSD without having to faff about with DVDs and USB keys.

There are still some wrinkles to this, of course. While it's straightforward for PCIe devices to contain an embedded UEFI driver, it's a bit more awkward for USB ones to do so. This means that it's easy enough for motherboard-integrated wired Ethernet and mini-PCI wireless cards to work with UEFI HTTP boot, but USB Wi-Fi and wired Ethernet are a little more challenging. These problems aren't insurmountable (tablets and laptops that use USB Wi-Fi can, for example, embed the necessary drivers into their own firmware) but can add a little complexity.

Nonetheless, the time is clearly right for the PC industry to make a push in this direction. Windows 10 had the novelty of being Microsoft's first operating system to ship on USB key as well as DVD. With a little effort from the PC industry, it could add a third option to those too: no install media at all.

Listing image by Long Zheng