Thursday, May 17, 2007

[Linux] Suspend/Resume over LAN & USB

前幾天有個客戶需要Suspend to RAM (S3) 和 Resume over LAN & USB 的功能, 就小玩 了一下!
Platform: 945G + Celeron D 352, 2GB RAM, GigaLAN
OS: Fedora Core 4 (2.6.11-1) & 2.6.21.1

Step1. BIOS:
-- 在BIOS 中要把wakeup 的device 都打開, 這個LAN 是PCIE的, 所以也要特別設一下.
-- 將Suspend Mode 設為 [S3] Suspend to RAM

Step2. Linux:
-- /proc/acpi/wakeup 中, 把USB 和 PCIE 都設為wakeup trigger sources

Step3. 準備來睡 (枕頭咧?)
-- 我將 suspend 和 resume 的過程寫成一個script
#!/bin/bash
touch /suspending
#unload USB drivers
rmmod ehci-hcd
rmmod uhci-hcd

#store clock
/sbin/hwclock --adjust

#save video state
vbetool vbestate save > video-state

#Put system into sleep
echo 3 > /proc/acpi/sleep

#Prepare wakeup, resuming
#restore video state
vbetool vbestate restore



Wake on LAN
Wake onUSB

因為FC4 的kernel 無法由USB wakeup, 所以直上最新release (2.6.21.1)的kernel.