A review of the first embedded Linux book to hit the shelves—a must-read for anyone interested in this subject.
I first met John Lombardo at the Embedded Internet Conference in August 2000. John told me he was working on a book about embedded Linux, which would be published within a year.
In contrast to the inevitable lateness of so many software releases, Lombardo's Embedded Linux (New Riders, ISBN: 073570998X) 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.
Embedded Linux covers a lot of territory. There are four main sections: software, hardware, application development and supplementary references. These sections are further organized into ten chapters and four appendices, including chapters on booting embedded Linux devices, hardware considerations and testing and debugging.
The complete, detailed table of contents is available on-line at www.newriders.com/tocs/073570998X.pdf. A sample chapter was published by Embedded Linux Journal in the May/June 2001 issue.
This 192-page book can be read comfortably in less than a day, providing you don't 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 certainly could occupy a lot more pages. 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—a technically oriented book on embedded Linux is in demand. Students, professionals and interested onlookers are hungry for something to educate themselves about embedded Linux. Another reason time is critical when producing a book like this is the subject matter itself undergoes extremely rapid change. Companies rise and fall. Distributions come and go. New tools and capabilities arrive on the scene almost daily. The time cycle in getting this type of book to market must be as short as possible.
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 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 Seven and Eight) 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 understand fully 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 exposed fully 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 called “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.
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 as well. 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 information on the techniques and issues associated with developing and supporting embedded systems in general. In short, I think anyone wanting to become 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.)
Overall, I found Embedded Linux to be easy and enjoyable reading (other than the aforementioned scary parts) and packed with useful information. It provides insight into embedded system development issues—good coverage of fundamentals of embedded system architecture design, including things like selecting hardware and software, system architecture trade-offs, make vs. buy issues, etc. It's also a good source of 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.
On the negative side, the book has a limited breadth of resources. Although it 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 distros would be really nice).
Potential for confusion exists 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 see the commercial products called embedded Linux distributions, since they include both toolkits and the GNU/Linux OS.
Also, ELW coverage needs restructuring—given the extraordinary utility of the ELW, I would suggest that 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.
In summary, I give John Lombardo's Embedded Linux a “3.5 Tux” rating (on a scale of 4). It's first-to-market, well structured, has a lot of useful information and deserves high accolades for the excellent Embedded Linux Workshop and associated step-by-step examples.