NoName Team 電腦資訊討論區

 找回密碼
 我要註冊
搜索
查看: 8880|回復: 7

Grub4Dos - 硬盤盤號 互換

[複製鏈接]
發表於 2012-4-3 15:32:33 | 顯示全部樓層 |閱讀模式
本帖最後由 nu888 於 2012-4-3 17:08 編輯

有網友提及 Grub4Dos 硬盤盤號 互換 的問題.
主要根源在使用 usb 啟動, 引導 Grub4Dos 後,
(hd0) 硬盤盤號 被 usb 所佔用, 原硬盤盤號改為 (hd1).

原硬盤盤號之變動,
使 chainloader /ntldr 無效,
使 chainloader /bootmgr 引導後, 或出現 "非正版" 之提示,
為了解決上述問題, 便引申 硬盤盤號 互換 的作法.

SWAPHD
  1. # grub4dos BAT檔案 標示
  2. !BAT
  3. setlocal

  4. # 如第一參數為空, 設變量 bf 為 /bootmgr (即預設值為 /bootmgr)
  5. set bf=%1
  6. if "%bf%"=="" && set bf=/bootmgr

  7. # 找尋 引導檔 (例如 /bootmgr); 如失敗, 退出 為失敗退出 exit 1
  8. find --set-root %bf% || echo can't find %bf% && endlocal && exit 1

  9. # 如成功, 設置變量 bdtmp 為引導檔 所在裝置 (例如 hd1)
  10. set rttmp=%@root%
  11. set bdtmp=%rttmp:~1,3%

  12. # 如變量 bdtmp 為 hd0, 直接引導 引導檔. (因裝置盤號正確)
  13. if /i %bdtmp%==hd0 goto chainfile

  14. # 如變量 bdtmp 非 hd0, 與 硬盤盤號 hd0 互換
  15. map (%bdtmp%) (hd0)
  16. map (hd0) (%bdtmp%)
  17. map --hook
  18. # 衹作純指向, 不作掛載動作
  19. rootnoverify (hd0)
  20. # 盤號互換後, 引導 第一硬盤 之 第一扇區. (即 第一硬盤 之 MBR)
  21. chainloader (hd0)+1
  22. goto end


  23. :chainfile
  24. #echo %@root%
  25. find --set-root %bf%
  26. chainloader %bf%
  27. goto end


  28. :end
  29. endlocal
  30. exit
複製代碼
menu.lst
  1. title 04. 切換盤號 -> 硬盤 Win7 (/bootmgr)\n 切換 usb 盤號 及 硬盤 Win7 盤號, 再啟動 Win7.
  2.         swaphd /bootmgr
  3.         boot

  4. title 05. 切換盤號 -> 硬盤 WinXP (/ntldr)\n 切換 usb 盤號 及 硬盤 WinXP 盤號, 再啟動 WinXP.
  5.         swaphd /ntldr
  6.         boot
複製代碼
SWAPHD.rar 解壓後, 將 SWAPHD 放於 usb 根目錄 \,
或放於 grub4dos 之 command path 所在地 (例如 \BOOT\GRUB 下)
改寫 menu.lst 如上.



SWAPHD.rar

317 Bytes, 下載次數: 481

評分

參與人數 1金錢 +10 收起 理由
noname + 10 贊一個!

查看全部評分

發表於 2012-4-3 17:26:14 | 顯示全部樓層
本帖最後由 smallhaung 於 2012-4-3 17:46 編輯

讚 ~高級智慧判斷用法
我是不會寫批次處理
程式邏輯沒那麼強
所以只能土法煉鋼 用自己看的懂得方式寫 呵呵

有2個地方有點不懂
  • set rttmp=%@root%
加個@是啥意思

2.  set bdtmp=%rttmp:~1,3%
:~1,3  這是啥意思


 樓主| 發表於 2012-4-3 22:10:43 | 顯示全部樓層
有2個地方有點不懂
    set rttmp=%@root%
加個@是啥意思

2.  set bdtmp=%rttmp:~1,3%
:~1,3  這是啥意思

grub4dos 有幾個 專屬變量,
我記得的有 @root 及 @path.

:~1,3 意思取 第1位 至 第3位 的字串.
以 (hd0,0) 為例, 第0位 是 "(".
:~1,3 是 hd0



發表於 2012-4-3 22:44:03 | 顯示全部樓層
nu888 發表於 2012-4-3 22:10
grub4dos 有幾個 專屬變量,
我記得的有 @root 及 @path.

原來如此  懂了
dos只會一些簡單的
dos強的  可以寫出好多東西喔
感覺會寫程式的都超強
邏輯都要很好才行
發表於 2016-1-1 16:17:03 | 顯示全部樓層
感謝教導, 辛苦了.
發表於 2016-6-24 17:40:22 | 顯示全部樓層
樓主您好
我跟著步驟做可是遇到下面的問題該怎麼解決呢?
發表於 2016-6-24 18:12:18 | 顯示全部樓層
flyinking 發表於 2016-6-24 17:40
樓主您好
我跟著步驟做可是遇到下面的問題該怎麼解決呢?

你是直接 map win7 的 原始 iso 吧
這和 usb 位置無關 ...
看一下這個吧 http://nonameteam.cc/thread-3014-1-1.html
發表於 2022-5-24 08:55:35 | 顯示全部樓層
厲害!厲害!
搞好久才知如此
您需要登錄後才可以回帖 登錄 | 我要註冊

本版積分規則

小黑屋|手機版|NoName Team 電腦資訊討論區 |網站地圖

GMT+8, 2024-5-2 05:54 , Processed in 0.246696 second(s), 29 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表