我最近将我的一台机器从 Ubuntu 21.10 更新到了 22.04,没有出现任何重大问题。但是,我的局域网唤醒配置似乎出了问题。
WoL 在 BIOS/UEFI 级别启用,并systemd
在启动期间运行一项服务:
[Unit]
Description=Enable Wake-up on LAN
[Service]
Type=oneshot
ExecStart=/sbin/ethtool -s %i wol g
[Install]
WantedBy=basic.target
但是现在,该命令只产生:
netlink error: Operation not supported
即使ethtool
通过运行手动检查:
sudo ethtool enp4s0
再也没有提到了Wake-On:
。22.04 中的网络堆栈是否发生了一些变化,从而禁用了 WoL 支持?或者我可以做些什么来进一步调试这个问题?
答案1
我解决了 Qualcomm Atheros AR816x/AR817x 适配器上的问题。使用风险自负!
我已经在受影响的机器上成功完成了完全远程操作。
sudo dmesg | grep -i ethernet
[ 7.494311] alx 0000:05:00.0 eth0: Qualcomm Atheros AR816x/AR817x Ethernet […]
添加主线存储库
此步骤是安装较新的内核所必需的。截至撰写本文时,Ubuntu 22.04 LTS 的最新内核版本是5.15.0
,但补丁仅适用于某些版本。我无法在上应用补丁5.15.0
。我太懒了,不想从源代码编译和构建内核。
正如所述Ubuntu 主线内核安装程序:
sudo add-apt-repository ppa:cappelikan/ppa
sudo apt update
sudo apt install mainline
安装内核 5.16.xx
添加主线存储库后,您可以轻松安装其他内核版本:
sudo mainline --install 5.16.20
sudo systemctl reboot
注意:可以通过以下方式收集可用版本的列表:mainline --list
修补模块
在应用补丁之前,请检查当前运行的内核版本:
uname -r
5.16.20-051620-generic
应用补丁:
git clone https://github.com/haojunyu/alx_dkms_installer
cd alx_dkms_installer
./setup
注意此存储库是上游 / 起源,因为拉取请求:功能:添加 5.16,支持 ubuntu22.04仍然开放。(截至撰写本文时)。
再次重启:sudo systemctl reboot
检查 WOL 功能
sudo ethtool enp5s0 | grep -i wake
Supports Wake-on: pg
Wake-on: pg
我现在可以通过 WoL 启动机器了。关闭电源后,可以通过 WoL 再次启动。
最后说明
我也尝试了6.0.9
没有打补丁的内核。仍然没有 WoL。我猜不会有修复。这个硬件有点过时了。
答案2
看起来较新的内核禁用了某些适配器上的 WoL。具体情况取决于您的适配器。请参阅:
- 网络唤醒功能不再使用最新内核 (Bionic)
- r8169
- AR8161:一个用于 AR8161 的 32 位二进制文件
- [回归] alx 中的局域网唤醒功能损坏(AR8161)
- 一些补丁可能会起作用,也取决于内核版本:https://github.com/AMV007/alx_dkms_installer
我有一台 AR8161 (Qualcomm Atheros AR816x/AR817x),在将 Ubuntu 从 20.04 升级到 22.04 后也出现了同样的问题。您可以使用 检查您的适配器sudo dmesg | grep -i ethernet
。
也许较新的内核可以修复此问题或有可行的补丁。
答案3
从 20.04 升级到 22.04 后,WOL 停止工作,以下解决方案对我有用
在/etc/tlp.conf
集合中:
WOL_DISABLE=N
我认为导致我出现此问题的原因是,在更新至 22.04 版时,先前存在的/etc/tlp.conf
文件被替换为默认版本,该版本具有#WOL_DISABLE=Y
原解来源: https://ubuntu-mate.community/t/wake-on-lan-persistance-issues-22-04/25600/4
其他参考: