|
本帖最後由 nu888 於 2012-4-3 17:08 編輯
有網友提及 Grub4Dos 硬盤盤號 互換 的問題.
主要根源在使用 usb 啟動, 引導 Grub4Dos 後,
(hd0) 硬盤盤號 被 usb 所佔用, 原硬盤盤號改為 (hd1).
原硬盤盤號之變動,
使 chainloader /ntldr 無效,
使 chainloader /bootmgr 引導後, 或出現 "非正版" 之提示,
為了解決上述問題, 便引申 硬盤盤號 互換 的作法.
SWAPHD- # grub4dos BAT檔案 標示
- !BAT
- setlocal
- # 如第一參數為空, 設變量 bf 為 /bootmgr (即預設值為 /bootmgr)
- set bf=%1
- if "%bf%"=="" && set bf=/bootmgr
- # 找尋 引導檔 (例如 /bootmgr); 如失敗, 退出 為失敗退出 exit 1
- find --set-root %bf% || echo can't find %bf% && endlocal && exit 1
- # 如成功, 設置變量 bdtmp 為引導檔 所在裝置 (例如 hd1)
- set rttmp=%@root%
- set bdtmp=%rttmp:~1,3%
- # 如變量 bdtmp 為 hd0, 直接引導 引導檔. (因裝置盤號正確)
- if /i %bdtmp%==hd0 goto chainfile
- # 如變量 bdtmp 非 hd0, 與 硬盤盤號 hd0 互換
- map (%bdtmp%) (hd0)
- map (hd0) (%bdtmp%)
- map --hook
- # 衹作純指向, 不作掛載動作
- rootnoverify (hd0)
- # 盤號互換後, 引導 第一硬盤 之 第一扇區. (即 第一硬盤 之 MBR)
- chainloader (hd0)+1
- goto end
- :chainfile
- #echo %@root%
- find --set-root %bf%
- chainloader %bf%
- goto end
- :end
- endlocal
- exit
複製代碼 menu.lst- title 04. 切換盤號 -> 硬盤 Win7 (/bootmgr)\n 切換 usb 盤號 及 硬盤 Win7 盤號, 再啟動 Win7.
- swaphd /bootmgr
- boot
- title 05. 切換盤號 -> 硬盤 WinXP (/ntldr)\n 切換 usb 盤號 及 硬盤 WinXP 盤號, 再啟動 WinXP.
- swaphd /ntldr
- boot
複製代碼 SWAPHD.rar 解壓後, 將 SWAPHD 放於 usb 根目錄 \,
或放於 grub4dos 之 command path 所在地 (例如 \BOOT\GRUB 下)
改寫 menu.lst 如上.
|
評分
-
查看全部評分
|