systemd 229-4ubuntu6 ignores net.ifnames=0 on USB or /etc/udev/rules.d/80-net-setup-link.rules being a /dev/null symlink
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
| systemd (Debian) |
Fix Released
|
Unknown
|
||
| systemd (Ubuntu) |
Medium
|
Martin Pitt | ||
| Xenial |
Medium
|
Unassigned |
Bug Description
Description: Ubuntu 16.04 LTS
Release: 16.04
The upgrade to systemd/udev 229-4ubuntu6 breaks net.ifnames=0 for USB devices.
It appears the regression is here:
* Set MAC based name for USB network interfaces only for universally
administered (i. e. stable) MACs, not for locally administered (i. e.
randomly generated) ones. Drop /lib/systemd/
(as link files don't currently support globs for MACAddress=) and replace
with an udev rule in /lib/udev/
(Closes: #812575, LP: #1574483)
As Raspberry Pi's use eth0 via USB, this breaks running systems.
Before:
ii systemd 229-4ubuntu4 armhf system and service manager
ii udev 229-4ubuntu4 armhf /dev/ and hotplug management daem
3: eth0: <BROADCAST,
link/ether b8:27:eb:16:39:e9 brd ff:ff:ff:ff:ff:ff
After:
ii systemd 229-4ubuntu6 armhf system and service manager
ii udev 229-4ubuntu6 armhf /dev/ and hotplug management daemon
3: enxb827eb1639e9: <BROADCAST,
link/ether b8:27:eb:16:39:e9 brd ff:ff:ff:ff:ff:ff
cat /proc/cmdline
dma.dmachans=0x7f35 bcm2708_
With the default interfaces configuration, all networking is lost on reboot after upgrade.
SRU TEST CASE
=============
* Boot with "net.ifnames=0" on the kernel command line, and connect an USB ethernet device. It will still be called enxDEADBEEF with current xenial. With the -proposed version it will instead keep the kernel name, like "usb0" as intended.
* Do "sudo ln -s /dev/null /etc/udev/
Steve Wormley (9-lp) wrote : | #1 |
Changed in systemd (Ubuntu): | |
status: | New → In Progress |
assignee: | nobody → Martin Pitt (pitti) |
Martin Pitt (pitti) wrote : | #2 |
This was fixed in http://
Changed in systemd (Ubuntu): | |
status: | In Progress → Fix Released |
Martin Pitt (pitti) wrote : | #3 |
Actually we are still missing checking /etc/udev/
summary: |
- systemd 229-4ubuntu6 ignores net.ifnames=0 on USB + systemd 229-4ubuntu6 ignores net.ifnames=0 on USB or + /etc/udev/rules.d/80-net-setup-link.rules being a /dev/null symlink |
Changed in systemd (Ubuntu): | |
status: | Fix Released → Fix Committed |
Martin Pitt (pitti) wrote : | #4 |
Fixed second half in http://
description: | updated |
Changed in systemd (Ubuntu Xenial): | |
status: | New → Fix Committed |
status: | Fix Committed → In Progress |
Changed in systemd (Debian): | |
status: | Unknown → Fix Committed |
Changed in systemd (Debian): | |
status: | Fix Committed → Fix Released |
Launchpad Janitor (janitor) wrote : | #5 |
This bug was fixed in the package systemd - 230-5
---------------
systemd (230-5) unstable; urgency=medium
[ Martin Pitt ]
* Sync test/networkd-
debian/
autopkgtest.
* debian/
/etc/
consistent with the documented way to disable ifnames. (Closes: #824491,
LP: #1593379)
* debian/rules: Ignore libcap-ng.so in the "does anything link against /usr"
check, to work around libaudit1 recently gaining a new dependency against
that library (#828991). We have no influence on that ourselves. This fixes
the FTBFS in the meantime.
[ Felipe Sateler ]
* Convert common code into a private shared library. This saves about 9 MB
of installed size in the systemd package, and some more in systemd-*.
-- Martin Pitt <email address hidden> Fri, 01 Jul 2016 09:15:12 +0200
Changed in systemd (Ubuntu): | |
status: | Fix Committed → Fix Released |
Hello Steve, or anyone else affected,
Accepted systemd into xenial-proposed. The package will build now and be available at https:/
Please help us by testing this new package. See https:/
If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-
Further information regarding the verification process can be found at https:/
Changed in systemd (Ubuntu Xenial): | |
status: | In Progress → Fix Committed |
tags: | added: verification-needed |
Martin Pitt (pitti) wrote : | #7 |
I installed the -proposed binaries on Sebastien's laptop. Disabling ifnames with /etc/udev/
tags: |
added: verification-failed removed: verification-needed |
Launchpad Janitor (janitor) wrote : | #9 |
This bug was fixed in the package systemd - 229-4ubuntu7
---------------
systemd (229-4ubuntu7) xenial-proposed; urgency=medium
* Add pre-dependency to dpkg >= 1.17.14 on udev, to ensure that
dpkg-
* Add activation rate limiting for socket units. (LP: #1568094)
* Split out udev rule to name USB network interfaces by MAC address into
73-
* 73-usb-
kernel command line or if /etc/udev/
symlink to /dev/null, to be consistent with disabling the *.link files and
the documented way to disable ifnames. (Closes: #824491, LP: #1593379)
* coredump: Fix "Coredump file descriptor missing". (LP: #1602256)
-- Martin Pitt <email address hidden> Tue, 12 Jul 2016 17:37:25 +0200
Changed in systemd (Ubuntu Xenial): | |
status: | Fix Committed → Fix Released |
Adam Conrad (adconrad) wrote : Update Released | #8 |
The verification of the Stable Release Update for systemd has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.
Changed in systemd (Ubuntu Xenial): | |
status: | Fix Released → In Progress |
assignee: | nobody → Martin Pitt (pitti) |
Marek Dopiera (3z-marek-2q) wrote : | #10 |
I might be doing something broken, but it still seems broken to me on Ubuntu 16.04 on Raspberry PI despite having these fixes applied.
Package versions:
systemd: 229-4ubuntu7
udev: 229-4ubuntu7
Could you please take a look if I'm not doing something stupid (I hopefully attached the relevant info):
$ ifconfig -a | head
enxb827eb739cc2 Link encap:Ethernet HWaddr b8:27:eb:73:9c:c2
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
$ ls -l /etc/udev/
lrwxrwxrwx 1 root root 9 Aug 4 2016 /etc/udev/
$ grep net.ifnames=0 /proc/cmdline | tee -a report.txt
8250.nr_uarts=1 dma.dmachans=0x7f35 bcm2708_
$ cat /lib/udev/
# Use MAC based names for network interfaces which are directly or indirectly
# on USB and have an universally administered (stable) MAC address (second bit
# is 0).
IMPORT{
PROGRAM=
ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", NAME=="", \
ATTR{
IMPORT{
hackeron (hackeron) wrote : | #11 |
Any solution to this? - I'm passing net.ifnames=0 biosdevname=0 but after the latest apt-get upgrade, it is ignored :( --
deployer@ubuntu:~$ uname -a
Linux ubuntu 4.4.0-1021-raspi2 #27-Ubuntu SMP Fri Aug 12 11:44:06 UTC 2016 armv7l armv7l armv7l GNU/Linux
deployer@ubuntu:~$ cat /proc/cmdline
8250.nr_uarts=1 dma.dmachans=0x7f35 bcm2708_
deployer@ubuntu:~$ ifconfig -a
enxb827ebf5f71c Link encap:Ethernet HWaddr b8:27:eb:f5:f7:1c
inet addr:192.168.101.69 Bcast:192.
inet6 addr: fe80::ba27:
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:666 errors:0 dropped:0 overruns:0 frame:0
TX packets:514 errors:0 dropped:0 overruns:0 carrier:0
RX bytes:106425 (106.4 KB) TX bytes:94870 (94.8 KB)
Julia Palandri (julia-palandri) wrote : | #12 |
I tried with this solution in a raspberry pi2 and it didn't work for me (as discussed with pitti), but adding the new strange iface name to /etc/network/
On the other hand, the symlinking worked to have recognized a new wireless usb interface, which right after the upgrade that deleted my interfaces had the new weird interface format (ex enxb827ebf5f71c), and then became wlan0.
Martin Pitt (pitti) wrote : | #13 |
Unsetting "in progress", as currently I have no idea why the ENV{net.ifnames} match does not work on armhf. This needs to be debugged on a machine that reproduces this, and it does work on mine, in QEMU, in our clouds etc. So if anyone can provide me ssh access to an affected machine, I'm happy to debug it there. I need systemd's build dependencies, but not necessarily root. My key is https:/
Changed in systemd (Ubuntu Xenial): | |
assignee: | Martin Pitt (pitti) → nobody |
status: | In Progress → Incomplete |
alp (atoker) wrote : | #14 |
The problem appears to be down to a syntax error - here's the fix we're using as a patch against current systemd in Xenial:
Splitting the IMPORT and ENV/GOTO directives onto separate lines gets things working.
With the patch deployed, the kernel parameter works as specified, allowing us to access hosts remotely after boot. We've tested the patch both with and without net.ifnames boot parameter and the USB ethernet device is assigned correctly as expected for each mode.
This should fix things for Raspberry Pi users as well..
--- /lib/udev/
+++ /lib/udev/
@@ -3,7 +3,8 @@
# is 0). Don't do this when ifnames is disabled via kernel command line or
# customizing/
-IMPORT{
+IMPORT{
+ENV{net.
ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", NAME=="", \
ATTR{
alp (atoker) wrote : | #15 |
Note that, contrary to the original bug report, this isn't an armhf issue but affects all platforms.
We used an external USB ethernet adapter to verify that that fix outlined in #14 also resolves the same issue on Xenial Desktop AMD64.
Martin Pitt (pitti) wrote : | #16 |
Interesting observation, thanks! I cannot confirm that the single line is generally broken -- I've tested it on two different computers (although only amd64) and it works fine. However, there is no harm in splitting the rule, so I'll do that for the next SRU if it helps things.
Martin Pitt (pitti) wrote : | #17 |
Committed to master branch: https:/
Cherry-picked into xenial branch for next SRU round: https:/
Changed in systemd (Ubuntu Xenial): | |
status: | Incomplete → Fix Committed |
Hello Steve, or anyone else affected,
Accepted systemd into xenial-proposed. The package will build now and be available at https:/
Please help us by testing this new package. See https:/
If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-
Further information regarding the verification process can be found at https:/
tags: | removed: verification-failed |
tags: | added: verification-needed |
Changed in systemd (Ubuntu): | |
importance: | Undecided → Medium |
Changed in systemd (Ubuntu Xenial): | |
importance: | Undecided → Medium |
Martin Pitt (pitti) wrote : | #19 |
Current SRU got shadowed by a security update, resetting. Will reupload shortly.
Changed in systemd (Ubuntu Xenial): | |
status: | Fix Committed → In Progress |
tags: | removed: verification-needed |
Chris Halse Rogers (raof) wrote : | #20 |
Hello Steve, or anyone else affected,
Accepted systemd into xenial-proposed. The package will build now and be available at https:/
Please help us by testing this new package. See https:/
If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-
Further information regarding the verification process can be found at https:/
Changed in systemd (Ubuntu Xenial): | |
status: | In Progress → Fix Committed |
tags: | added: verification-needed |
hackeron (hackeron) wrote : | #21 |
I'm on Xenial and I ran an apt-get update; apt-get dist-upgrade and my eth0 changed back to enxb827djdk after reboot :(
My biggest issue is virtual interfaces do NOT work with these "predictable" network names. I can do ifconfig eth0:0 192.168.123.123 but I cannot do ifconfig enxb827djdk:0 192.168.123.123 - it just overrites the main IP, rather than creating another virtual interface :(
Previously, I was able to follow these steps:
Edit/boot/
net.ifnames=0
biosdevname=0
Run: ln -s /dev/null /etc/udev/
Make sure this file is absent (which it was anyway): /lib/udev/
Run: update-initramfs -k all -u
But now, running the above steps no longer works and I'm getting enxb827djdk again :(
I also checked /proc/cmdline and I have net.ifnames=0 there so it's definitely being passed. I'm running kernel 4.4.0-1023-raspi2 Sep 6 16:12:44 UTC 2016
Is there a solution/
Martin Pitt (pitti) wrote : | #22 |
hackeron, which systemd version are you using? Note that the one currently in xenial-updates reverted the previous SRU, you need version 229-4ubuntu11.
Robie Basak (racb) wrote : Re: [Bug 1593379] Re: systemd 229-4ubuntu6 ignores net.ifnames=0 on USB or /etc/udev/rules.d/80-net-setup-link.rules being a /dev/null symlink | #23 |
On Fri, Oct 07, 2016 at 03:20:29PM -0000, hackeron wrote:
> My biggest issue is virtual interfaces do NOT work with these
> "predictable" network names. I can do ifconfig eth0:0 192.168.123.123
> but I cannot do ifconfig enxb827djdk:0 192.168.123.123 - it just
> overrites the main IP, rather than creating another virtual interface :(
I can't help with the bug in general, but for this particular use case,
try "ip addr add 192.168.123.123 dev enxb827djdk". ifconfig isn't going
away, but all new development has moved to the "ip" command which
replaces it.
hackeron (hackeron) wrote : | #24 |
I'm on systemd 229-4ubuntu10
Martin Pitt (pitti) wrote : | #25 |
Right. Can you please install the version from -proposed (see comment #20) and check if that fixes it, i. e. net.ifnames=0 then gets respected?
Martin Pitt (pitti) wrote : | #26 |
I tested this on a ThinkPad (amd64) and it works. I cannot reproduce the previously reported failure though, i. e. the one-line udev rule works for me as well. But at least there is no regression here, so IMHO it's safe to release that to get the other fixes out.
If it still does not work for you, please reopen and yell here. Thanks!
tags: |
added: verification-done removed: verification-needed |
Launchpad Janitor (janitor) wrote : | #27 |
This bug was fixed in the package systemd - 229-4ubuntu11
---------------
systemd (229-4ubuntu11) xenial; urgency=medium
* 73-usb-
Reportedly this makes the rule actually work on some platforms. Thanks
Alp Toker! (LP: #1593379)
* fsckd: Do not exit on idle timeout if there are still clients connected
(Closes: #788050, LP: #1547844)
* libnss-*.prerm: Remove possible [key=value] options from NSS modules as
well. (LP: #1625584)
* Backport networkd 231. Compared to 229 this has a lot of fixes, some of
which we need for good netplan support. Backporting them individually
would be a lot more work and a lot less robust, and we did not use/support
networkd in 16.04 so far. Drop the other network related patches as they
are included in this backport now. (LP: #1627641)
* debian/
behaviour is fixed with the above backport now.
* pid1: process zero-length notification messages again. Just remove the
assertion, the "n" value was not used anyway. This fixes a local DoS due
to unprocessed/
(LP: #1628687)
* pid1: Robustify manager_
manager_
of service notifications will be disabled entirely leading to a
compromised system. (side issue of LP: #1628687)
-- Martin Pitt <email address hidden> Tue, 04 Oct 2016 21:43:04 +0200
Changed in systemd (Ubuntu Xenial): | |
status: | Fix Committed → Fix Released |
Yes, /proc/cmdline.txt was from a different system thus the differing MAC addresses.