如何永久禁用以太网卡上的 EEE(节能以太网)?

如何永久禁用以太网卡上的 EEE(节能以太网)?

我正在寻找一个可以在 GRUB 配置中使用的内核参数禁用EEE(节能以太网,维基百科)永久保存在我的新笔记本电脑的 LAN(有线以太网)卡上:

基本信息:

操作系统:Linux Mint 21.1“维拉”肉桂

# ethtool -i enp59s0 
driver: r8169
version: 5.15.0-56-generic
firmware-version: rtl8168h-2_0.0.2 02/26/15
expansion-rom-version: 
bus-info: 0000:3b:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: yes
supports-priv-flags: no

什么有效(在重新启动、睡眠和唤醒时不持久):

# ethtool --set-eee enp59s0 eee off

但是,我宁愿不必为此设置 @reboot CRON。

我在跑步机上尝试过的建议这里, 和这里,以及其他地方:

# sysctl -w igb.EEE=0
# sysctl -w e1000e.EEE=0
# sysctl -w r8169.EEE=0

所有这些都以错误消息结束:

sysctl: cannot stat /proc/sys/[PARAM]/EEE: No such file or directory

非常感谢您的帮助。

答案1

不存在这样的内核参数。

@reboot然而,除了cron 作业之外,还有其他方法可以实现您的目标。

如果您使用 NetworkManager,您可以创建一个预启动调度程序脚本(例如/etc/NetworkManager/dispatcher.d/pre-up.d/disable-eee),以便在激活网络接口时进行配置更改:

#!/bin/sh
#
# Disable EEE on enp59s0

if [ "$1" = "enp59s0" ]; then
        /sbin/ethtool --set-eee $1 eee off \
            || /bin/logger "Error $? trying to disable EEE on $1"
fi

exit 0

请务必将脚本标记为可执行。


或者,您可以/etc/modprobe.d/disable-eee在加载内核模块时创建更改设置:

install r8169 /sbin/modprobe -i r8169 && sleep 1 && /sbin/ethtool --set-eee enp59s0 eee off

(如果r8169内核模块是在 initramfs 启动阶段加载的,则可能必须运行sudo update-initramfs -u才能在下次启动时生效。)


或者您可以创建自己的systemd服务单元来运行 ethtool 命令(例如/etc/systemd/system/disable-eee.service):

[Unit]
Before=network-pre.target
Wants=network-pre.target

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/sbin/ethtool --set-eee enp59s0 eee off

[Install]
WantedBy=multi-user.target

重要的提示

根据您的操作系统配置,ethtool可能会放置在其他地方,例如/usr/sbin/ethtoolVlastimil 的情况。如果您不确定,您可以运行which ethtoolcommand -v ethtool。程序也是如此logger

相关内容