on 27 August 2003
I came to this book as an experienced, professional embedded systems programmer with some rusty Unix, wanting to set up an embedded Linux system from scratch.
This is a highly diverse book covering device drivers, multitasking, Perl, webservers, and SQL.
For the very basic things such as LILO, partitions, and all the really basic Linux/PC-specific stuff it got me going very quickly.
The example code, from the CD, to run a simple webserver also got me off the ground rapidly - I had a webserver running in 5 minutes. Furthermore, the CGI intro was also very direct and worthwhile.
There is a section on device drivers which shows you how to create a simple driver, which is OK as far as it goes. But everything is based on step-by-step instructions with no real depth to any of it, just "do this, then do that," with little or no explanation of why. It could be considered concise but I found it too hasty. His example is a highly simplistic parallel port driver. My guess is that many more people would be interested in a serial or - even better - a USB driver, something requiring buffering, asynchronous signals and the like (the stuff of real-world embedded systems, in other words).
And there is a section I could have really used, on the subject of multitasking and interprocess communication. Luckily I've done this on Unix systems in the (distant) past, so I had a bit of a clue already, but for the novice my guess is that it would be of very little use. For example, he lists signals as an IPC method, and then never mentions them again. And a very key concept, that of processes themselves, is dealt with so shoddily that it managed to leave me questioning my own prior knowledge of the subject!
The general feeling I came away with from this book was that it tried to tackle far too much and that it was, frankly, written in haste. I learned something about things I previously knew nothing about, such as CGI, but I learned very little new about anything I already had a basic grasp of. The idea of combining such diverse subjects as SQL and interrupts in the same book is understandable, since an embedded systems designer may well need to understand both. But this book lacks a real target audience, so Khan has tried to gloss over many important subjects with the same brush, and ended up not covering any of them in depth.