2014/05/14

Ubuntu 與 Wake on LAN

Wake on LAN (WOL) 就是透過網路指定某一台 PC 開機。

被叫者的設定

需要被叫醒的 PC 必須完成以下設定:
  • BIOS 需啟動相關叫醒功能,譬如 Asus P5K 主機板的設定項目是:
    • Power > APM Configuration
      • Power on By PCI Devices [Enable]
      • Power on By PCIE Devices [Enable]
  • 然後網路卡 (NIC) 必須啟動 WOL 功能:
    • 在 Windows 底下,直接去查網路卡有沒有相關設定
    • 在 Ubuntu 底下,可用 ethtool 查詢和改變網路卡的設定
      • sudo ethtool eth0 來查看網路卡有哪些功能
        • "Supports Wake-on:"g 就是支援 WOL
        • 有沒有啟動 WOL 就看 "Wake-on:" 有沒有 g
      • sudo ethtool -s eth0 wol g 來啟動 WOL
      • sudo ethtool -P eth0 查出網路卡位址 (ether address 或 mac address),等一下會用到
  • 最後一點,就是要讓 PC 處於可被叫醒的狀態。譬如,我的 Asus P5K 先斷電再復電後是叫不醒的。一定要先做一次:手動按開機鍵,不用開完機,幾秒之後再按一次開機鍵關機,感覺好像是讓 BIOS 有機會將機器設成待命狀態。最簡單的檢查方法就是檢查網路埠的 link 燈號。可被 WOL 叫醒的機器,關機時 link 燈必須是亮著的,這樣才可以收到 WOL 封包。

叫人者的設定

執行叫醒任務的 PC 一般比較沒有限制,只要有合適的工具即可。以下只介紹 Ubuntu 的部份。請先安裝 wakeonlan 套件,然後執行以下命令即可:
wakeonlan 00:11:22:33:44:55 #這裡請改成被叫者的網路卡位址
沒有成功?請查被叫者的電源線是否接好且有電,以及網路線是否有 link 燈號且跟叫人者有連接起來。若以上都確認沒問題,也許查查叫人者 PC 是否有兩張網路卡。wakeonlan 似乎不能控制由哪張網路卡送出 WOL magic packet,以下方法可解決這個問題:
  • 方法一是指定哪個 subnet 的 broadcast:
    wakeonlan -i 192.168.0.255 00:11:22:33:44:55
  • 方法二是設定 static arp entry:
    sudo arp -i eth1 -s 192.168.0.1 00:11:22:33:44:55
    wakeonlan -i 192.168.0.1 00:11:22:33:44:55
還是沒有成功?我建議查網路相關連結,可以的話先試試將被叫者和叫人者直接連結起來。

參考資料

沒有留言: