Xenial Xerus has a peculiar bug that can cause a Raspberry Pi to lose Ethernet connectivity after a reboot. Several individuals noticed it after an
apt-get update && apt-get -y upgrade while following instructions for building Swift on a Pi 3.
To fix this, power down the Pi, remove the microSD card and reinsert it into another system and then mount the Pi filesystem with something like:
# mkdir pifs # mount /dev/sdX2 pifs
X depends on where your microSD was mapped. I turn to
dmesg|tail to find this:
[6099875.497524] usb-storage 2-4:1.0: USB Mass Storage device detected [6099875.497771] scsi host21: usb-storage 2-4:1.0 [6099876.498806] scsi 21:0:0:0: Direct-Access Generic STORAGE DEVICE 0817 PQ: 0 ANSI: 6 [6099876.499682] sd 21:0:0:0: Attached scsi generic sg8 type 0 [6099876.832189] sd 21:0:0:0: [sdi] 31293440 512-byte logical blocks: (16.0 GB/14.9 GiB) [6099876.833257] sd 21:0:0:0: [sdi] Write Protect is off [6099876.833266] sd 21:0:0:0: [sdi] Mode Sense: 23 00 00 00 [6099876.834375] sd 21:0:0:0: [sdi] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA [6099876.840573] sdi: sdi1 sdi2 [6099876.845072] sd 21:0:0:0: [sdi] Attached SCSI removable disk
In this case
/dev/sdi2 is used.
Once your filesystem is mounted navigate over to the Pi’s
# mount /dev/sdX2 pifs # cd pifs/var/log
grep -a, search for the phrase renamed from in
root@darthvader:/tmp/pifs/var/log# grep -a "renamed from" syslog Sep 4 21:59:59 ubuntu kernel: [ 5.533471] smsc95xx 1-1.1:1.0 enxb827eb9721d5: renamed from eth0
Notice the new Ethernet device name
enxb827eb9721d5. Now go to the
/etc/network/interfaces.d/ directory on the Pi filesystem:
root@darthvader:/tmp/pifs/var/log# cd ../../ root@darthvader:/tmp/pifs# cd etc/network/interfaces.d/
50-cloud-init.cfg and replace instances of
eth0 with the new device name
# cat 50-cloud-init.cfg auto lo iface lo inet loopback auto enxb827eb9721d5 iface enxb827eb9721d5 inet dhcp
Unmount the filesystem:
# cd /tmp/ # umount pifs
Return the microSD card to the Pi and reapply power. Your Pi’s Ethernet should now be available.
A special thanks to @tjw for providing clues to the fix for this issue!