2008年4月10日 星期四

USB 隨身碟 多版本 XPE 開機

如果只需單一版本的 XPE 開機, 請參考『USB 隨身碟 DOS, Grub, XPE 多重開機實作

如果要在同一個 隨身碟 放兩個以上的 XPE 版本, 請參考 本篇

這次, 主要是使用 autoexec.bat 直接呼叫 grub.exe 來引導 XPE 開機, 另外還用到 MOVE 指令來搬移檔案

.

準備材料

開機設定

  • 目錄結構

2008-04-10_165920 

- XPE 的檔案 SETUPLDR.BIN (更名為 RXPE), RXPE.IM_, RXPE.SIF, RXPE.COM 都複製到同一目錄, 使所有檔案都是 RXPE 開頭 (包含自行編寫的 RXPE0.BAT), 另外再複製 OUTTOOL 整個目錄

- Grub4Dos 只需要 GRUB.EXE, GRLDR, 另外需自行編寫 MENU.LST

請注意不同版本的 XPE 檔案的目錄名稱, 例如:
0504 版的檔案放在 0504 的目錄, 對應的 outtool 目錄則改名為 out0504
1030 版的檔案放在 1030 的目錄, 對應的 outtool 目錄則改名為 out1030
  • 檔案搬移圖示

2008-04-10_174009 

  • Config.sys  (DOS 開機選單)

[menu]
menuitem=DOS, DOS
menuitem=1030, XPE 1030 (Grub ...)
menuitem=0504, XPE 0504 (Grub ...)
menuitem=noemm, DOS without himem, emm386

 

menudefault=DOS,10
menucolor=15,1

- 預設 10 秒後, 以 DOS 開機
- menucolor 非必需

[DOS]
DOS=high,umb
devicehigh=\dos\himem.sys
devicehigh=\dos\emm386.exe noems

- DOS 的設定

[1030]

[0504]

[noemm]

-這邊不要放任何 DOS 設定

.

  • Menu.lst  (Grub 開機選單)
chainloader /RXPE - 原本的 SETUPLDR.BIN 改名為 RXPE, 以方便搬移檔案的操作

.

  • Autoexec.bat  (DOS 開機自動執行)
@echo off
goto %config%

- 跳到指定的開機設定

:DOS

goto end


- 原本的 DOS 開機自動執行, 放這裡

:1030

:0504

call XPE.bat %config%




- 搬移指定版本的 XPE 檔案, 並呼叫 grub.exe 來引導 XPE 開機
:end  

.

  • 存放在 1030 目錄裡的 RXPE0.BAT

@echo off
set XPE=1030

.

  • 存放在 0504 目錄裡的 RXPE0.BAT

@echo off
set XPE=1030

.

  • XPE.BAT
  • 需要用到 MOVE 外部指令, 最好包含在 PATH 的搜尋目錄中
  • 不只在 AUTOEXEC.BAT, 在 DOS 命令列也可以使用, 只要 Grub 沒有和 himem, emm386, 或其他 DOS 程式相衝
  • 使用方法

XPE

XPE 版本名稱

XPE 非法名稱

 

=> 沒有參數, 直接用前次的 XPE 開機

=> 以指定版本的 XPE 開機

=> 將前次開機的 XPE 移回原目錄

.

@echo off
cd \
rem 沒有參數, 直接用前次的 XPE 開機
if %1.==. goto check_boot
rem 檢查是否有前次開機的 XPE
if not exist \RXPE0.bat goto no_previous
rem 將前次開機的 XPE 移回原目錄
Call RXPE0
move \outtool \out%XPE%
move \RXPE*.* \%XPE%
echo.
set XPE=
:no_previous
rem 檢查本次的 XPE 目錄是否有檔案
if not exist \%1\RXPE.IM_ goto not_valid
rem 檢查前次開機的 XPE 是否清除
if exist \RXPE.IM_ goto not_empty
rem 將本次開機的 XPE 移到根目錄
move \out%1 \outtool
move \%1\RXPE*.* \
echo.
:check_boot
rem 檢查次開機的 XPE 檔案, 並取得版本
if not exist \RXPE.IM_ goto not_boot
if not exist \RXPE0.bat goto not_boot
Call RXPE0.bat
dir \outtool
echo.
dir \RXPE*.*
echo.
echo ==== Ready to boot XPE %XPE% ====
echo.
rem 如果不想暫停, 可以移去 pause 指令
pause
rem 以 grub 呼叫 XPE 開機
grub
goto end
rem ==== 以下為錯誤訊息 ====
:not_valid
rem XPE 版本參數不正確
echo ==== "%1" is not a valid parameter !! ====
goto end
:not_empty
rem 前次開機的 XPE 無法清除
dir \RXPE*.*
echo ==== Please move previous XPE back to its folder to proceed !! ====
goto end
:not_boot
rem 找不到本次開機的 XPE 檔案
echo ==== XPE NOT Ready ====
:end

.

注意事項

  • 請確認你的電腦是否將 USB 隨身碟 開機為 C:。因為, 如果 USB 隨身碟 開機為 A: 可能會讓 Grub 無法正常運作
  • 目前發現, 兩個版本的 RXPE (原 SETUPLDR.BIN), RXPE.COM, RXPE.SIF 檔案完全一樣, 所以也可以只處理 RXPE.IM_ 和對應的 outtool 即可

.

參考資料

0 意見:

發表您的回應

張貼留言