Hardware Used in This Book
As we'll see in Chapter 3, Linux supports a very wide range of hardware. For this book, I've used a few embedded systems to test the various procedures. Table P-1 contains the complete list of systems I used.
Some of these systems, such as the iPAQ or the Dreamcast, are commercial products available in the mainstream market. I included these intentionally, to demonstrate that any willing reader can find the materials to support learning how to build embedded Linux systems. Sega Dreamcast consoles, for instance, are available for less than $50 on eBay. Though they boot using a specially formatted CD-ROM, they are one of the cheapest ways for learning cross-platform development with Linux. You can, of course, still use an old x86 PC for experimenting, but you are likely to miss much of the fun given the resemblance between such systems and most development hosts.
Apart from running on a slew of embedded systems, Linux also runs on a wide variety of workstations. Throughout this book, I used the hosts presented in Table P-2. Though the Apple PowerBook served as my main development host for the book, I had to use an x86 host for some aspects of building x86-based embedded targets, because some software components cannot be cross-compiled for an x86 target on a non-x86 host. Both GRUB and LILO, for example, have to be built on an x86 host. I can report, nevertheless, that I wrote this entire book on a PowerBook host running the Yellow Dog Linux distribution. This is yet another sign that Linux changes the computing world's landscape by providing one standard operating environment across a very fragmented world of hardware.
To illustrate the range of target architectures on which Linux can be used, I varied the target hardware I used in the examples between chapters. Table P-3 lists the target architecture used in each chapter. Though each chapter is based on a different architecture, the commands given in each chapter apply readily to other architectures as well. If, for instance, an example in a chapter relies on the arm-linux-gcc command, which is the gcc compiler for ARM, the same example would work for a PPC target by using the powerpc-linux-gcc command instead. Whenever more than one architecture is listed for a chapter, the main architecture discussed is the first one listed. The example commands in Chapter 5, for instance, are mainly centered around the ARM, but there are also a few references to PPC commands.
Though Table P-3 lists the target being used in example for each chapter, it provides no indication as to the host being used, because it makes no difference to the discussion. Instead, unless specific instructions are given to the contrary, the host's architecture is always different from the target's. In Chapter 4, for example, I used a PPC host to build tools for an x86 target. The same instructions could, nevertheless, be carried out on a SPARC or an S/390 with little or no modification. Note that most of the content of the early chapters is architecture independent, so there is no need to provide any architecture-specific commands.