Ubuntu 18.04-挂起后以太网断开


29

挂起后,以太网不恢复。

sudo service network-manager restart

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


这个问题在Xubuntu 18.04.2,内核4.15.0-54
HEKTO

Answers:


45

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

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

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

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

sudo lshw -C network

将有2组信息,一组以开头description: Ethernet interface,另一组以开头description: Wireless interface。在下方description: Ethernet interface,找到以开头的行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之前和之后暂停,传递两个参数,$1是状态(pre之前暂停,或者post,后暂停),并$2是动作(suspendhibernatehybrid-state,或suspend-then-hibernate)。在的手册页中对此进行了记录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

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

grep r8169-refresh /var/log/syslog

madzohan,我觉得添加您的编辑可能是多余的,因为我在回答中两次提到脚本必须是可执行的:“ systemd在/ lib / systemd / system-sleep下运行所有​​可执行脚本”,并且还“我创建了并制作了可执行脚本/ lib / systemd / system-sleep / r8169-refresh”
Paulo Marcel

此问题已在2018年7月1日发布的内核4.15.0-24.26中修复,因此不再需要解决方法。
Paulo Marcel CoelhoAragão18年

1
自几天前安装某些更新以来,我的笔记本电脑上出现了此问题。上面给出的解决方案仍然可以解决问题。非常感谢!
丹尼尔(Daniel)

@Daniel,您可以发布以下内容的输出:apt policy linux-image-generic吗?自2018年7月1日起应该已经解决了此问题,不再需要此解决方法。
Paulo Marcel CoelhoAragão18年

不只是18.04。在16.04中,rtl8169内核驱动程序也必须在挂起后卸载和加载:askubuntu.com/questions/950871/…–
WinEunuuchs2Unix

8

这是另一个简单的解决方案:创建一个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现在将自动卸载并重新加载模块。

干杯!


3

这件事也发生在我身上。

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

我的是r8169,所以(以root身份):(我是手动输入的,所以有一个延迟)

sudo modprobe -r r8169
sudo modprobe -i r8169

我也在第一次尝试中删除了mii。虽然没有必要。


sudo modprobe -i r8169
aaaa

工作了!我现在一直都必须手动执行此操作吗?
aaaa

这与接受的解决方案相同,但是没有将其放入将在恢复时执行且没有日志记录功能的脚本中。
Dominic108 '18

3

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

  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
    

之后问题解决了。


这与接受的解决方案相同,但没有日志记录功能。
Dominic108 '18 -10-14

1

它检测到以太网连接吗?

然后

打开 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

[main] plugins = ifupdown,keyfile [ifupdown] managed = true [device] wifi.scan-rand-mac-address = no
aaaa

这就是我在文件中所拥有的
。...– aaaa

您以前是否更新了conf文件?如果是,请重新启动并检查
Santhosh Veer,

我尝试了修复Santhosh Veer的方法。仍呈灰色。以太网。
aaaa

运行此命令 systemctl status NetworkManager.service以检查错误
Santhosh Veer 18'Apr 28'14

1

我通过使用UKUU将内核从4.15更新到4.20(最新于16.01.2019)解决了我的Ubuntu 18.04 Bionic上的这个问题

安装最新的内核安装Ubuntu Kernel Update Utility

sudo add-apt-repository ppa:teejee2008/ppa

sudo apt-get install ukuu

使用以下命令禁用访问控制:

sudo xhost +

然后用ukuu安装

sudo ukuu

sudo ukuu --install-latest

然后重启

sudo reboot

0

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

sudo apt-get purge tlp

要么

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

WOL_DISABLE = NO

WOL_DISABLE = YES

欢迎来到Ask Ubuntu!;-)能否请您查看我的编辑内容,并同时查看编辑帮助以提高将来答案的可读性... ;-)
Fabby 18'Jul

0

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

如果运行lsmod | grep r8169并显示您已加载r8169内核模块,并且您的内核早于4.15.0-24通用内核,则您很可能会受到接受的答案https://bugs.launchpad中链接的错误的影响 。净/ ubuntu / + source / linux / + bug / 1752772

顺便说一句,我遇到了这个错误,并为我lspci | grep 'Gigabit Ethernet'展示 RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller

该错误已修复。

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

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

0

我遇到了同样的问题,但是这里的解决方案对我不起作用。我花了几天时间浏览有关此主题的几个论坛,并尝试了几乎所有内容。提到了两个替代解决方案,即升级内核或安装以前的模块驱动程序。我选择了后者并安装了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

#!/ bin / bash

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

功能日志{
    记录器-i -t“ $ PROGNAME”“ $ *”
}

日志“正在运行$ action $ state”

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

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

这将与NetworkManager一起使用。


0

在2018年7月28日从Ubuntu 16.04升级到18.04后,技嘉B250M-DS3H主板也发生了这种情况。内核为4.15.0-29-generic。

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

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

sudo apt install r8168-dkms

然后重新启动计算机(谢谢andypotter)。我不必将r8169列入黑名单,但我仍然必须创建一个脚本,/lib/systemd/system-sleep/该脚本称为r8168-refresh-after-suspend(la Paulo的建议),该脚本将删除并重新插入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内核中仍然是一个问题,但是创可贴修复仍然有效。


0

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

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

但是对于内核4.15.0-32,以太网从挂起状态恢复后无法正常工作。我已经尝试过修复

modprobe -r r8169
modprobe -i r8169

但这没有效果。

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


1
除非您建议使用内核4.13,否则这并不是真正的答案。
wjandrea

0

首先要检查:重新启动网络管理器/服务:

sudo服务网络管理器重启

如果它不起作用,请检查此帖子中的其他答案


0

我表示/lib/systemd/system-sleep/每个上都有几个Fix文件脚本(已修改为我的以太网适配器)!

但是,如果在挂起后关闭了电缆调制解调器设备,并且在恢复系统后又将其重新打开,基于Ubuntu的系统将无法重新连接到Internet,尽管网络图标(通知区域中)显示连接为打开。

要再次修复它,我必须单击网络图标»以太网连接。因此,它成功刷新了连接。X-

Ethernet controller: VIA Technologies, Inc. VT6105/VT6106S [Rhine-III] 
    Subsystem: D-Link System Inc DFE-520TX Fast Ethernet PCI Adapter 
    Kernel driver in use: via-rhine
    Kernel modules: via_rhine

PS似乎某些VPN的CLI从暂停返回后停止工作。


0

我的Dell Inspiron 15也有同样的问题:重新启动或挂起后没有有线网络。

我似乎已经通过更改BIOS中的设置来解决此问题:

高级->英特尔(R)智能连接技术->禁用

(默认为启用)

副作用是,菜单项消失了,在将所有设置重置为默认值后再次出现。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.