2009年10月31日 星期六

將Vista、Windows Server 2008的開機磁區複製到另一顆HD後,郤無法開機?

案例 :

將伺服器上原本已有安裝Windows Server 2008的HD,用Ghost 複製到另一顆HD上,
然後將原本的HD卸除,改以這顆新複製的HD來開機,但在開機後郤出現如下所示的錯誤訊息...

============================================================
Windows 無法啟動。 最近的硬體或軟體變更可能原因。 若要修正問題:

1.插入您的 Windows 安裝光碟並重新啟動您的電腦。
2.選擇您的語言設定,然後按一下 [下一步]。
3.按一下修復您的電腦。

如果您沒有這片光碟請連絡您的系統管理員] 或 [電腦製造商以取得協助。

檔案: \Windows\system32\winload.exe

狀態: 0xc00000001

資訊: 無法載入選取的項目,因為應用程式遺失或損毀。
============================================================
詳情請參考 http://h50178.www5.hp.com/support/GU404PA/solve/82920.html ,以下為全文複製。

原因 :

在 Vista 之前的 NT 版本中,開機檔案 (ntldr、Ntdetect.com 和 boot.ini) 全部位於開機磁碟作用中主要分割區的 root 中。
在 Vista 中,這三個檔案已被 bootmgr、Boot Configuration Data (BCD) 和 winload.exe 取代,
但只有 bootmgr 和 BCD 仍在系統分割區的 root 中,
而 winload.exe 現在則常駐在 Boot 分割區的 Windows/system32 資料夾內。 BCD 檔案已取代 boot.ini檔案。

舊版的 WinNT 使用 boot.ini 檔案尋找硬碟和分割區的位置。
結合 boot.ini 資料和電腦的 BIOS 資料後,ntldr 會判斷用來開機的 Windows/system32 是在哪一個硬碟和分割區內。

Vista 已變更開機程序: 硬碟獨有的磁碟簽章 (從 MBR) 儲存在 BCD 中。
將影像檔 (Rdeploy、Ghost 等) 回復到另一個硬碟後,簽章也會隨之變更。
Bootmgr 會掃描所有硬碟以尋找此簽章,如果找不到,開機程序便會停止並顯示「unable to access \windows\winload.exe」。


解決辦法 :

* 在製作影像檔之前:

如果 Vista 位於開機磁碟的主要分割區中,便會使用 BCDedit 命令來「一般化」安裝作業,
以建立影像檔 (因此會從目前所用的分割區開機,而不檢查磁碟簽章)。
此方法與 Microsoft sysprep 公用程式所使用的方法相同。 按一下滑鼠右鍵開啟命令提示字元,
選擇「以系統管理員身分執行」後,再鍵入下列命令:

bcdedit /set {current} osdevice boot bcdedit /set {current} device boot bcdedit /set {bootmgr} device boot


*在複製之後:

有數種可能的程序,下文摘自 http://support.microsoft.com/kb/927391

方法 1: 使用「啟動修復」選項來修復 BCD 存放區
  1. 將 Windows Vista (or Windows Server 2008)安裝光碟放入光碟機,再啟動電腦。
  2. 於光碟開機提示時按下任一按鍵。
  3. 選取語言、時間、貨幣和鍵盤或其他輸入方法後,再按一下「下一步」。
  4. 按一下「修復您的電腦」。
  5. 依序按下欲修復的作業系統和「下一步」。 6. 按一下「系統修復選項」對話方塊中的「啟動修復」。
  6. 重新啟動電腦。

方法 2: 使用 Bootrec.exe 工具重建 BCD 存放區。如果前一個方法無法解決問題,
便可使用 Windows Recovery Environment 中的 Bootrec.exe 工具來重建 BCD 存放區。
  1. 將 Windows Vista (or Windows Server 2008) 安裝光碟放入光碟機,再啟動電腦。
  2. 於提示時按下任一按鍵。
  3. 選取語言、時間、貨幣和鍵盤或其他輸入方法後,再按一下「下一步」。
  4. 按一下「修復您的電腦」。
  5. 依序按下欲修復的作業系統和「下一步」。
  6. 按一下「系統修復選項」對話方塊中的「命令提示字元」。
  7. 鍵入 Bootrec /RebuildBcd 後按下 Enter。

如果原本機器上有安裝Hyper-V,在更換HD後,會連帶造成Hyper-V無法正常運作,
出現Hypervisor未啟動的錯誤訊息,此時只要進入命令提示字元,
輸入" BCDEdit /set hypervisorlaunchtype auto "的指令,再重新開機就能解決。

2009年10月8日 星期四

Adaptive Sleep Mode Algorithm in IEEE 802.16e

主旨及問題 :
由於傳統的Type 1,在睡眠時間到達maximum sleep window interval之後,如果依然還是沒有資料要傳輸,
那麼就會持續使用maximum sleep window interval作為其睡眠時間的依據,
但此時接著就會產生2個問題。

1. 傳輸延遲 : 當接下來如果有data在睡眠時產生,MSS需等到睡眠時間結束後才能甦醒,
待進入Listen window而得知有資料要傳輸,最後才跳離sleep mode回到normal mode.

2. 不必要的電源損耗 : 如果MSS睡到一半的時後,突然有資料產生要傳送,
此時MSS若不等到maximum sleep window interval結束,
而是只再睡一小段時間(假設 此一小段的時間 小於 maximum sleep window interval ),
那麼與原本要睡完一整個maximum sleep window interval時間相比,
此時MSS就會有不必要的電源損秏產生。

P.S : 此篇論文的假設前提,是架構在連MSS進入睡眠時,都會有電源消耗的情況之下,
而並非一般普遍所認為的,在進行睡眠時不會消耗電源的情況。

作法 :
若MSS的睡眠時間,已到達maximum sleep window interval,接下來不再是睡maximum sleep window interval這個時間,
而是改睡AVG這個時間長度,AVG = (initial sleep windows size + maximum sleep window size)/2,
除此之外,AVG亦會以2的指數倍成長,最大不得超過AVGmax這個時間長度(由user自行訂定)。
而當MSS的睡眠時間長度又到達AVGmax後,下一個睡眠時間長度又將再回到AVG。

換言之 : initial sleep window size 小於等於 AVG 小於 AVGmax 小於等於 maximum sleep window size

MSS一整個睡眠時間長度變換過程如下 :

Normal mode → initial sleep window size → initial sleep window size x 2 → initial sleep window size x 4 → initial sleep window size x 8 → ..... → maximum sleep window size → AVG → AVG x 2 → AVG x 4 → AVG x 8 → ..... → AVGmax → AVG → AVG x 2 → AVG x 4 → AVG x 8 → ..... → AVGmax → .....

結論 :
因為MSS的睡眠時間在第一次到達maximum sleep window interval之後,接下來就會改睡AVG (or AVGmax)這個時間,
又AVG & AVGmax皆小於maximum sleep window interval,所以即使接下來有資料要傳送,
那麼與原本要睡完一整個maximum sleep window interval相比,可以減少傳輸延遲及不必要的電源消耗。