網路上提到 XP 休眠的問題有很多種, 而我這次遇到的是記憶體昇級和疑似 Gavotte Ramdisk 造成的無法休眠。
兩年前買 NB DDR2 512MB 還要 $1200, 但這次買 2GB 只要 $950, 真的便宜許多, 。只是 記憶體從 1GB (0.5+0.5) 昇級到 2GB 以上 (2 或 2+0.5), 及安裝 Gavotte Ramdisk 之後就無法休眠。
下面就來看此次排除的經過囉~~
.
待命 與 休眠
待命 Suspend to Memory (S3), Standby | 休眠 Suspend to Disk (S4), Hibernate | |
特色 | 保留記憶體內容, 只供電給記憶體, 關閉其他電源, 可在幾秒之內待命及還原 | 將記憶體內容儲存到硬碟, 關閉所有電源 (就是真的關機), 下次開機再從硬碟回復。休眠及還原大約各需要30秒到數分鐘, 視記憶體大小及硬碟速度而定 |
需求 | 需保留與記憶體大小相同的硬碟空間 (XP 內定為 C:\hiberfil.sys) | |
適用場合 | 短時間不使用電腦, 或短距離移動時 | 完全關閉電腦電源, 但又希望保留先前的工作狀態時 |
影響『待命』與『休眠』是否能正常運作的因素大致上有 :
- 硬體 : 硬體故障, 或硬體不相容
- 軟體 : 安裝或更新的程式有問題, 或是系統檔案有問題
- 使用情境 : 有時透過網路分享檔案時, 可能會無法『待命』與『休眠』
參考資料
.
XP 休眠問題排除過程
| 可以正常 待命 與 休眠 |
| 無法休眠, 嘗試要休眠時, 螢幕會黑一下就馬上回來, 之後就只能待命, 而且『電源選項』的休眠分頁也跟著消失, 要重新開機才會再出現。 有時剛開機不執行太多程式, 卻又可以休眠。 |
| 沒有改善 |
沒有改善 | |
| 沒有改善 |
| 開機輸入登入密碼之後出現錯誤, 無法開機到出現桌面 |
| 2008-09-29 可以正常 待命 與 休眠 |
| 2008-09-29 可以正常 待命 與 休眠 觀察中 |
後續可能的動作 | |
| |
.
乍看之下, 似乎『KB909095 修正程式』就是解藥了, 以下是微軟官網的敍述
電腦偶爾無法依照您的操作進入休眠。發生此問題時,會出現類似下列的錯誤訊息:
系統資源不足,無法完成 API。
出現此問題時,必須重新啟動電腦,休眠功能才可恢復使用。
此問題通常是起因於電腦使用了 1 GB 或更多的 RAM。
在安裝『KB909095 修正程式』之前, 我可是半信半疑 (下面會解釋原因)。但是安裝之後, 已經在 2GB 的記憶體下成功休眠大約十次, 應該是沒有問題了。
至於 Gavotte Ramdisk 暫時先不裝, 因為在 mobile01 看到另一種說法 :
PageFile.sys 存在與否的迷思 (mobile01, 2008-04-08)
後來是解決了啦
之後在C:\跟R:\下各設(30-30)
那個速度就很快的微妙
既然記憶體夠大之後, 可以將 分頁檔 設為 (30-30), 那還需不需要 RamDisk 啊? (上面 R:\ 指的是 RamDisk), 我看還是先試試不要有 RamDisk 的狀況好了, 所以我目前的組態是 :
| |
| |
| 2GB 的記憶體下, 進入休眠只要 20秒, 開機如果不算 BIOS 的話, 20秒可看到桌面, |
.
休眠外一章 -- 硬碟速度
由前一台筆電的經驗 ( IBM Thinkpad 240, 有機會在『我的電腦 』系列會提到), 得知硬碟速度對系統效能的影響 。所以這次同時昇級記憶體和硬碟, 由下面列出的 HD Tune 實測數據可以看出, 80GB 到 160GB 不只容量變大, 讀取的速度也變成將近兩倍。平時使用當然是『如虎添翼』, 而且休眠也不會因為記憶體容量變大, 而多花太多時間。
80GB | 160GB | |
轉速 | 5400 rpm | 5400 rpm |
內圈讀取速度 | 34 MB/sec | 66 MB/sec |
外圈讀取速度 | 17 MB/sec | 33 MB/sec |
.
追、追、追 -- 『KB909095 修正程式』修正了什麼 ?
下面細節或許太瑣碎, 擔心消化不良的人就直接跳過吧 !!
對於『KB909095 修正程式』, 我真的是半信半疑。在安裝之前, 我試了幾次, 雖然無法休眠, 但是 並沒有出現『系統資源不足,無法完成 API』的錯誤訊息。另外微軟官網記載『KB909095 修正程式』的檔案日期是 2005-10-12。而我電腦裡面的是 2007-03-01, 似乎沒有安裝舊版本來解決問題的道理。
能休眠和不能休眠時, 都可以看到『Windows Image Acquisition (WIA) 服務已進入 執行中 狀態』的記錄, 分不出有什不同, 也沒有出現『系統資源不足,無法完成 API』的錯誤訊息。 |
微軟官網記載『KB909095 修正程式』的檔案日期 2005-10-12 |
還是姑且一試, 裝完修正程式之後, 先去看到底改了什麼
- c:\WINDOWS\$NtUninstallKB909095$
=> 沒有備份任何檔案 - c:\WINDOWS\KB909095.log
=> 複製檔案: c:\windows\inf\branches.inf, 和一些看不懂的 branch 比對記錄 - C:\WINDOWS\system32\ntkrnlpa.exe 和 ntoskrnl.exe 的日期還是 2007-03-01, 而沒有 ntkrpamp.exe 和 ntkrnlmp.exe
這樣就有效了嗎? 但是 安裝『KB909095 修正程式』似乎真的解決了問題 ...., 該怎麼解釋呢?
.
不小心發現和 KB909095 安裝時間非常接近的, 還有另一組 $NtUninstallKB931784$、KB931784.log
仔細查看 KB931784.log 的內容, 發現它裡面有一年前的安裝記錄
在同一個檔案裡面, 又加了一段時間是 2008/09/29 20:39:28 的安裝記錄, (剛好緊接在 KB909095 的 2008/09/29 20:38:54 之後), 難道說 KB909095 檢查版本後, 沒直接安裝自己的內容, 但是因為那四個檔案的相依性, 所以又接著由 KB931784 將 KB909095 的『branch』合併進來, 才修正完成 ?
.
至於 KB931784 的說明, 看來真的和 休眠 沒什麼關係。
MS07-022:Windows 核心的弱點可能會允許權限提高 (KB931784)
...當系統嘗試連線到 Windows Update 時,可能會發生問題。之所以發生這個問題,是因為原始發行的安全性更新中的 Ntoskrnl.exe 檔版本號碼不正確。...
.
2 意見:
發表您的回應好文!
2008年11月6日 下午4:21
謝謝 !!
2008年11月8日 下午6:00
張貼留言