1. 概要:为什么需要?
在家或办公室24小时开启桌面,不仅耗电,而且维护成本也会增加。
因此,考虑在需要的时候,利用树莓派这样的24小时运行的小型服务器,通过远程开启目标桌面的方法。
为此,利用“Wake-on-LAN(WOL)”功能,制定了以下策略。
- 桌面BIOS设置:启用WOL功能
- Linux(Ubuntu)设置:确保网络卡在系统关闭后仍保持激活状态
- 树莓派设置:编写和自动化发送魔术数据包的脚本
所需的包:
- wakeonlan
(用于在树莓派或服务器上发送魔术数据包)
2. 组装环境
- 目标PC:安装Ubuntu 24.04的桌面
- 服务器:树莓派5(Ubuntu Server 24.04)
- 网络:连接到同一局域网(建议使用有线)
3. 桌面BIOS设置
使用Wake-on-LAN时,主板的BIOS设置至关重要。
BIOS设置方法
在BIOS中设置以下项目。我使用的是GIGABYTE主板,其他品牌用户可参考类似选项进行设置。
- 在桌面启动时进入BIOS/UEFI设置(通常是
DEL
,F2
键) - 启用以下项目:
ERP(节能模式相关)
- ERP
设置:Disabled(禁用),节能模式可能会阻止WOL功能的使用。
启用CSM
- CSM Support
:Enabled
- 在启用CSM后,可能会出现以下项目(以GIGABYTE主板为例):
- LAN PXE引导选项ROM
:保持禁用
- 保存OpROM启动政策
:Legacy
- 其它PCI设备
:Legacy
通过LAN恢复 / 通过PCI-E开机
- 一些主板可能自动支持,无需额外选项 → 即使没有选项也可以正常工作
- 保存并重启
※根据制造商,不同选项的名称可能略有不同,因此请查找“Wake”、“Power On by PCI”等类似选项进行设置。
4. 桌面Linux(Ubuntu)设置
在Ubuntu中,即使系统关闭,NIC(网络接口卡)也必须保持运行。
1. 确认网络接口名称
ip a
示例结果:
2: enp4s0: ...
link/ether <AA:BB:CC:DD:EE:FF> ...
enp4s0
:确认网络接口名称。(这是桌面的有线LAN设备名称,因此可能因设备而异。)AA:BB:CC:DD:EE:FF
:MAC地址(魔术数据包目标) ※ 注意MAC地址的安全性。
2. 安装ethtool
sudo apt update
sudo apt install ethtool
3. 检查和设置WOL状态
sudo ethtool enp4s0 | grep Wake
结果示例:
Supports Wake-on: pumbg
Wake-on: d
d
→ 禁用状态- 通过以下命令启用:
sudo ethtool -s enp4s0 wol g
再次确认:
Wake-on: g
4. 确保在启动时自动设置(可选:在重启后Wake-on:g被解除的情况适用)
自Ubuntu 20.04起,/etc/rc.local
默认不再支持,因此推荐使用systemd服务的方法。
创建/etc/rc.local
的方法:
sudo nano /etc/rc.local
在exit 0
之前添加:
/sbin/ethtool -s enp4s0 wol g
exit 0
保存文件后赋予执行权限:
sudo chmod +x /etc/rc.local
可能需要额外设置systemd服务。
5. 从树莓派发送魔术数据包
1. 安装wakeonlan
包
sudo apt install wakeonlan
2. 执行WOL命令
wakeonlan AA:BB:CC:DD:EE:FF # 输入上面确认的MAC地址。
3. (可选)注册别名
# 在AA:BB:CC:DD:EE:FF部分放入远程启动目标PC的MAC地址。
echo "alias wakeup_dude='wakeonlan AA:BB:CC:DD:EE:FF'" >> ~/.bashrc
source ~/.bashrc
→ 从此以后可以简单地执行:
wakeup_dude
6. 结果
- 即使桌面完全关闭后,在接收魔术数据包后自动开机
- 成功实现Wake-on-LAN远程启动!
7. 与安全相关
- 作为控制中心的“树莓派”服务器的SSH连接安全设置、路由器安全设置、UFW设置等安全设置必须加强。
- 如果需要从外部连接,建议使用SSH端口转发或VPN。
8. 使用示例
# 从外部连接
ssh username@<your_ip_or_domain> -p <your_ssh_port>
# 连接后
wakeup_dude
🎉 桌面自动启动!
9. 参考
- Wake-on-LAN仅在有线LAN中有效(Wi-Fi不支持)
- 一些主板在
Suspend
状态下有效,但在Shutdown
状态下可能受限。(在GIGABYTE主板上也成功确认在Shutdown状态下有效)
这样通过建立“仅在需要时”唤醒的桌面环境,可以实现智能且高效的服务器管理。
댓글이 없습니다.