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 Boot Option ROM
: 保持禁用
- Save OpROM Policy
: Legacy
- Other PCI Devices
: 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 狀態下成功)
通過建立「僅在需要時」啟動的桌面環境,可以實現智能高效的伺服器管理。
Add a New Comment