Ubuntu 18.04 – 暂停后以太网断开连接

暂停后,以太网不会恢复。

sudo service network-manager restart 

不起作用。 只有重启才能解决问题。

跟踪此问题的主要Ubuntu错误,至少对于网络内核模块r8169,似乎是:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1752772

我鼓励受此问题影响的每个人都去那里并标记它会影响到你,以便维护人员更好地了解它的严重程度。

我正在运行Xubuntu 18.04的全新安装,我的以太网接口使用内核模块r8169 ,我发现它正在运行:

 sudo lshw -C network 

将有2组信息,一组以description: Ethernet interface开头description: Ethernet interface ,另一组description: Wireless interface 。 在description: Ethernet interface ,寻找以configuration:开头的行configuration: ,像这样:

 configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=full firmware=rtl_nic/rtl8105e-1.fw ip=192.168.100.6 latency=0 link=yes multicast=yes port=MII speed=100Mbit/s 

司机将在这里: driver=

Systemd在暂停之前和之后运行/lib/systemd/system-sleep下的所有可执行脚本,传递2个参数, $1是状态( pre ,after suspend或post ,suspend之后), $2是action( suspendhibernatehybrid-state ,或suspend-then-hibernate )。 这在systemd-suspend.service的手册页中systemd-suspend.service

我们需要在暂停从暂停状态恢复时重新加载以太网接口的模块。 所以我创建了脚本/lib/systemd/system-sleep/r8169-refresh

 #!/bin/bash PROGNAME=$(basename "$0") state=$1 action=$2 function log { logger -i -t "$PROGNAME" "$*" } log "Running $action $state" if [[ $state == post ]]; then modprobe -r r8169 \ && log "Removed r8169" \ && modprobe -i r8169 \ && log "Inserted r8169" fi 

并使其可执行:

 chmod +x /lib/systemd/system-sleep/r8169-refresh 

从脚本记录的消息将使用脚本名称及其PID标记到/var/log/syslog 。 这样您就可以检查脚本是否重新加载了内核模块:

 grep r8169-refresh /var/log/syslog 

这是另一个简单的(r?)解决方案:创建一个systemd服务,其唯一的任务是在挂起周期后卸载/重新加载模块(我将其命名为/etc/systemd/system/fix-r8169.service ):

 [Unit] Description=Fix RTL-8169 Driver on resume from suspend After=suspend.target [Service] User=root Type=oneshot ExecStartPre=/sbin/modprobe -r r8169 ExecStart=/sbin/modprobe r8169 TimeoutSec=0 StandardOutput=syslog [Install] WantedBy=suspend.target 

然后只需执行systemctl enable fix-r8169.service ,就应该设置!! Systemd现在将在挂起唤醒后自动卸载并重新加载模块。

干杯!

它也发生在我身上。

卸载/重新加载网络内核模块/驱动程序。

我是r8169,所以(作为根):(我手工输入,所以有延迟)

 sudo modprobe -r r8169 sudo modprobe -i r8169 

我在第一次尝试时也删除了mii。 不过没必要。

我有同样的问题,我找到了这个解决方案。

  1. 运行: sudo lshw -C network
    找到你的网卡内核模块

    在* -network中,描述:以太网接口,在配置字段中找到
    对我来说driver=sky2 。 sky2是我的笔记本电脑的以太网网络内核模块。

  2. 我创建了一个文件sky2.sh到: /lib/systemd/system-sleep/文件夹中

     #!/bin/bash modprobe -r sky2 # unload sky2 kernel module modprobe -i sky2 # reload sky2 kernel module 

    并使用以下命令更改权限:

     sudo chmod a+x sky2.sh 

之后问题解决了。

它检测以太网连接?

然后

打开NetworkManager.conf

 sudo nano /etc/NetworkManager/NetworkManager.conf 

注释(添加#) dns=dnsmasq

 [main] plugins=ifupdown,keyfile,ofono #dns=dnsmasq [ifupdown] managed=true 

重新启动网络管理器

 sudo service network-manager restart 

Ctrl + Alt + T转到终端并键入:

 sudo apt-get purge tlp 

要么

编辑/etc/default/tlp并更改:

 WOL_DISABLE = NO 

 WOL_DISABLE = YES 

我没有足够的声誉评论或赞成接受的答案(现已过时)

如果你运行lsmod | grep r8169 lsmod | grep r8169并且它显示你加载了r8169内核模块,并且你的内核比4.15.0-24-generic更旧,那么你很可能会受到接受的答案中链接的bug的影响https://bugs.launchpad.net / ubuntu的/ +源极/ LINUX / +错误/ 1752772

顺便说一句,我经历过这个错误,对我来说是lspci | grep 'Gigabit Ethernet' lspci | grep 'Gigabit Ethernet'显示RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller

此错误已得到修复。

如果您的内核早于4.15.0-24-generic,请运行

 apt-get update apt-get upgrade apt-get dist-upgrade reboot 

我有同样的问题,但这里的解决方案对我不起作用。 我花了几天时间浏览这个主题的几个论坛,并尝试了几乎所有的东西。 提到了两种替代解决方案,升级内核或安装以前的模块驱动程序。 我选择了后者并安装了r8168驱动程序。 最初,那也失败了。 然而,我发现了一些有效的东西并使其适应了Paulo的解决方案。

我正在使用Kernel 4.15.0-24-generic运行(K)ubuntu 18.04。

lshw -C网络的输出包括这个……

 description: Ethernet interface product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller vendor: Realtek Semiconductor Co., Ltd. physical id: 0 bus info: pci@0000:05:00.0 logical name: enp5s0 version: 0c serial: 80:fa:5b:49:69:b3 size: 1Gbit/s capacity: 1Gbit/s width: 64 bits clock: 33MHz capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation configuration: autonegotiation=on broadcast=yes driver=r8168 driverversion=8.045.08-NAPI duplex=full ip=192.168.10.213 latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s resources: irq:133 ioport:e000(size=256) memory:df000000-df000fff memory:d0000000-d0003fff 

我安装了包r8168-dkms ,但这还不够。 还需要两个步骤。

步骤1)编辑文件/etc/modprobe.d/r8168-dkms.conf并启用该行(即删除注释) 黑名单r8169

步骤2)基于Paulo的解决方案我创建了以下脚本/ lib / systemd / system-sleep / r8168-refresh

  #!/斌/庆典

 PROGNAME = $(基本名称“$ 0”)
状态= $ 1
行动= $ 16

function日志{
     logger -i -t“$ PROGNAME”“$ *”
 }

记录“运行$ action $ state”

 if [[$ state == post]]; 然后
     记录“ifconfig down enp5s0”
      ifconfig enp5s0 down
     记录“ifconfig up enp5s0”
      ifconfig enp5s0 192.168.10.213
科幻 

此代码当然特定于我的机器(设备名称和IP地址)。 它肯定可以改进,但它目前满足我的需求。

这适用于NetworkManager。

在2018年7月28日从Ubuntu 16.04升级到18.04后,这与我和Gigabyte-B250M-DS3H主板一样。内核是4.15.0-29-通用。

sudo lshw -C network结果显示了RTL8111 / 8168/8411 PCI Express千兆以太网控制器,而它表明r8169是使用的驱动程序。

最终工作的是安装特定于以太网控制器的驱动程序(大惊喜):

 sudo apt install r8168-dkms 

然后重新启动计算机(Thanks andypotter)。 我没有必须将r8169列入黑名单,但我仍然需要在/lib/systemd/system-sleep/中创建一个脚本,我将其命名为r8168-refresh-after-suspend (一个保罗的建议),它将删除并重新插入r8168:

 #!/bin/bash # $1 is the state (pre or post) # $2 is the action (suspend) case $1/$2 in pre/suspend) modprobe -r r8168 ;; post/suspend) modprobe -i r8168 ;; esac 

当然,使其可执行:

sudo chmod +x /lib/systemd/system-sleep/r8168-refresh-after-suspend

这就像一个魅力。 所以,这仍然是4.15.0-29内核中的问题,但是创可贴修复仍然有效。

我有同样的问题(driver = r8169),从暂停恢复后以太网不起作用。

它与内核4.13.0-31完美配合。 换句话说,以太网在从暂停状态恢复后继续工作。

但是对于内核4.15.0-32,以太网在从挂起恢复后不起作用。 我已经尝试了修复modprobe -r r8169 modprobe -i r8169,但这没有效果。

我已将此报告给https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1752772