Ethernetting Linux

Linux comes with the networking tools. Terry shows you how to get your Linux system talking over Ethernet.

Many people who install Linux on a machine at their workplace or university also wish to connect their machine to the local area network, so that they can make use of an Internet connection or other machines on the network. If you are one of these people and the only thing that has been stopping you is not knowing where to start, I hope this article will demonstrate that it is easy to do so-as long as you are properly prepared and know what things to watch out for.

The following are a few key areas to consider when connecting your Linux machine to a network:

  • The type of network you are connecting to.

  • The type of network interface card (NIC) you will need.

  • Configuring the kernel to support the network interface card.

  • Addresses-Host, network, broadcast and router.

  • Configuring Linux for your network connection.

  • Routing.

  • Names and nameservers.

The type of network you are connecting to is very important for a number of reasons. Most important is the many different network types. Currently Linux provides good support for Ethernet networks, but not much support for other network types such as ARCNet, Token Ring, FDDI and wireless LANs. If you intend to use an Ethernet network, keep reading. If not, don't despair—some very promising development efforts are under way to provide support for the other types of networks.


If you are fortunate enough to have an Ethernet network to connect to, then you still have to determine what type of cabling has been installed. Two popular types of cabling are employed, and you will need to find out which has been installed so you can choose an appropriate type of network interface card. The most popular cabling types are 10base2, commonly called “ThinNet”, which uses 5mm diameter coaxial cable and BNC (bayonet type) connectors, and 10baseT, commonly called “twisted pair” or “unshielded twisted pair”, which uses a cable with four conductors and an RJ-45 (telephone type) connector. The type of cabling will help determine what type of network interface card to choose for your Linux machine.

Ethernet Card

Your network interface card needs to have a connector that suits the cabling type you have installed. A number of modern cards come with both types of connector, and these are generally called “combo” cards. You should also think about whether you want a card suitable for an 8 bit slot or a 16 bit slot. The 16 bit cards perform better but are generally slightly more expensive. Another factor to consider is the bus type. If you are using a PCI machine, naturally you will need a NIC that suits a PCI bus. Be careful: you must also ensure that the type of card you choose is supported by a Linux kernel driver. It is best to avoid “clone” cards. While Linux supports some clones of popular cards, not all clones are the same. To be sure there are no problems, obtain the genuine article or try the card before you buy it. The Ethernet-HOWTO lists the types of cards supported by Linux and contains descriptions of each of them. You should refer to it before spending any money on a card.

The HOWTO recommends you opt for a 16 bit card such as the 3Com 3c503/16 or the SMC Elite 16/WD8013. Other cards which you might consider if you have a Vesa Local Bus or PCI motherboard are the BOCA Research cards. You might also choose an NE2000, but be careful, since some cards that claim 100% compatibility are not 100% compatible. (Their claims are based on being “100% software compatible”, meaning that they provide drivers for DOS that allow, for example, NetWare access. These drivers are useless with Linux.)

Cards to avoid are the 3Com 3c501 card (it performs badly and is broken by design) and Cabletron and Xircom cards, since free Linux drivers are unlikely ever to be available for their products, because these companies have chosen to require a non-disclosure agreement before releasing programming information, which would make it illegal to write a freely distributable Linux driver.

When installing the NIC you must make sure that the card's configuration does not clash with any other installed hardware. Some cards come with a DOS program to configure them. They use a programmable interface, and you should run this to “strap” the card with the configuration you want. You should be particularly careful of the IRQ, control port address and shared memory address settings. Each of these must be free for your NIC to use and be unused by any other hardware in the computer. I use a WD8003 strapped for control port 0x280, IRQ 7 and Shared Memory 0xD0000. Be careful if you use specialized hardware such as SCSI controllers or Multiport Serial cards, as they often use IRQ or Control Port settings in similar ranges, and may conflict. After you have physically installed the NIC, your next step is to check if your kernel already has support for your card. If it doesn't, recompile it so that it does. The easiest way to check if your kernel already supports your card is to reboot your machine. Check that the card is properly detected by the kernel by reading the messages the kernel prints when it is booting. If your card is properly detected, the kernel will print a message something like:

eth0: WD80x3 at 0x280, 00 00 C0 AD 37 1C WD8003,
        IRQ 7, shared memory at 0xd0000-0xd1fff.
        wd.c:v1.10 9/23/94 Donald Becker

The settings listed should match those that you configured your card for. If your card has not been properly detected, rebuild your kernel to make sure the kernel has support. This is pretty straightforward and you have likely done it before. You simply change to the /usr/src/linux directory and run make config. You will be prompted as to whether to include various drivers. The most important sections for you to answer Yes to are:

  • Networking Support?

  • TCP/IP networking?

  • Network device support?

  • The driver for your card.

After you have configured the kernel to support all of the hardware you have installed, you do a make dep; make to build the kernel. Don't forget to do a make zlilo so that lilo will run your new kernel when you reboot. If you are happy that all has gone well, then you can reboot your machine and check that your card is properly detected as described earlier. If it isn't, double check that you have done everything correctly and that you have no hardware conflict. If you still have problems, refer to the Ethernet-HOWTO again, as it has lots of information to help guide you through determining what might be the problem.