前幾天有網友留言詢問Win7旗艦版32位+64位多合一鏡像的制作方法。其實基於原版的多合一鏡像制作過程是非常簡單的,不過因為涉及到幾個命令行工具的用法,可能一些朋友會感覺比較難上手或者只限於教程中的內容而不懂得怎麼去靈活運用這些命令。
什麼是命令行工具?
所謂命令行工具,它們不像普通的應用軟件那樣可以在圖形界面(窗口)上通過簡單的點擊按鈕等操作來執行任務,而是需要在命令提示符(CMD)或者PowerShell中通過手動輸入一條條命令的方式來執行某些特殊任務的一類
工具。比如,DiskPart(分區管理工具)、DISM(映像管理工具,本文的主角)等等。
網上可以找到基於這些命令行工具或者基於微軟開放的相關API制作出來的具有圖形界面的替代軟件。也寫過一個基於API的DISM映像管理工具,不過功能非常有限,因為不滿於丑笨的MFC框架(無奈只略通這個框架)就沒有繼續開發下去。
不過,盡管可以找到替代工具,如果你沒有一點基礎,在沒有附加說明的情況下,單是那些專用名詞都可能會讓你感到頭疼了。而我個人還是傾向於使用命令來操作,所以就借這個機會把相關基礎知識總結一下吧,同時方便自己查詢。如果你對這些內容非常感興趣,希望這篇文章能成為你掌握相關內容的非常棒的入門文章,嗯,僅僅是入門,更多的內容還請參考微軟官方文檔並多多嘗試。至於開頭那位朋友的問題,就作為一個例子放到最後面吧。
多合一鏡像制作原理:
多合一鏡像制作基本上所有的操作都圍繞在wim文件(映像文件)的處理上。關於wim文件,建議閱讀《認識wim格式文件,學習使用Dism工具捕獲系統映像的相關命令》。我們知道wim文件中包含了操作系統的所有文件。一個wim文件可以包含多個版本系統文件,並且能做到相同的文件只存儲一次。而多合一鏡像其實就是把各版本的系統文件都存儲到一個wim文件而已。
下載命令行工具:
1、 DISM
關於DISM,之前也有過初步介紹,這是可以用來處理wim文件的工具。之前,我們用imageX工具來處理映像文件,而新版(Win8/8.1自帶)DISM工具已經包含了imageX的大部分功能,與映像相關的操作我們盡量都用DISM來完成。
2、 imagex
用於修改wim中包含的映像名稱(列表中的名稱)和映像描述(選中版本後列表下方的提示文字)。沒有在官方文檔中找到用DISM修改映像名稱和描述的命令,如果確實有這個命令,希望知道的人告知一下~~
3、 Oscdimg
這是用來將散裝文件打包成ISO鏡像文件的工具。
以上工具均可以從微軟發布的ADK for win8.1中提取,請下載ADK在線安裝程序(點此下載)。下載後選擇在線安裝,只選擇安裝“部署工具”。安裝後可以在Program Files目錄中找到這些工具。比如,64位系統在如下目錄:
C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Deployment Tools
使用命令行工具需注意的幾點:
1、 權限
系統附帶的命令行工具多數需要以管理員身份運行,因此需要以管理員身份運行CMD(或PowerShell),根據權限繼承原理,在其中運行的命令行工具也就都具有了管理員權限。
2、 路徑
要正常使用命令行工具需要保證CMD(或PowerShell)的當前路徑為命令行工具所在目錄,或者命令行工具所在目錄已被包含在系統的環境變量path當中。在CMD(或Powershell)中輸入下面的路徑可更改當前路徑:
cd /d 目標路徑
3、 格式
命令行工具命令格式一般為:
命令行工具名稱 /命令參數1 /命令參數2
參數可以有多個,注意/符號前面有一個空格,注意所有字符均為半角字符(包括空格)。例子:
DISM /?
上面這條命令作用是查看DISM工具的使用幫助內容。
以上三點可在下圖中體現出來:
注:圖中是在Win8.1下的截圖。DISM工具是Win8/8.1系統自帶的命令行工具,其路徑為C:\Windows\system32,默認情況下該路徑已包含在環境變量path當中。
整合鏡像涉及到的命令詳解
1、 查詢wim中包含的各映像信息(包括索引、名稱和描述)
dism /get-imageinfo /imagefile:I:\sources\install.wim
注:索引即編號。上面的命令即為查詢I:\sources\install.wim中包含的映像信息。
2、 刪除wim中某個映像
dism /delete-image /imagefile: F:\install.wim /index:1
注:上面的命令用於刪除F:\install.wim中第1個映像。本條命令以及下面的命令都需要對install.wim進行修改,因此需要將install.wim從鏡像中復制出來,不可用虛擬光驅加載。
3、 修改wim中某個映像的名稱和描述
imagex /info F:\install.wim 1 “Windows 8 企業版 [32位]” “Windows 8 Enterprise 32bit”
注:這是修改F:\install.wim中第1個映像的名稱(第一個引號內的文字)和描述內容(笫二個引號內的文字),注意使用imageX不允許同一個wim中各映像有重名。
4、將一個wim中的某個映像復制到另一個wim中
Dism /export-image /sourceimagefile:I:\sources\install.wim /sourceindex:1 /destinationimagefile:F:\install.wim /destinationname:”Windows 8 企業版 [64位]”
注:這是將I:\sources\install.wim中的第1個映像復制到F:\install.wim中,即在F:\install.wim中已有映像的基礎上再加一個映像,並且將新添加的映像命名為Windows 8 企業版 [64位]。新添加的映像編號最大,即排在最後。
F:\install.wim文件可以為空(即不存在),為空時系統會自動創建新的映像文件,映像編號從1開始,此時可以加上/Compress: maximum參數已達到最大壓縮效果。可以去掉 /destinationname: ” Windows 8 企業版 [64位] “,即復制映像時保持原映像名稱。
5、 將wim中的某個映像升級到更高版本
只有零售版鏡像(通常都是多版本鏡像)中的映像可以升級到高版本,批量授權版(通常都是包含一個版本,比如企業版和大客戶專業版鏡像)不可以升級。升級映像前需要先裝載映像,升級後再提交更改並卸載映像。詳細步驟:
① 裝載映像
dism /mount-image /imagefile:F:\install.wim /index:1 /MountDir:E:\Win8
注:上面的命令用於將E:\install.wim中的第一個映像裝載到E:\Win8目錄中,需事先創建E:\Win8文件夾。
② 查詢可升級版本(即查詢裝載的映像可升級到哪個版本)
dism /image:E:\Win8 /get-targeteditions
③ 升級到高版本
dism /image:E:\Win8 /set-edition:ProfessionalWMC
注:以上命令將裝載到E:\Win8的映像升級到ProfessionalWMC(即媒體中心)版。
④ 提交更改並卸載已裝載映像
dism /unmount-wim /mountdir:E:\Win8 /commit
6、打包ISO
將制作好的install.wim替換原版鏡像中的install.wim即可,這裡要注意幾點:
① 如果整合映像同時包含32位和64位版本,請選擇32位零售版鏡像作為母本來打包。因為只有32 位 Windows 安裝程序支持跨平台部署(微軟官方說明,沒有去驗證。之前制作8.1多合一時也忽略了這一點)。
② 跳過密鑰輸入步驟實現安裝時自選版本。對於win7,刪除sources中的ei.cfg即可;對於Win8/8.1需添加ei.cfg。
④目前UEFI均為64位,因此只有64位系統支持UEFI引導,要使制作好的鏡像支持UEFI引導務必采用64位零售版鏡像作為母本打包。要光盤UEFI引導打包時要加上UEFI參數,命令在下面會有說明。
⑤用U盤實現UEFI引導,文件系統必須為FAT32,而FAT32單文件大小限制在4G內,如果install.wim超過了4G,此時必須進行映像拆分。命令如下:
Dism /Split-Image /ImageFile: F:\install.wim /SWMFile:D:\image\install.swm /FileSize:4096
上面的命令用於將F:\install.wim文件進行拆分,拆分後的文件最大為4G,並且將拆分後的文件存放到了D:\image中,拆分後的第一個文件名為install.swm、第二個為install2.swm,以此類推。打包時將拆分後的所有文件替換原版鏡像中的install.wim即可。
⑥ 映像文件超過4.5G時需要指定啟動順序文件,以確保啟動文件都位於映像的開頭。可參考《Oscdimg 命令行選項》。
⑦ 不建議將不同版本號(例如Win8.1 9月份版和10月份版)整合到一起,因為整合後的文件會比較大。也不建議將不同代的系統整合到一起(比如win7+Win8),在安裝時可能會出現問題。
打包命令:
制作僅包含傳統引導方式(BIOS)的ISO鏡像:
Oscdimg -betfsboot.com -m -u2 -h -udfver102 -lHRM_CCSA_X64FRE_ZH-CN_DV5 -t8/22/2013,22:22:22 E:\isox64 E:\MyISO.iso
命令解釋:
-b:指定要寫入的啟動扇區文件(這裡是BIOS啟動方式)
-m:忽略映像的最大大小限制
-u2:生成僅包含 UFD 文件系統的映像
-udfver102:指定了 UDF 文件系統版本 1.02
-l:指定卷標(就是加載鏡像後在資源管理器中顯示的名稱)
-t:為所有文件和目錄指定時間戳,資源管理器中文件修改日期統一顯示為指定的時間。
E:\isox64 表示要打包的文件所在目錄
E:\MyISO.iso 表示最終生成的文件。
制作包含傳統引導方式(BIOS)以及UEFI引導的鏡像:
Oscdimg -bootdata:2#p0,e,bEtfsboot.com#pEF,e,bEfisys.bin -m -u2 -h -udfver102 -lHRM_CCSA_X64FRE_ZH-CN_DV5 -t8/22/2013,22:22:22 E:\isox64 E:\MyISO.iso
這裡的-bootdata:2就表示含兩種引導方式。
以上就是制作多合一鏡像的基本原理和注意事項。更多的內容以後再補充,也可以參考微軟官方文檔《DISM 映像管理命令行選項》《Oscdimg 命令行選項》。
最後回答一下開頭的問題,制作win7 32位旗艦版和64位旗艦版二合一鏡像的步驟:
1、分別下載微軟原版win732位旗艦版和64位旗艦版鏡像[下載],用虛擬光驅加載兩個鏡像,假如32位旗艦版鏡像盤符為E,64位旗艦版鏡像盤符為F。因為制作的是32位+64位二合一,所以基於32位旗艦版鏡像打包。解壓32位旗艦版鏡像到D:\Win7(即把boot,sources等文件或文件夾復制到D:\win7),刪掉D:\win7\sources中的install.wim和ei.cfg(其實不刪除ei.cfg文件也可以,因為旗艦版中ei.cfg指定系統版本為旗艦版,而鏡像本身就是旗艦版二合一鏡像,依然會出現選擇列表)。
2、復制下載到的工具到D:\中(即把x86,amd64文件夾復制到D:\中),以管理員身份運行cmd,以此運行下面的命令即可。
1.cd /d D:\x86
2.Dism /export-image /sourceimagefile:E:\sources\install.wim /sourceindex:5 /destinationimagefile:D:\Win7\sources\install.wim /compress:maximum
3.imagex /info D:\Win7\sources\install.wim 1 “Windows 7 旗艦版 [32位]” “Windows 7 Ultimate 32bit”
4.Dism /export-image /sourceimagefile:F:\sources\install.wim /sourceindex:4 /destinationimagefile:D:\Win7\sources\install.wim
5.imagex /info D:\Win7\sources\install.wim 2 “Windows 7 旗艦版 [64位]” “Windows 7 Ultimate 64bit”
6.Oscdimg -betfsboot.com -m -u2 -h -udfver102 -lGSP1RMCULFRER_ZH-CN_DVD -t8/22/2013,22:22:22 D:\Win7 D:\MyWin7.iso
So easy~是不是?