LinuxでWOLできない

Linuxを使っていると、Wake on LANができない。


まずBIOSで、「APM Configuration」の中の「Power On By PCI/PCIe Devices」という項目を有効にした。(何故APM?)
次にWindows XPを起動して、NICの詳細設定で「Wake on LAN」のところを有効にした。Windowsをシャットダウンして、別のマシンからブロードキャストにMagic Packetを送ると、うまく起動した。WOL成功。
BIOSの設定とMagic Packet送出ツールは問題ない模様。


が、その後Linuxを起動して、シャットダウンして、別マシンからMagic packetを送ると、起動しない。


Linuxの起動中に「ethtool」コマンドでWOLを有効にしないといけないらしいので、試した。

# ethtool -s eth0 wol g

エラーメッセージは出ない。
シャットダウン→別マシンからMagic Packet。起動しない。


そもそもLinuxをシャットダウンしたときに、NICのLEDが消えている。WindowsをシャットダウンしたときにはLEDは点灯している。
というわけで、/etc/sysconfig/network-scripts/ifdown-ethの中で、NICをリンクダウンしているところを見つけ、これを変更。

- ip link set $DEVICE down
- ip link set $DEVICE up

変更した後シャットダウンすると、LEDが点灯したままになった。でも状況変わらず。WOLできない。


さらに、/etc/init.d/haltの最後の方にあるHALT_ARGSを変更(-iを削除)

- HALT_ARGS="-i -d -p"
+ HALT_ARGS="-d -p"


同じく/etc/init.d/haltのHALT_ARGSの行の直後に、eth0をリンクアップし、ついでにethtoolを叩くコードを追加

/sbin/ifconfig eth0 up
/usr/sbin/ethtool -s eth0 wol g


さらに起動中に、/proc/acpi/wakeupに「PCE2」をecho

echo -n "PCE2" > /proc/acpi/wakeup

/proc/acpi/wakeupをcatすると、PCE2〜PCE7全部がenableになっている。PCEはたぶんPCI-Expressの意味。PCIという項目は無い。



全部試した。が、状況変わらず。NICのLEDは点灯しているが、WOLできない。


NICのチップはMarvell Yukon 88E8001 Gigabit Ethernet Controler、オンボード
Linuxカーネルは2.6.17で、NIのドライバはskge。
情報求ム…