Linux seems like an ideal OS to use to run a lot of devices -
And as a result, Linux use keeps growing rapidly year on year in devices.
But actually building that custom Linux for an embedded project is rather hard. As Ev Williams, the CEO of Twitter recently commented, "Twitter is too hard to use. Amazing it's grown considering." You could make the same comment about embedded Linux. Although here you could say, "Linux is too hard to build for embedded."
Why is building a custom embedded Linux so hard? Typcially, when you get the source code for an operating system or any large software system, there also must be a way to "build" the source into a runnable binary. This involves compiling, linking, creating libraries and a final binary image.
But the thing we know of as "Linux" is not a complete operating system. In fact, it's only the OS kernel. If you want applications, libraries, shells, or games to run on that kernel - in short, if you want a complete operating system - you need to find them on the internet in their separate projects. And there is no standard build system for this collection of stuff. Instead, every project has its own scripts and makefiles for building its little component.
Now what you really want as an embedded developer is to very easily
And preferably to do all of this without getting a PhD degree in OS building.
- There is no cost for the software itself, so it's easy to get a project going quickly and for low cost.
- All of the source code is available, so finding and fixing problems is considerably easier.
- The software is highly modularized, making it easy to build something with exactly the features you want.
And as a result, Linux use keeps growing rapidly year on year in devices.
But actually building that custom Linux for an embedded project is rather hard. As Ev Williams, the CEO of Twitter recently commented, "Twitter is too hard to use. Amazing it's grown considering." You could make the same comment about embedded Linux. Although here you could say, "Linux is too hard to build for embedded."
Why is building a custom embedded Linux so hard? Typcially, when you get the source code for an operating system or any large software system, there also must be a way to "build" the source into a runnable binary. This involves compiling, linking, creating libraries and a final binary image.
But the thing we know of as "Linux" is not a complete operating system. In fact, it's only the OS kernel. If you want applications, libraries, shells, or games to run on that kernel - in short, if you want a complete operating system - you need to find them on the internet in their separate projects. And there is no standard build system for this collection of stuff. Instead, every project has its own scripts and makefiles for building its little component.
Now what you really want as an embedded developer is to very easily
- Pick the architecture you want to use, whether it's some flavor of ARM or x86 or some of the other ones popular in embedded.
- Dial in the basic capabilities of your system, like whether or not you have graphics or maybe a limited amount of memory or storage
- Easily trim or add packages to get exactly the functions you want and to fit your available storage
- Oh yeah, and reuse the packages and patches you applied in your last embedded project to get your application to work.
- Then you want to hit a button and compile a working OS and create a bootable image
And preferably to do all of this without getting a PhD degree in OS building.

Comments
Sounds like something that is easily done in *BSD.
OpenWRT maybe? I've used it on several projects and its quite easy...
Umm, ok. I don't get your post at all.
You're saying "You can go get the individual pieces of a Linux distribution and put them together yourself, but it's a lot of work." And this is true. That's why the vast majority of Linux people *don't* do that. Instead, they use a distribution that's already done all the hard work for them and then customize from there (usually, installing/removing packages) and go from there.
Your article pretends that you *have* to go to the metal to use Linux. Which is patently untrue. The major Linux distributions are available for free and for x86 and ARM. You can use Android if you wish; it just has a very different userspace from a conventional Linux distribution. There's also Meego, which is an Intel-Nokia collaboration so I would expect you to know about this. There's Wind River and ACCESS and things if you want to pay someone for their customized distro.
If you *need* to, you *can* go to the really really low level. With apologies to Mystery Science Theater 3000, "Just because you can compile, doesn't mean you *should.*"
It seems like you should know all this, but the article says right in the title that embedded Linux is "hard" (implicitly "harder than other embedded systems") and this because it's hard to build a distribution. Which I hope by now I've shown is a non sequitur. Yes, it's hard to build a distribution, but you don't have to build a distribution to do embedded Linux. I'd hope Intel's Open Source engineering manager would have known this eons ago. More like this and I'll have to seriously reconsider whether I should keep supporting Intel.
Windows CE with MS Paltform Builder?
So, every distribution has some sort of distro contructor, do we want to build from source or build a distro?
If it's from source, consider gentoo. Gentoo was so good that even MS pursued the founder and hired him of course, albeit for a short while.
Interesting comments - I think I see what the confusion is. It's not that creating an embedded device with Linux is harder than other operating systems. But a lot of independent work means there is very little coherence here. Something that I'm working on fixing. :-)