Score:2

Purging Docker May Have Nuked My Ethernet? (Actually it was ACPI)

pr flag

Doing a bit of system setup in Ubuntu Server 20.04, CLI-only, on a Lenovo ThinkCentre m90n NUC. Ubuntu no longer recognizes that the system has an ethernet interface at all and I'm not sure where to begin troubleshooting or fixing this.

What I was doing before the problem:

After purging Docker (sudo apt purge) from the system, the ethernet interface eno2 suddenly couldn't pull an IP from the router after a reboot. Thought maybe the router decided it just didn't like the system (I've been on routers that do that), so I kept working.

My next issue was troubleshooting the system restarting automatically after issuing a poweroff or shutdown -P now command. Found a fix here that involved adding acpi=noirq to the GRUB_CMDLINE_LINUX_DEFAULT config line in /etc/default/grub. Upon updating grub and rebooting again to test the fix, ip address no longer lists an ethernet interface at all.

I reverted the grub config and rebooted, but ip address still does not list eno2 so I do not suspect the grub config is what killed it. I believe purging docker must have removed something else.

I'm not sure where to begin fixing this.

Outputs:

Output of ip addr:

calyodelphi@dragonweyr:~$ ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 94:e6:f7:36:91:d8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.6/24 brd 192.168.1.255 scope global dynamic wlo1
       valid_lft 3458sec preferred_lft 3458sec
    inet6 fd4b:8d38:69ba:1:96e6:f7ff:fe36:91d8/64 scope global mngtmpaddr noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::96e6:f7ff:fe36:91d8/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:5e:0e:94:56 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

Output of lspci:

calyodelphi@dragonweyr:~$ lspci
00:00.0 Host bridge: Intel Corporation Coffee Lake HOST and DRAM Controller (rev 0c)
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (Whiskey Lake) (rev 02)
00:04.0 Signal processing controller: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem (rev 0c)
00:08.0 System peripheral: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model
00:12.0 Signal processing controller: Intel Corporation Cannon Point-LP Thermal Controller (rev 30)
00:14.0 USB controller: Intel Corporation Cannon Point-LP USB 3.1 xHCI Controller (rev 30)
00:14.2 RAM memory: Intel Corporation Cannon Point-LP Shared SRAM (rev 30)
00:14.3 Network controller: Intel Corporation Cannon Point-LP CNVi [Wireless-AC] (rev 30)
00:16.0 Communication controller: Intel Corporation Cannon Point-LP MEI Controller #1 (rev 30)
00:1d.0 PCI bridge: Intel Corporation Cannon Point-LP PCI Express Root Port #9 (rev f0)
00:1d.4 PCI bridge: Intel Corporation Cannon Point-LP PCI Express Root Port #13 (rev f0)
00:1f.0 ISA bridge: Intel Corporation Cannon Point-LP LPC Controller (rev 30)
00:1f.3 Audio device: Intel Corporation Cannon Point-LP High Definition Audio Controller (rev 30)
00:1f.4 SMBus: Intel Corporation Cannon Point-LP SMBus Controller (rev 30)
00:1f.5 Serial bus controller [0c80]: Intel Corporation Cannon Point-LP SPI Controller (rev 30)
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (6) I219-V (rev 30)
02:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981/PM983

Contents of etc/network/interfaces (this file was blank before I added this; still no fix):

calyodelphi@dragonweyr:~$ cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eno2
iface eno2 inet dhcp

EDIT 1
Output of lshw -C network:

calyodelphi@dragonweyr:~$ sudo lshw -C network
[sudo] password for calyodelphi: 
  *-network:0               
       description: Wireless interface
       product: Cannon Point-LP CNVi [Wireless-AC]
       vendor: Intel Corporation
       physical id: 14.3
       bus info: pci@0000:00:14.3
       logical name: wlo1
       version: 30
       serial: 94:e6:f7:36:91:d8
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress msix bus_master cap_list ethernet physical wireless
       configuration: broadcast=yes driver=iwlwifi driverversion=5.4.0-77-generic firmware=46.6bf1df06.0 ip=192.168.1.6 latency=0 link=yes multicast=yes wireless=IEEE 802.11
       resources: irq:0 memory:a123c000-a123ffff
  *-network:1 UNCLAIMED
       description: Ethernet controller
       product: Ethernet Connection (6) I219-V
       vendor: Intel Corporation
       physical id: 1f.6
       bus info: pci@0000:00:1f.6
       version: 30
       width: 32 bits
       clock: 33MHz
       capabilities: pm msi cap_list
       configuration: latency=0
       resources: memory:a1200000-a121ffff

EDIT 2
Some extra output as encouraged in the comments.

First is /etc/netplan/*.yaml:

calyodelphi@dragonweyr:~$ cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
  ethernets:
    eno2:
      dhcp4: true
  wifis:
    wlo1:
      dhcp4: true
      optional: true
      access-points:
        "Sanitized for your safety":
          password: "DontYouWishYourExploitsWereHotLikeMe"
  version: 2

Output of sudo modprobe e1000e && sudo dmesg | grep e100:

calyodelphi@dragonweyr:~$ sudo modprobe e1000e && sudo dmesg | grep e100
[    1.237103] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k
[    1.238833] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    1.241057] e1000e 0000:00:1f.6: can't find IRQ for PCI INT A; please try using pci=biosirq
[    1.243023] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
[    2.533297] e1000e: probe of 0000:00:1f.6 failed with error -2

And after some side-searching (a friend elsewhere suggested a missing kernel module and I did some googling), I cobbled together this lspci -v search to get info specifically about the ethernet controller. The first block grabbed is the wifi controller which works perfectly fine.

calyodelphi@dragonweyr:~$ lspci -v | awk '/Ethernet/,/^$/'
    DeviceName: Onboard - Ethernet
    Subsystem: Intel Corporation Cannon Point-LP CNVi [Wireless-AC]
    Flags: bus master, fast devsel, latency 0
    Memory at a123c000 (64-bit, non-prefetchable) [size=16K]
    Capabilities: <access denied>
    Kernel driver in use: iwlwifi
    Kernel modules: iwlwifi

00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (6) I219-V (rev 30)
    DeviceName: Onboard - Ethernet
    Subsystem: Lenovo Ethernet Connection (6) I219-V
    Flags: fast devsel
    Memory at a1200000 (32-bit, non-prefetchable) [size=128K]
    Capabilities: <access denied>
    Kernel modules: e1000e

EDIT 3
Output of dmesg | grep -i irq:

calyodelphi@dragonweyr:~$ sudo dmesg | grep -i irq
[sudo] password for calyodelphi: 
[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-5.4.0-77-generic root=/dev/mapper/ubuntu--vg-ubuntu--lv ro pci=biosirq
[    0.000000] PCI: Unknown option `biosirq'
[    0.063103] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.063105] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.063107] ACPI: IRQ0 used by override.
[    0.063108] ACPI: IRQ9 used by override.
[    0.063521] Kernel command line: BOOT_IMAGE=/vmlinuz-5.4.0-77-generic root=/dev/mapper/ubuntu--vg-ubuntu--lv ro pci=biosirq
[    0.122357] NR_IRQS: 524544, nr_irqs: 2048, preallocated irqs: 16
[    0.127500] DMAR-IR: Enabled IRQ remapping in x2apic mode
[    0.456806] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 10 11 12 14 15) *0
[    0.456965] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 10 11 12 14 15) *1
[    0.457120] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 10 11 12 14 15) *0
[    0.457273] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 10 11 12 14 15) *0
[    0.457427] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 10 11 12 14 15) *0
[    0.457583] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 10 11 12 14 15) *0
[    0.457736] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 10 11 12 14 15) *0
[    0.457890] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 10 11 12 14 15) *0
[    0.478709] PCI: Using ACPI for IRQ routing
[    0.525746] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0
[    0.950240] pcieport 0000:00:1d.0: PME: Signaling with IRQ 122
[    0.950903] pcieport 0000:00:1d.4: PME: Signaling with IRQ 123
[    0.951023] pcieport 0000:00:1d.4: AER: enabled with IRQ 123
[    0.960745] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled

As an aside...

For some reason ip address still lists an interface for docker even though I'd purged it from the system, and processes for containerd and dockerd still show up when I use htop so I'm not entirely certain it's been fully purged from the system.

Calyo Delphi avatar
pr flag
`/var/log/apt/term.log` is mostly only output from the `sudo apt upgrade` I ran prior to purging docker. The only warning I got when purging was that `/etc/docker` was not an empty directory and so wasn't removed.
in flag
Does `sudo lshw -C network` show the I219-V? If so, is it marked as “unclaimed”?
Calyo Delphi avatar
pr flag
@matigo It does show the interface! And it is marked as "unclaimed"! I just edited my question to show the output of the command. :)
chili555 avatar
cn flag
Please edit your question to show the result of: `cat /etc/netplan/*.yaml` and also: `sudo modprobe e1000e && sudo dmesg | grep e100` Welcome to Ask Ubuntu.
Calyo Delphi avatar
pr flag
@chili555 Done, done, and a little extra output from `lspci -v` for completeness sake after I went on a search to see if I was just missing the kernel module for it.
chili555 avatar
cn flag
"can't find IRQ for PCI INT A; please try using pci=biosirq" Please try adding this boot parameter: https://wiki.ubuntu.com/Kernel/KernelBootParameters
Calyo Delphi avatar
pr flag
Didn't seem to work unfortunately @chili555 :(
chili555 avatar
cn flag
Please try resetting the BIOS/EFI to defaults. If it still isn't working, look for clues here: `sudo dmesg | grep -i irq`
Calyo Delphi avatar
pr flag
@chili555 Still no dice. As an experiment I removed the `acpi=noirq` option from the grub config and left only `pci=biosirq` and while the system doesn't automatically power back on from a use of `poweroff` the ethernet interface is still missing. I edited to include the output of `dmesg | grep -i irq` for extra reference though.
chili555 avatar
cn flag
https://www.whtop.com/blog/e1000e-probe-failed-with-error-2/ Possibly helpful. Is Wake-on-Lan enabled in BIOS/EFI? Try disabling it.
chili555 avatar
cn flag
Also: https://ubuntuforums.org/archive/index.php/t-2404122.html
Calyo Delphi avatar
pr flag
@chili555 `acpi=off` in the first of those last two links you suggested did the trick!! :D Please, I encourage you to take that and format it as a proper answer and I will gladly give you the check and the reputation for it. Thank you!
Score:2
cn flag
[    1.241057] e1000e 0000:00:1f.6: can't find IRQ for PCI INT A; please try using pci=biosirq
[    1.243023] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
[    2.533297] e1000e: probe of 0000:00:1f.6 failed with error -2

A recent search finds this: https://www.whtop.com/blog/e1000e-probe-failed-with-error-2/ I suggest that you try a boot parameter acpi=off following this guide: https://wiki.ubuntu.com/Kernel/KernelBootParameters

You have confirmed above that this resolves the issue.

I'm glad it's now working as expected.

Calyo Delphi avatar
pr flag
As an addendum, `acpi=off` did fix the original issue, but then introduced the issue that the system could no longer automatically power off on a reboot or poweroff. But I found `pci=noacpi` in this answer and it's done the trick! Thanks again! :) https://askubuntu.com/a/406419/1356732
mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.