Article: Book review: “Embedded Linux,” by John Lombardo
Aug 21, 2001 — by Rick Lehrbaum — from the LinuxDevices Archive — 12 viewsI first heard about Embedded Linux last summer at an embedded Internet workshop. I was standing near the Embedded Linux Consortium's exhibit area, when John Lombardo introduced himself to me and asked if I had any suggestions for small off-the-shelf x86 systems that could be used as the basis of a Linux-based home router appliance he was developing. After I showed him a small box at Lineo's booth and told him about some set-top-box platforms made by GCT-Allwell, he explained that he was working on the world's first book about Embedded Linux, and that it was slated to be published in July, 2001. “Great idea!” I exclaimed.
Well here we are, twelve months later, and Lombardo's Embedded Linux (ISBN: 073570998X; published by New Riders) is real! In contrast to the inevitable lateness of software releases, Lombardo's book seems to have hit the shelves of bookstores right on schedule. As far as I know, it's the first — and, at the time of this writing, the only — book published on this timely subject, thrusting it very much into the spotlight and making it a “must read” for all developers (and many others) interested in exploring the subject of embedding Linux.[Editor's note: Subsequent to publishing this book review, we learned of an earlier book on an Embedded Linux topic, which has a much more limited scope. Please see footnote.]
What's it about?
Embedded Linux covers a lot of territory. There are four main sections, on software, hardware, application development, and supplementary references, which are further organized into ten chapters and four appendices. Here's a summary of the table of contents . . .
- Introduction
Part I: Software
1: Software Considerations
2: Minimal Linux
3: Software Configuration
4: Booting Your Embedded Linux Device
Part II: Hardware
5: Hardware Considerations
Part III: Implementing an Embedded Linux Application
6: Embedded Linux Toolkits
7: The Embedded Linux Workshop
8: Static Application Example: Minicom
9: Testing and Debugging
10: Embedded Linux Success Stories
Part IV: Appendices
A: GNU General Public License
B: GNU Lesser General Public License
C: Booting from Flash Memory
D: Embedded Linux Resources
First impressions
The book is 192 pages long, and can be comfortably read in less than a day — providing you don't actually launch into the step-by-step Embedded Linux Workshop exercise (more on that later).
An exhaustive work on the subject of using Linux in embedded systems and smart devices could certainly occupy a lot more pages. Consider, for example, that LinuxDevices.com currently has more than 3,778 pages of online Embedded Linux related content! Obviously, picking the right 192 pages worth of information and presenting it in an interesting, useful, and well written manner must have presented a real challenge to the book's author — one that he handled quite skillfully.
Another challenge, when you're putting together the first book covering a hot new “disruptive technology” like Embedded Linux, is the race against time. First, there's the pressing need for a book on the subject. Although several Embedded Linux workshops and training sessions are now available, only a few developers can actually manage to attend them — so a technically oriented book on Embedded Linux is very much in demand. Students, professionals, and interested onlookers are hungry for something to read, in order to educate themselves about Embedded Linux. Another reason time is critical when producing a book like this, is that the subject matter itself is undergoing extremely rapid change. Companies rise and fall. Distributions come and go. New tools and capabilities arrive on the scene almost daily. So the cycle time in getting a book like this to market must be as short as possible.
Content summary
The book starts off with an excellent introduction to the idea of using Linux as an embedded operating system, proceeds to outline the options available for embedding Linux, and then launches into some valuable discussion of how to design an embedded based system on Linux, including software, hardware, and system-level considerations. The book is chock full of good practical advice for embedded developers in general, and especially for embedded Linux developers.
After covering all the requisite software and hardware fundamentals, Lombardo then settles down to the real meat of his book: the Embedded Linux Workshop (ELW). The ELW is an open source Embedded Linux toolkit that Lombardo created as a means to simplify the process of building Linux-based embedded applications, and to serve as a companion project for his book.
Over 35 pages (including all of Chapters 7 and 8) are devoted to the ELW, including step-by-step instructions on how to download the ELW toolkit and use it to implement a simple but real embedded project — embedding Minicom. If you're interested in really learning how to embed Linux, you'll find the sections on the ELW to be extremely valuable as a way to fully understand the basics of embedding Linux. The entire ELW toolkit is open source, and can be downloaded, configured, and tested on any desktop PC. The ELW is structured in a manner that the entire build process and all of the associated software are fully exposed to study and scrutiny. What a perfect project for a book like this!
Lombardo is clearly an embedded system developer, not a marketing guy, and this book is about as far from “marketing fluff” as you're likely to get. There are even sections on “Disadvantages of Open Source” and “When is Linux Inappropriate?” thrown in for balance. You certainly don't get the sense that you're reading the words of a religious zealot.
Who should read this book?
In the words of the book's back cover, “Embedded Linux is intended for designers of embedded systems and information appliances, as well as for general Linux programmers.” This includes not only software developers, but system developers. Even hardware engineers can find much of value in this book, thanks to several sections devoted to system design issues and debug considerations. It's also full of useful info on the techniques and issues associated with developing and supported embedded systems, in general. In short, I think anyone wanting to be more familiar with the concepts of embedded system development can benefit from reading this book — although nonprogrammers will find themselves skipping past several large chunks of code-intensive material. (Being more of a system/hardware guy, I just close my eyes during the scary software parts.)
In my opinion, however, the book's potential audience extends well beyond the developer community, to just about anyone wanting to know more about the growing trend toward using Linux as an embedded OS within all sorts of computerized widgets. Even for nontechnical readers, the book does an excellent job of explaining why Linux makes sense in embedded systems, how Embedded Linux is used in those systems, and what can be expected of Embedded Linux in the future.
Strengths and weaknesses
Overall, I found Embedded Linux to be easy and enjoyable reading (other than the aforementioned “scary parts”) and packed with useful information. Here are my thoughts on its overall strengths and weaknesses, along with some suggestions for “version 1.2” . . .
- Strengths:
- First to market — some book had to be first; this is the one. Fortunately, it's a good one.
- Good overview/introductory material — nice treatment of baseline Embedded Linux topics such as: “What is embedded?”, “Why embed Linux?”, “What sorts of software and tools are available?”, “What are the alternative approaches?”
- Insight into embedded system development issues — good coverage of fundamentals of embedded system architecture design, including things like: selecting hardware and software, system architecture tradeoffs, make vs. buy issues, etc.
- Great tips/techniques/tricks on embedded software development — the author shares his considerable experience as an embedded system developer throughout the book, in the form of a steady stream of suggestions, tricks, and caveats to help developers simplify and accelerate their embedded projects.
- The Embedded Linux Workshop — as mentioned previously, the ELW provides a superb learning tool and can also be useful as an Embedded Linux Toolkit for actual projects, should the reader wish to use it.
Weaknesses and suggestions:
- Limited breadth of resources — although the book provides a good general introduction to Embedded Linux, it seems a bit thin when it comes to lists of options and alternatives. Perhaps it would have been better to focus less on a single commercial Embedded Linux Toolkit (LynuxWorks BlueCat) and instead provide brief overviews of perhaps half a dozen of the major alternatives along with their differentiating characteristics (a comparison table of distro's would really be nice).
- Potential for confusion between Embedded Linux “distribution” and “toolkit” — in my opinion, the author blurs the distinction between Embedded Linux distributions — such as Lineo Embedix, MontaVista Hard Hat, and LynuxWorks BlueCat — and Embedded Linux toolkits. He defines toolkits as “designed to simplify the job of building the binary that runs your device.” Products such as Embedix, Hard Hat, and BlueCat, which are called toolkits in the book, contain both a Linux OS and toolkits for building target OS binaries. The Embedded Linux Workshop is appropriately termed a toolkit, because it doesn't include things like the Linux kernel, compiler, libraries, GNU utilities, etc. For that reason, I would prefer to to see the commercial products called Embedded Linux distributions, since they include both toolkits and the GNU/Linux OS.
- ELW coverage restructuring — given the extraordinary utility of the ELW, it might make sense to break the chapters on the ELW out into a separate section of the book and expand that coverage a bit. I suspect the ELW could be the subject of its own 192 page book. Especially once its SourceForge project takes off!
I think this book is well worth reading by anyone wanting to know more about Embedded Linux — whether a developer, a student, or someone curious about Embedded Linux for personal or professional reasons. I expect that this book, and in particular the ELW, will prove a popular adjunct to hands-on workshops, tutorials, and courses on Embedded Linux for the next several years.
The book's website
Recognizing that Embedded Linux is likely to generate a good deal of developer interest, and that the subject matter itself is truly a work in progress, Lombardo has created a companion website which will provide an ongoing source for errata, enhancements, and supplementary information, including links to other useful Embedded Linux resources.
Please note: There actually is another book, entitled Guide to ARMLinux for Developers, which was published in April 2001 — several months before Lombardo's Embedded Linux. However, it is much more narrowly focused and doesn't provide as much Embedded Linux background and general information on embedded system development techniques as Lombardo's book. You can read the Guide to ARMLinux for Developers online. A second edition, with chapters on porting to a new platform and much more on filing systems and system-generation tools, is due out later this year.
This article was originally published on LinuxDevices.com and has been donated to the open source community by QuinStreet Inc. Please visit LinuxToday.com for up-to-date news and articles about Linux and open source.