Bug#439462: potential solutions
Matt T, thanks for pointing this out.
The solution being employed by other distributions is based on udev,
1) include a udev rule to create persistent ethernet device naming.
The first time a new MAC address is detected, add a rule to a udev
rule file (e.g. 70-persistent-net-devices.rules) with the new
entry. If such exist, then it renames devices based on their MAC
address to the name specified in the rule. Udev 013 and higher can
rename ethernet devices themselves via such rules.
2) include a udev rule and new application I wrote, biosdevname
(http://linux.dell.com/files/biosdevname) which is called after
70-persistent-net-devices.rules (so existing persistent names
remain), but before other net-device-naming rules. biosdevname
uses various explicit data from SMBIOS, or heuristics otherwise, to
name net devices based on what BIOS expects them to be named.
Both are necessary to solve this properly. For dist-upgrades, you
want to be sure your 70-persistent-net-devices.rules file exists, so
the kernel name given (correct or incorrect from your POV) doesn't
matter - the only thing that matters is what is in the rules file.
Absent the rules file, you want biosdevname invoked via udev rules.
Absent that, fall back to whatever your normal net naming rules would
be, either udev or kernel-provided.
I'm actively working with Fedora/RH and OpenSuSE/SLE to implement the
above strategy. I would expect Debian and derivatives to do
likewise. This is being actively discussed on the
email@example.com mailing list, the home of udev.
Linux Technology Strategist, Dell Office of the CTO
linux.dell.com & www.dell.com/linux