2008年10月27日 星期一

s2ram

上次跟大家報告,說這台 asus f6s 無法休眠到記憶體
請容我更正一下,當然,是要費些手腳的(但是很簡單)
先說明一下:
原本由 KDE 選單中選擇『暫停寫入到 RAM』(Suspend to RAM)
系統沒有反應
而按下休眠快速鍵 Fn+ZZ
則會出現螢幕保護鎖定,輸入密碼解鎖後,則出現
寄件者 openSUSE 11.0 GM

察看紀錄:
Mon Oct 27 19:25:49 CST 2008: running suspend hooks.
===== Mon Oct 27 19:25:49 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/00clear =====
===== Mon Oct 27 19:25:49 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/01logging =====
suspend initiated: Mon Oct 27 19:25:49 CST 2008

Module Size Used by
ip6t_LOG 23940 7
xt_tcpudp 20480 2
xt_pkttype 18944 3
xt_physdev 19728 2
ipt_LOG 23428 8
xt_limit 20356 15
af_packet 42624 4
snd_pcm_oss 68992 0
snd_mixer_oss 35584 1 snd_pcm_oss
snd_seq 83600 0
snd_seq_device 26516 1 snd_seq
binfmt_misc 30220 1
bridge 81192 1
bnep 35200 2
ip6t_REJECT 22272 3
nf_conntrack_ipv6 36424 4
ipt_REJECT 21120 3
xt_state 19712 8
iptable_mangle 20608 0
iptable_nat 24976 0
nf_nat 39576 1 iptable_nat
iptable_filter 20736 1
ip6table_mangle 20480 0
nf_conntrack_netbios_ns 19968 0
usbhid 65488 0
nf_conntrack_ipv4 29576 7 iptable_nat,nf_nat
hid 59296 1 usbhid
nf_conntrack 91536 6 nf_conntrack_ipv6,xt_state,iptable_nat,nf_nat,nf_conntrack_netbios_ns,nf_conntrack_ipv4
ff_memless 23176 1 usbhid
ip_tables 39056 3 iptable_mangle,iptable_nat,iptable_filter
cpufreq_conservative 26248 0
cpufreq_userspace 23556 0
cpufreq_powersave 18816 0
acpi_cpufreq 27536 1
ip6table_filter 20608 1
ip6_tables 40720 3 ip6t_LOG,ip6table_mangle,ip6table_filter
x_tables 43144 12 ip6t_LOG,xt_tcpudp,xt_pkttype,xt_physdev,ipt_LOG,xt_limit,ip6t_REJECT,ipt_REJECT,xt_state,iptable_nat,ip_tables,ip6_tables
ipv6 331544 19 ip6t_REJECT,nf_conntrack_ipv6,ip6table_mangle
microcode 32808 0
fuse 72384 5
loop 37508 0
dm_mod 88600 0
rfcomm 63392 4
l2cap 44160 12 bnep,rfcomm
arc4 19072 2
ecb 20992 2
crypto_blkcipher 38916 1 ecb
snd_hda_intel 497580 1
hci_usb 34716 0
iwl3945 116196 0
btusb 25496 2
uvcvideo 76040 0
firmware_class 27776 2 microcode,iwl3945
snd_pcm 115208 2 snd_pcm_oss,snd_hda_intel
rtc_cmos 28728 0
compat_ioctl32 25984 1 uvcvideo
sr_mod 35764 0
iTCO_wdt 30800 0
snd_timer 45072 2 snd_seq,snd_pcm
videodev 52096 2 uvcvideo,compat_ioctl32
mac80211 220568 1 iwl3945
usb_storage 112928 0
rtc_core 41012 1 rtc_cmos
rtc_lib 20224 1 rtc_core
bluetooth 82340 9 bnep,rfcomm,l2cap,hci_usb,btusb
video 43156 11
joydev 30848 0
snd_page_alloc 28688 2 snd_hda_intel,snd_pcm
cdrom 53416 1 sr_mod
sg 56912 0
v4l1_compat 29444 2 uvcvideo,videodev
iTCO_vendor_support 21124 1 iTCO_wdt
serio_raw 24708 0
cfg80211 39568 1 mac80211
output 21248 1 video
asus_laptop 38492 0
battery 33672 0
nvidia 8165472 40
snd_hwdep 28424 1 snd_hda_intel
ac 24328 0
r8169 51332 0
button 27040 0
snd 96248 10 snd_pcm_oss,snd_mixer_oss,snd_seq,snd_seq_device,snd_hda_intel,snd_pcm,snd_timer,snd_hwdep
led_class 22920 1 asus_laptop
soundcore 26000 1 snd
i2c_core 45344 1 nvidia
sd_mod 47280 6
ehci_hcd 56204 0
uhci_hcd 43936 0
usbcore 188376 8 usbhid,hci_usb,btusb,uvcvideo,usb_storage,ehci_hcd,uhci_hcd
edd 28176 0
ext3 170896 2
mbcache 27396 1 ext3
jbd 82368 1 ext3
fan 23944 0
ata_piix 43396 0
ahci 51080 5
libata 195232 2 ata_piix,ahci
scsi_mod 195032 5 sr_mod,usb_storage,sg,sd_mod,libata
dock 29344 1 libata
thermal 44448 0
processor 72920 4 acpi_cpufreq,thermal

total used free shared buffers cached
Mem: 3095064 726312 2368752 0 27660 336628
-/+ buffers/cache: 362024 2733040
Swap: 2097544 0 2097544

===== Mon Oct 27 19:25:49 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/05led =====
===== Mon Oct 27 19:25:49 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/06autofs =====
===== Mon Oct 27 19:25:49 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/10NetworkManager =====
===== Mon Oct 27 19:25:49 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/20reset-bluetooth =====
===== Mon Oct 27 19:25:49 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/30s2disk-check =====
===== Mon Oct 27 19:25:49 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/45pcmcia =====
ejecting PCMCIA cards...
===== Mon Oct 27 19:25:49 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/50modules =====
===== Mon Oct 27 19:25:49 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/55battery =====
===== Mon Oct 27 19:25:49 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/80acpi-fan =====
===== Mon Oct 27 19:25:49 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/80videobios =====
===== Mon Oct 27 19:25:49 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/94cpufreq =====
===== Mon Oct 27 19:25:49 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/95led =====
===== Mon Oct 27 19:25:49 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/99Zgrub =====
===== Mon Oct 27 19:25:49 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/99info =====
Mon Oct 27 19:25:49 CST 2008: done running suspend hooks.
+ /usr/sbin/s2ram
Machine is unknown.
This machine can be identified by:
sys_vendor = "ASUSTeK Computer Inc. "
sys_product = "F6S "
sys_version = "1.0 "
bios_version = "304 "
See http://en.opensuse.org/S2ram for details.

If you report a problem, please include the complete output above.
If you report success, please make sure you tested it from both X and
the text console and preferably without proprietary drivers.
+ RET=127
+ set +x
Mon Oct 27 19:25:50 CST 2008: running resume hooks.
===== Mon Oct 27 19:25:50 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/99info =====
===== Mon Oct 27 19:25:50 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/99Zgrub =====
===== Mon Oct 27 19:25:50 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/95led =====
===== Mon Oct 27 19:25:50 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/94cpufreq =====
===== Mon Oct 27 19:25:50 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/80videobios =====
===== Mon Oct 27 19:25:50 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/80acpi-fan =====
===== Mon Oct 27 19:25:50 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/55battery =====
method return sender=:1.1 -> dest=:1.254 reply_serial=2
boolean false
===== Mon Oct 27 19:25:50 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/50modules =====
===== Mon Oct 27 19:25:50 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/45pcmcia =====
inserting PCMCIA cards...
===== Mon Oct 27 19:25:50 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/30s2disk-check =====
===== Mon Oct 27 19:25:50 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/20reset-bluetooth =====
===== Mon Oct 27 19:25:50 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/10NetworkManager =====
===== Mon Oct 27 19:25:50 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/06autofs =====
===== Mon Oct 27 19:25:50 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/05led =====
===== Mon Oct 27 19:25:50 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/01logging =====
===== Mon Oct 27 19:25:50 CST 2008: running hook: /usr/lib/pm-utils/sleep.d/00clear =====
Mon Oct 27 19:25:50 CST 2008: done running resume hooks.

裏面看得懂的就是要你到
http://en.opensuse.org/S2ram 看看
果然看了就得到解答了
其實有時只是您的機器沒有列入白名單中,說不支援倒是未必
# s2ram
Machine is unknown.
This machine can be identified by:
sys_vendor = "ASUSTeK Computer Inc. "
sys_product = "F6S "
sys_version = "1.0 "
bios_version = "304 "
See http://en.opensuse.org/S2ram for details.

If you report a problem, please include the complete output above.
If you report success, please make sure you tested it from both X and
the text console and preferably without proprietary drivers.

重點就是 Machine is unknown,意思就是不在白名單中
您還是可以強迫他進行 suspend to ram
以下說明都是從 http://en.opensuse.org/S2ram 抄過來的
您可以先試試 s2ram -f 強迫執行(我很好運的就 OK 了)
(根據下面的說明 nvidia 顯示卡晶片大部份用這個就可以了)
若不行,請一個一個試試以下指令
s2ram -f -a 3
s2ram -f -a 2
s2ram -f -a 1
s2ram -f -p -m
s2ram -f -p -s
s2ram -f -m
s2ram -f -s
s2ram -f -p
s2ram -f -a 1 -m
s2ram -f -a 1 -s

若都不行,再加個 -v 重試一次
請確認在 X 環境中,與 Console 環境中(用 Ctrl+Alt+F1 登入測試)都無誤
通常 intel 顯示卡可以用
s2ram -f -a 3 或 s2ram -f -p -m
ATI
Radeon 顯卡要在 kernel 傳入 vga=0 的參數,用 s2ram -f -p -m 或 s2ram -f -p -s
Nvidia 用
s2ram -f 並參考 NVidia Suspend HOWTO(我照做後發現似乎沒什不同)
詳細內容請參考原文喔
找到適合參數後
編輯一文字檔,例如 force_s2ram 內容為
S2RAM_OPTS="-f"

(當然要依照您測試的結果來寫,例如 s2ram -f -a 3 可成功,則應為
S2RAM_OPTS="-f -a 3" )
將此文字檔放在 /etc/pm/config.d/ 中
# cp force_s2ram /etc/pm/config.d/

這樣就完成了
用 KDE 選單的『暫停寫入到 RAM』或快速鍵 Fn+ZZ
就會在5秒內進入休眠,剩下一個燈泡形狀的指示燈慢慢閃爍
隨便按一個鍵,又會在5秒內回復成原來的工作
爽度蠻高的呢!

最後一件事
別忘了寫信到 suspend-devel@lists.sourceforge.net
說明您如何讓您的機器順利運作
並附上 s2ram -n
還有說謝謝

最後還是引用 http://en.opensuse.org/S2ram 的最後一句話來結束本文
"別放棄!"

2 則留言:

wkl 提到...

谢谢,我的NVIDA显卡的笔记本的成功了,不过恢复时不会像windows那样叫输入密码。

Unknown 提到...

我的會出現螢幕保護程式的鎖定,要輸入密碼才可繼續使用喔。
您試試看使用其他參數是否會改善,或是您把螢幕保護關閉了?