Ubuntu20.04配置网络唤醒

网络唤醒失效的问题分析

之前在家配置网络唤醒都是正常的,自从升级到20.04后网络唤醒就开始失效,分析一下后感觉跟具体的网络配置和bios配置应该没有太大关系,最大的问题是在于配置为S5(shutdown)状态下时网卡需要在关机后处于激活状态,而这里需要系统在启动后将对应的网卡状态设置为对应状态。

在ubuntu20.04上的具体配置

可以使用ethtool工具来查看状态,首先查看具体的网络接口信息

ip a

可以得到下面的内容

2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether f4:b5:20:3b:03:1c brd ff:ff:ff:ff:ff:ff
    inet 172.16.2.5/24 brd 172.16.2.255 scope global dynamic noprefixroute enp4s0
       valid_lft 31926sec preferred_lft 31926sec
    inet6 240e:36f:d3b:6f71::3ac/128 scope global dynamic noprefixroute 
       valid_lft 174510sec preferred_lft 88110sec

这里可以看到mac地址为f4:b5:20:3b:03:1c的网卡名为enp4s0,之后可以使用ethtool来查看Wake-On-LAN的状态

sudo ethtool enp4s0

这样就可以得到对应的状态

Supports Wake-on: pumbg
Wake-on: d

这里Wake-on: d表示disable, 对应的还有其他含义的参数

Option	Description
p	Wake on PHY activity
u	Wake on unicast messages
m	Wake on multicast messages
b	Wake on broadcast messages
g	Wake on MagicPacket messages

这时,我们就可以来更新WOL的状态

sudo ethtool --change enp4s0 wol g

之后检查接口的状态可以发现已经改为

Wake-on: g

之后就可以使用wakeonlan等工具来唤醒机器了

网络唤醒的持久化

正常使用时会发现每次开机后都要重新设置网卡的状态才能在下一次关机后再次使用网络唤醒,所以我们可以通过systemd添加一个系统服务在每次开机后修改网卡状态,具体做法如下:
先确定ethtool的绝对路径

which ethtool

这里我的工具路径是/sbin/ethtool, 之后可以创建一个 /etc/systemd/system/wol.service 文件,在这里写下启动执行一次的服务信息

[Unit]
Description=Enable Wake On Lan

[Service]
Type=oneshot
ExecStart = /sbin/ethtool --change enp4s0 wol g

[Install]
WantedBy=basic.target

这里需要注意的是我的机器的网卡名为enp4s0,ethtool的路径是/sbin/ethtool,对于你们的可能要相应调整
之后只需要enable该服务就可以

sudo systemctl daemon-reload
sudo systemctl enable wol.service

之后可以检查一下对应的状态

systemctl status wol
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值