I rebooted my Eee PC this morning after several weeks of uptime. It came back with networking not working. Since it took me ages to work out what had gone wrong, and Google was no help, I think I should write it up for everyone’s benefit.
I run Ubuntu Hardy Heron (8.04) on my Eee PC 701, with the array.org kernel, and I use Wicd to manage my network connections. This last detail is significant.
The symptoms observed, after much prodding and poking, were as follows:
ifconfigreported only the loopback interface,
lo. My wired (
eth0) and wireless (
wifi0) interfaces were gone.
ifconfig -a, however, listed all the expected interfaces.
- I was able to get wired ethernet working by typing
sudo ifconfig eth0 upfollowed by
sudo dhclient eth0at a command prompt.
The actual problem was that Wicd wasn’t starting correctly, but it took me a long time to work that out.
On a typical desktop machine, the network management daemon
(e.g. Network Manager or Wicd) takes over configuration of the
network interfaces. By running the daemon directly (
/usr/sbin/wicd) instead of via the
script, I was able to see what was really happening.
The Eee PC has a solid state disk; to minimise wear, I use a
small RAM disk for logging. I’ve got 2 GB of RAM, so space isn’t a
problem. However, on reboots, the RAM disk is emptied. It turns out
that I hadn’t rebooted the machine since upgrading to the latest
version of Wicd. (The previous one put its log files in a different
location.) Upon installation, the
directory had been created, and the daemon ran happily. After a
reboot, though, this directory was no longer there. The daemon
expected to be able to open a log file in that directory, and just
gave up and died when it couldn’t.
My quick solution was to modify the
script that starts the daemon. It’s just a small shell script
wrapping the Python script. I added a second line before the actual
#!/bin/bash mkdir -p /var/log/wicd /usr/lib/wicd/wicd-daemon.py $@
I’m going to look into submitting a proper patch to Wicd.
Update: It appears that this problem has been fixed in the Wicd trunk.