Most, if not all, cable modems are easily configured for use with Linux. Most cable modems have two possible interfaces for connection to your computer: Ethernet or USB. If your version of Linux is like most, there is very little you will need to do to to get your cable modem working with an Ethernet interface as long as you have support for networking and the driver for your specific networking hardware installed.
An open Ethernet interface is the most likely means that a cable provider will use or recommend when setting up your cable internet service. Your ISP may even deliver and/or install a new NIC card to access the modem if you have no open Ethernet cards available.The cable connects to the modem, which then connects to your NIC using ordinary 10BaseT/100BaseT Ethernet cable. If you are uncertain about any of the above, and your modem and/or NIC are not already physically installed for you, read the Ethernet HOWTO and your cable modem's instruction manual before proceeding any further.
Do not try to install an NIC by yourself unless you are already familiar with the process or are assisted by someone who is.
For software support, most base installs of Linux distributions come enabled for TCP/IP networking and common Ethernet hardware drivers 'out of the box,' so if you are using a preconfigured kernel from a boxed or downloaded version of a Linux distribution you can probably skip to Section 2.4. If you don't know what a kernel is and/or are curious about it, see the Kernel HOWTO for more information.
The (Linux kernel) networking support requirements for use of a cable modem include the following, and which you will need to select using whatever kernel configuration front-end application (whether make config, make menuconfig or make xconfig) prior to compiling a custom kernel. For 2.4.x and earlier kernels under the heading 'Networking options' you will require 'TCP/IP Networking' along with 'Network Device Support,' go to 'Ethernet (10 or 100Mbit) Support' and enable your specific NIC driver. If you use the 2.6.x series, the heading 'Drivers' has a sub-heading 'Networking Support,' where you should enable 'Network Device Support' and 'Ethernet Connection Support/Ethernet (10 or 100Mbit), as well as your specific NIC hardware driver.
There seems to be no reliable data regarding testing bandwidth or performance of an Ethernet connection vs. the USB port of cable modems. In theory they should be equivalent, though some believe there is poorer performance (at least in Linux) using USB. Unless you have no way to use an Ethernet interface, have no ability to add a cheap NIC, or are just plain determined, there is probably no advantage to using USB. If so, you will need the following, in addition to Networking support outlined above: 1) USB Subsystem support 2) your host controller driver (UHCI, OHCI or EHCI) and one of the following:
Kernel Version 2.4.x
CDC Ethernet Support
For kernel 2.6.x you will need
Multi-purpose USB Networking Framework (CONFIG_USB_USBNET) with
CDC Ethernet support (CONFIG_USB_CDCETHER)
See Section 3.3 for instructions on how to load modules when time to test the modem.
First, plug in and turn on the cable modem. Connect your Ethernet card to the modem with 10BaseT/100BaseT cable into the non-USB interface if this was not already done for you. Be sure the modem isn't on standby mode or turned off; this should be obvious looking at the LEDs. The standby button is on the top of the device on most models. Note that your cable internet provider should be able to tell remotely whether your modem is connected and functioning properly, which is helpful to differentiate hardware from configuration problems on your end. They will also need the MAC (Media Access Control) hardware address of your modem to allow the device access to their network. If at any time you substitute one modem for another you will need to inform them so the MAC address can be updated and your access to the cable network restored.
Your modem will be assigned an IP address once connected for the first time that may remain the same or may change periodically depending on the IP address turnover of your ISP's DHCP server and how long you remain offline if you disconnect.
Debian requires you have a DHCP client package installed and running. As of this writing there are two user-space programs for this. In Woody (stable), there is the dhcp-client package, automatically installed as a part of the base packages as /sbin/dhclient. For Sarge (testing) and up, this has been replaced by the dhcpcd package. The latter has its configuration files under /etc/dhcpc, but nothing really needs to be modified if you have only one Ethernet card you will be using for the cable internet service. The dhcpcd daemon is easily installed for those using testing branch as root with apt-get install dhcpcd .
For .rpm- or .tgz-based distributions, I offer the following link that walks you through the setup of a DHCP client, in the DHCP mini-HOWTO.
Just run /sbin/dhclient or whichever client you use to get a dynamic IP address.