Site icon Soul & Shell Blog

Linux Wake-On-Lan

Wake-On-Lan 網路開機介紹

網路開機顧 名思義就是透過 Ethernet 進行開機動作,這需要硬體與BIOS的支援,目前市面上的主機板所內建的網路卡都能支援。假設您的網路介面不是採用主機板內建晶片,而是採用傳統的網路 卡,那麼通常需要透過一條連接線(三條線)連結主機板上的Wakeup-link與網路卡。

Wake-On-Lan最早由 IBM 提出這樣的設計,隨即其他廠商也跟進了這樣的作法。原理是電腦關機時,主機板上的網路介面繼續供電,使得集線器 (Hub) 或交換器 (Switch) 持續服務網路介面,時得 Lan 能夠將網路開機的封包傳送到機器上。只要封包送的到,電腦就開的了!

Linux Wake-On-Lan

需要網路開機的電腦在關機之間必須啟動網路開機,並且設定監聽到什麼樣的封包就進行開機,當關機完成後,網路介面就會開始監聽開機封包。Linux 上所使用網路開機的套件為 ethtools 而傳送網路開機封包可以使用 etherwake 套件。以下我們使用 ubuntu 9.04 進行測試,在正常的狀態下 ethtool 是預設安裝的套件,假設沒有安裝的話也可以透過 apt-get install ethtool 進行安裝。

ethtool 與 etherwake 使用教學

查詢網路介面 Wake-On-Lan 支援與狀態,執行 ethtool eth0 顯示結果如下:

Settings for eth0:
Supported ports: [ TP ]
Supported link modes:   10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes:  10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pg
Wake-on: d
Current message level: 0x000000ff (255)
Link detected: yes

 Wake-on: d 表示網路開機狀態為 disabled,接著我們執行 ethtool -s eth0 wol g 開啟 eth0 的網路開機功能,再次執行 ethtool eth0 來查詢狀態。

Settings for eth0:
Supported ports: [ TP ]
Supported link modes:   10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes:  10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pg
Wake-on: g
Current message level: 0x000000ff (255)
Link detected: yes
由於接下來的實驗室透過 MAC Address 進行網路開機,所以請務必記下網路介面的 MAC Address,接著使用 shutdown -h now 關閉電腦,觀察網路線的燈號應該是亮著,這時候網路介面會開始監聽網路開機封包。找另一台電腦安裝 etherwake 套件,請執行 apt-get install etherwake 進行安裝。使用指令傳送開機封包,請執行 etherwake 00:30:2D:5F:12:A1 送出開機封包。

參考資料

Exit mobile version