It turns out that I had set the MAC address in the WinXp driver software (different to the HW address) for the RTL8169 (I dual boot), which was then carried over to Ubuntu after a reboot - I guess Gutsy saw a new MAC address and assigned it to eth2. Or something... Why it alternated, I'm not sure. Possibly an Ubuntu-Ubuntu reboot would reset the MAC address to the HW MAC address, which would go back to eth0, and a WinXP - Ubuntu reboot would leave the software MAC address in place and result in eth2. Alternatively, powering down fully between OSes might reset the HW address.
/etc/udev/rules.d/70-persistent-net.rules
# PCI device 0x10ec:0x8169 (r8169)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="xx:xx:xx:xx:xx:0b", NAME="eth0" ##<= MAC set in WinXP driver software
It turns out that I had set the MAC address in the WinXp driver software (different to the HW address) for the RTL8169 (I dual boot), which was then carried over to Ubuntu after a reboot - I guess Gutsy saw a new MAC address and assigned it to eth2. Or something... Why it alternated, I'm not sure. Possibly an Ubuntu-Ubuntu reboot would reset the MAC address to the HW MAC address, which would go back to eth0, and a WinXP - Ubuntu reboot would leave the software MAC address in place and result in eth2. Alternatively, powering down fully between OSes might reset the HW address.
/etc/udev/ rules.d/ 70-persistent- net.rules
# PCI device 0x10ec:0x8169 (r8169) =="xx:xx: xx:xx:xx: 0b", NAME="eth0" ##<= MAC set in WinXP driver software
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}
# PCI device 0x14e4:0x4318 (bcm43xx) =="xx:xx: xx:xx:xx: 5f", NAME="eth1" ##<= WiFi
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}
# PCI device 0x10ec:0x8169 (r8169) =="xx:xx: xx:xx:xx: 0a", NAME="eth2"##<= hardware MAC address
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}