Ubuntu 18.04-挂起后以太网断开连接

Ubuntu 18.04-挂起后以太网断开连接

以太网在暂停后无法恢复。

sudo service network-manager restart

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

答案1

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

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,传递 2 个参数,$1是状态(pre、挂起之前或post、挂起之后),$2是操作(suspendhibernatehybrid-statesuspend-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

答案2

这是另一个简单的解决方案:创建一个 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。不过没有必要。

答案4

它检测到以太网连接吗?

然后

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

相关内容