Enabling eth1 in Slackware

A networking note to self
Created: 2019-05-28
Note
The moral of the story is that you have to enable interfaces in Slackware in /etc/rc.d/rc.inet1.conf

I had a problem: my desktop machine at work was crashing. The machine would completely hang, the monitors frozen with whatever image was last displayed. No response to keyboard input, nothing.

The first time it happened was after about two weeks of uptime. The hardware was brand-new and I’d assembled it myself from quality components. I figured it must be a fluke.

Then it happened two days later - and twice on that day. Then I had about another two weeks…​and another two weeks…​and then it got the point where I was surprised to find it running the next morning when I came into work.

I tried all sorts of things, but whatever was happening wasn’t leaving any trace in the system logs (nothing I could find, anyway).

Meanwhile, the other thing I noticed was that I would occasionally lose network connectivity. None of the other machines plugged into the same network switch were having issues.

Putting two and two together and crossing my fingers, I went ahead and bought an Intel NIC card to install. I’d always heard that the Intel chipsets had the best Linux support.

(Specifically, the card I bought was a Intel Gigabit CT PCI-E Network Adapter EXPI9301CTBLK.)

I installed the card, disabled the onboard Realtek ethernet adapter in the motherboard’s UEFI menu, and then restarted.

Honestly, I was expecting it to just work.

You have to explicitly enable eth1

What follows is my attempt to understand if the card was working at all and if Slackware was configured to use it:

man ip
ip link
ip eth1 help
ip link show eth1     # same info as ip link
ip link set eth1 up   # that works!
ifconfig              # now shows eth1

I knew that /etc/rc.d/rc.inet1 was responsible for bringing up the interface and I could see that it used a logger, but how to figure out where it was logging messages?

find /var/log -mmin -5 # finds files modified in the last 5 min
tail /var/log/messages # there we are!

Well, I can see that nothing is happening for eth1 (which I’d determined was my new card).

So I finally looked at /etc/rc.d/rc.inet1.conf. Oh, there it is, plain as day up at the top:

# This file contains the configuration settings for network interfaces.
# If USE_DHCP[interface] is set to "yes", this overrides any other settings.
# If you don't have an interface, leave the settings null ("").

And there’s the eth0 and eth1 entries:

# Config information for eth0:
IPADDR[0]=""
NETMASK[0]=""
USE_DHCP[0]="yes"
DHCP_HOSTNAME[0]=""

# Config information for eth1:
IPADDR[1]=""
NETMASK[1]=""
USE_DHCP[1]=""
DHCP_HOSTNAME[1]=""

Adding a "yes" for eth1 is all that’s needed:

USE_DHCP[1]="yes"

Running the rc.inet1 script clearly works after that…​and now I can ping out.

That’s it.

It’s been a week now with no crashes.