Increasingly, embedded system designers are called upon to include networking capabilities in their products. An embedded system may, for example, include a web server to enable web-based configuration. It may also enable remote login for maintenance and upgrading purposes. Because the Linux kernel, and the networking software that run on it, are often the preferred software for running networking services that require high reliability and high availability, you will find Linux particularly well suited for networking applications.
In this chapter, we will discuss the setup and configuration of the networking services most commonly found in embedded Linux systems. This discussion will include instructions on how to cross-compile each networking package and how to modify the target's root filesystem to run the services provided by each package. In particular, I will cover the use of the internet super-server (inetd), remote administration with SNMP, network login through Telnet, secure communications with SSH, serving web content through HTTP, and dynamic configuration through DHCP.
There are, of course, many other networking services that can run on top of Linux. Though I couldn't realistically cover all of them in a single chapter, the explanations included here should provide you with some hints as to how to install and use other networking packages. Also, I will not cover the setup, configuration, and use of actual networking hardware. If you need information regarding these issues, have a look at Running Linux and Linux Network Administrator's Guide, both published by O'Reilly. I will not provide in-depth coverage, either, of the configuration and use of the various networking packages, since many already have entire books dedicated to them. For more information regarding Linux networking in general, look at books such as the ones mentioned earlier that discuss the issue from the perspective of a server or a workstation.
This chapter builds on the material presented in Chapter 6. The operations presented here are done as part of building the target's root filesystem described in Chapter 6. Though these operations are supplemental, we discuss them here because they are not essential to the creation of the target's root filesystem.