The wonderful thing about being stuck on the tarmac for three hours on a flight with “unforeseen technical difficulties” is that you have a lot of time to catch up on your reading. So you can thank airline-related mechanical failure for this week’s article on the BIOS and OS portability.
Scanning a pile of unread links in Google Reader lead me to this Slashdot article – “Installing Linux On ARM-Based Netbooks?” The anonymous submitter is asking why it’s difficult to change the operating system on low-cost netbooks (from Microsoft Windows CE to Linux, or from one Linux distribution to another). Even the article says “ARM” in the title these cheaper computers run a variety of processor architectures (ARM or MIPS based).
Most of these low-end netbooks load the OS from flash memory instead of a hard disk or solid-state drive (SSD). This means the computer is hard-coded to launch the primary operating system (in most cases, an older version of Microsoft Windows CE). A normal PC user would just put a different OS on a USB thumb drive and change the BIOS settings … but these platforms don’t have a BIOS.
Since the platform designer assumed the end user won’t change the OS, they use a simple bootloader to bootstrap the OS image in flash memory. The good news: the system is cheaper. The bad news: upgrading the system or changing the OS requires a soldering iron, “1337 skillz” or whatever computer they use in the movies that hacks into high-security networks in under sixty seconds (I checked Fry’s already, they’re out of stock).
I do want to point out this is not a knock against ARM or MIPS. I know, I’m writing an article for an Intel website, but the lack of OS portability has more to do with firmware than hardware (bootloader versus BIOS). The PC’s inherent configurability made it very easy for operating systems like Linux and FreeBSD to gain traction on Intel Architecture platforms, and using something like a bootloader to latch one specific OS to the platform takes away from that flexibility.
A good example is the MeeGo project, which recently released a downloadable image for version 1.0. It’s pretty easy to test it on a netbook with the right hardware requirements … download the image file, write it to a USB key and boot to the USB key. With a few hours of its release I had MeeGo v1.0 installed on my Intel Atom-based netbook. It’s the same experience as booting to a Microsoft Windows or Linux install DVD.
On Intel Architecture platforms, MeeGo uses the same boot process as any other Linux-based OS:
- BIOS initializes the hardware at power-on
- BIOS builds a set of runtime interfaces for the OS
- BIOS bootstraps the OS loader
- OS kernel uses information from the BIOS to determine how to configure the system
MeeGo is portable to non-Intel platforms like the ARM-based Nokia N900, but that OS image is ported to one specific system. Getting it to boot on a different platform is probably non-trivial, because there isn’t a BIOS to handle the OS-to-hardware interface.
So what does this have to do with embedded computing? These inexpensive netbooks are prime examples of how embedded systems were traditionally designed … the hardware and software get tied together in a way that makes it difficult to separate them. In today’s embedded computing market, this model is starting to go away.
With more COTS hardware available for extreme temperature ranges and low-power consumption applications, embedded developers have to consider application portability. Embedded platform designers can address this need by making it easy for their end customer to swap operating systems, which is a key feature of BIOS in the Intel Architecture ecosystem. Keep this in mind the next time you’re designing an embedded solution.
American Megatrends, Inc. (AMI) is an Affiliate member of the Intel® Embedded Alliance.
Got a question about BIOS? … then it’s time to Ask a BIOS Guy! Find Brian on Twitter (@askabiosguy) or leave your question in the comments. Your BIOS question may be featured in an upcoming ‘Ask a BIOS Guy’ article.