rom•高级-电源管理设置-Erp,设置为禁止
erp•高级-唤醒事件设置-PCIE 设备唤醒,设置为允许
pcie软件基础除了硬件支持外,还需要在操作系统中设置网卡的唤醒功能。而网卡的唤醒功能是需要网卡驱动支持的,这是 Ubuntu 升级过程中通过踩坑明白的道理。 下面列举了 Win10 操作系统和 Ubuntu 系统下的设置。WindowsWindow 系统中驱动是很健全的,所以只要对应的主板和网卡硬件支持网络唤醒功能,那么对应的驱动基本没有问题。那就只剩下最后一步: 设备管理器-网络适配器-电源管理-允许这个装置唤醒电脑
setting_win10ubuntuUbuntu 的版本是 20.04 LTS,其默认内核版本为 5.4.x。因为该版本距今两年多,所以其对应的网卡驱动 alx-driver 已经支持远程唤醒 wol 功能。 为了验证当前网卡是否开启对远程唤醒功能的支持,需要安装软件 ethtool。# 安装软件 ethtoolsudo apt-get install ethtool -y# 验证当前网卡 enp5s0 是否开启 wol 支持sudo ethtool enp5s0Ubuntu 系统安装的 20.04 LTS,后来升级为 22.04 LTS(升级过程中踩了默认驱动不支持 wol 的坑,查了好多资料才填了这个坑).
ubuntu_wakeon默认情况如上图,Supports Wake-on表示当前驱动支持的远程唤醒方式,候选项有以下几种。wake-on表示当前远程唤醒的方式。选项描述含义disabled不支持远程唤醒pPHY activity物理唤醒uunicast activity单播唤醒mmulticast activity多播唤醒bbroadcast activity广播唤醒gmagic packet activity魔法包唤醒其中选项 g 是开启远程唤醒功能的标识。# 设置 enp5s0 网卡驱动支持魔法包唤醒sudo ethtool -s enp5s0 wol g# 设置 enp5s0 网卡驱动永久支持魔法包唤醒,需要重启两次nmcli c modify enp5s0 802-3-ethernet.wake-on-lan magic
ubuntu_setting内网通软硬件基础都搞定后,下面一步就是在内网(局域网)中通过魔法包唤醒目标机器。唤醒的方法这里提供两种:•命令唤醒操作机器和目标机器需要在同一个局域网中,操作机器需要安装 wakeonlan 命令。# 安装 wakeonlan 命令sudo apt install wakeonlan# 命令唤醒## host_address为远程计算机的域名或ip地址## mac_address为远程计算机的mac地址,mac地址是':'间隔的形式wakeonlan -i host_address mac_address•app唤醒 在软件市场中搜索 Wake-On-Lan 或 WOL 可以找到相关软件外网通网上有相关教程,大致流程分为三步:• DDNS绑定域名和动态公网IP 鉴于 家庭宽带在桥接模式 下路由器会获取公网 IP,但是这个公网 IP 是会变化的。所以最好通过 DDNS 将不变的域名和变化的公网 IP 绑定在一起。我这里使用的是 ddns-go。• 设置 IP 和 MAC 绑定 网络唤醒的核心是将魔法数据包发送给目标机器,如果数据包中的 MAC 和目标机器一致则会触发唤醒引导程序。而路由器下面有多个终端机器,所以需要将路由器下终端机器和其 MAC 地址一一绑定,这样如果有魔法数据包经过路由器时,路由器知道将该包路由到哪台机器。• 设置端口映射 注意 IP 地址与目标机器的 IP 一致,也就是刚才 MAC 绑定时的 IP 地址,端口随便开一个就行(但是不要用运营商封禁的端口,推荐使用 9 端口)。另外协议类型选择 UDP 或者ALL!!因为唤醒数据包是通过 UDP 协议发送的,所以协议类型只选择 TCP 协议的话数据包是进入不了内网的!!上面的三步我依次操作了,但是没有成功。目前还没有定位的具体原因。不过我通过另一种方式解决了外网远程唤醒的问题:远程登陆到家庭 Nas(该机器是 24 小时不关机的),然后通过 wakeonlan 命令在局域网中唤醒目标机器。常见问题系统升级带来的问题以及解决当时是奔着高性能买的这款微星主板 Z270 GAMING M7,网卡是 Killer E2500 Gigabit,号称可以干掉游戏延迟。不过 Ubuntu 中对这块网卡的驱动支持并没有那么通用,在系统升级(20.04 LTS 升级到 22.04 LTS)中还是碰到比较麻烦的驱动支持问题。这里特地记录了一下解决过程。从这个帖子 我们知道,网卡 Killer E2500 Gigabit 的驱动是 alx,但是该驱动默认是关闭远程唤醒功能的。如果想要开启该功能需要内核支持。看遍了该帖子发现对于最新的 Ubuntu 22.04 LTS(内核 5.15) 并没有直接的解决方案。但是发现对于内核 5.16.3 有了 alx 补丁,所以有了如下的升级内核的解决方案。• 升级内核到 5.16.3• mainline 方式 该方式未生效,主要是 Ubuntu Mainline Kernel Installer 中只有 2 个内核版本• deb包方式 简单直接• 安装 alx 补丁 下载仓库,并执行 ./setup• 重启后验证
alx_fix目前已经验证成功,为此还提了 request 给仓库。参考文献
网络唤醒
archlinux中网络唤醒
外网唤醒 配置教程 远程开机
Wake-on-LAN broken in alx
alx_driver
ubuntu 22.04LTS alx补丁
如何在Ubuntu中安装Linux主线内核
内核deb包
alx_dkms_installer支持22.04LTS
References
相关教程: https://blog.csdn.net/qq_19764639/article/details/82817719
帖子: https://bugzilla.kernel.org/show_bug.cgi?id=61651#c166
mainline 方式: https://www.sysgeek.cn/ubuntu-install-linux-mainline-kernel
deb包方式: https://kernel.ubuntu.com/~kernel-ppa/mainline
仓库: https://github.com/haojunyu/alx_dkms_installer
request: https://github.com/AMV007/alx_dkms_installer/pull/5
网络唤醒: https://zh.wikipedia.org/wiki/%E7%B6%B2%E8%B7%AF%E5%96%9A%E9%86%92
archlinux中网络唤醒: https://wiki.archlinux.org/title/Wake-on-LAN#Wake-up_after_shutdown
外网唤醒 配置教程 远程开机: https://blog.csdn.net/qq_19764639/article/details/82817719
Wake-on-LAN broken in alx: https://bugzilla.kernel.org/show_bug.cgi?id=61651#c166
alx_driver: https://wiki.linuxfoundation.org/networking/alx
ubuntu 22.04LTS alx补丁: https://github.com/AMV007/alx_dkms_installer/pull/5
如何在Ubuntu中安装Linux主线内核: https://www.sysgeek.cn/ubuntu-install-linux-mainline-kernel
内核deb包: https://kernel.ubuntu.com/~kernel-ppa/mainline
alx_dkms_installer支持22.04LTS: https://github.com/haojunyu/alx_dkms_installer