Answers:
至少对于网络内核模块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
是动作(suspend
,hibernate
,hybrid-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
这是另一个简单的解决方案:创建一个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,所以(以root身份):(我是手动输入的,所以有一个延迟)
sudo modprobe -r r8169
sudo modprobe -i r8169
我也在第一次尝试中删除了mii。虽然没有必要。
我有同样的问题,我找到了解决方案。
跑: sudo lshw -C network
查找网卡内核模块
在* -network中,描述:以太网接口,在
driver=sky2
为我找到的配置字段中。sky2是我的笔记本电脑的以太网网络内核模块。
我创建了一个文件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
systemctl status NetworkManager.service
以检查错误
我通过使用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
按Ctrl+ Alt+ T转到终端并输入:
sudo apt-get purge tlp
要么
编辑/etc/default/tlp
和更改:
WOL_DISABLE = NO
至
WOL_DISABLE = YES
我没有足够的声誉来评论或赞扬已接受的答案(现已过时)
如果运行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
我遇到了同样的问题,但是这里的解决方案对我不起作用。我花了几天时间浏览有关此主题的几个论坛,并尝试了几乎所有内容。提到了两个替代解决方案,即升级内核或安装以前的模块驱动程序。我选择了后者并安装了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一起使用。
在2018年7月28日从Ubuntu 16.04升级到18.04后,技嘉B250M-DS3H主板也发生了这种情况。内核为4.15.0-29-generic。
显示的结果是sudo lshw -C network
RTL8111 / 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内核中仍然是一个问题,但是创可贴修复仍然有效。
我有同样的问题(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
我表示/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从暂停返回后停止工作。