Ubuntu 18.04 - 挂起后以太网断开

aaa*_*aaa 43 network-manager networking ethernet 18.04

挂起后以太网不会恢复。

sudo service network-manager restart
Run Code Online (Sandbox Code Playgroud)

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

Pau*_*gão 57

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

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

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

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

sudo lshw -C network
Run Code Online (Sandbox Code Playgroud)

将有 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
Run Code Online (Sandbox Code Playgroud)

司机会在这里:driver=

Systemd 运行所有/lib/systemd/system-sleep在 suspend 之前和 after下的可执行脚本,传递 2 个参数,$1是状态(pre, before suspend , or post, after suspend),$2是动作(suspend, hibernate, hybrid-state, or suspend-then-hibernate)。这在systemd-suspend.service.

挂起,从挂起恢复时,我们需要为以太网接口重新加载模块。所以我创建了脚本/lib/systemd/system-sleep/r8169-refresh

sudo lshw -C network
Run Code Online (Sandbox Code Playgroud)

并使其可执行:

chmod +x /lib/systemd/system-sleep/r8169-refresh
Run Code Online (Sandbox Code Playgroud)

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

grep r8169-refresh /var/log/syslog
Run Code Online (Sandbox Code Playgroud)


Die*_*era 23

这是另一个简单的(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
Run Code Online (Sandbox Code Playgroud)

然后执行systemctl enable fix-r8169.service,你应该设置!Systemd 现在会在从挂起状态唤醒时自动卸载并重新加载您的模块。

干杯!

  • 刚刚在连接到 Thunderbolt 坞站的 Dell XPS 13 上的 Ubuntu 20.04(Regolith 1.4)上测试了这个,它工作得很好。:chef: :kiss: 谢谢@diego-rivera! (2认同)

小智 6

它也发生在我身上。

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

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

sudo modprobe -r r8169
sudo modprobe -i r8169
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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

  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 
    
    Run Code Online (Sandbox Code Playgroud)

    并更改权限:

    sudo chmod a+x sky2.sh
    
    Run Code Online (Sandbox Code Playgroud)

之后问题就解决了。