|
本帖最後由 阿達金田一 於 2015-5-7 19:16 編輯
最後更新...因為玩的差不多了...不想玩了
WBTools 2015.05.07 (就只有 WBTools ...純檔案...非ISO)
發文驗証碼: 3ik2uxq3jjz28nd
WBTools 20515.05.07 + 官方 Win8.1 PE x86
發文驗証碼: 63j2hwpv7hg202b
(PE 的 UEFI 開機都被我砍了...因為我沒在用而且那是 UEFIx86(32) ... UEFIx64 的也不能用 )
各 cmd 一樣請用參數 xxxx ? 看說明
說明大部份有改成中文...雖然說明的很隨便...可能讓人看不懂
這裡只說一下說明中沒提的
有關 vhd 的 cmd ....( vhdxxx.cmd )
其實都是共用一樣的環境變數
vhdct vhdass vhddel 共用 vhd
vhdct 另外還有 size type
另外...只要環境奱數設定還在...其實不用再打參數...直接下指令就可以
(舊wbtools的也是一樣...我之前沒說而以)
因為我很懶...指令還是能短就短
例如
set vhd=c:\win.vhd
set size=40g
set type=e
vhdct
就會建立 c:\win.vhd , 40g , 動態大小 ... 自動掛到 w:
若上前變數都還在
vhddel ...就會自動把 c:\win.vhd 解掛, 然後砍了
不用在下 vhddel c:\win.vhd
如果只是要重建...也不用 vhddel ...直接執行
vhdct
就好...因為 vhdct 發現 vhd 已存在的話會自動執行 vhddel
vhdass 也一樣...只是大多數情況還是要加參數
因為 vhdct 本來就會自動掛到 w:
所以 vhdass 通常要 ass 的都不是當下變數指定的 vhd...所以參數還是要加的
舊的 NewBoot 改成 Boot
指令: Boot New/Add Windows所在磁碟 Boot磁碟 [開機項描述名稱] [/L 語系]
Boot New 就等於舊的 NewBoot
Boot Add 則是相當於 bcdboot
開機項描述名稱 ... Boot 會自動設定 description (bcdedit /store bcd /set {default} description)
/L 語系 ... 這和舊的一樣
指令: wof Windows所在路徑 [ini檔]
wof 改變 x86 x64 的判斷方式
原本我是參考那2篇文章第1篇的方法...照打的
但那是判斷當下系統的方式...(像我用 x86 PE ...舊的判斷是判斷成 x86 ...可是我 Windows 是用 x64)
我改成判斷要打包的 Windows 是 x86 或 x64
然後會 copy 相對的 wof.sys
另外可以指定 Copy 那個 ini檔 到 \Windows\System32\WimBootCompress.ini
因為考量到 Windows 可能不是在 \Windows
例如, 是在 C:\Temp\Windows 等情況...(直接把 Wim 解出來...而不是一般安裝的話)
wof 改成可以執行如下
wof c:\temp
Cap 和 Wof 差不多...自行執行 cap ? 看說明
info 用來看 wim 資料
zh-tw.ini 我自己在用的 WimBootCompress.ini
使用就是
Cap xxx xxx /i zh-tw.ini
wof /i zh-tw.ini (cap 會自動執行這個)
最後發現在一般 windows 中用 wimlib-imagex WimBoot Apply 時會出現問題...dism 沒試
所以 補充中的補充...可能沒用...還是乖乖的找 PE 來用
****************
Win7 x64 補充請看 板凳
http://nonameteam.cc/forum.php?m ... d=21913&fromuid=211
***************
前言:
繼 legacy bios + gpt + win7 後的 亂玩+惡搞
文章可能比上次還長和複雜, 因為這次是多個東西混在一起
對這些東西不夠熟的...可能會很混亂
不過上次是邊測邊打...這次是差不多測完才開始打文章
所以有先整理一下...應該會簡潔一點
不過要發文時覺的...還是好長...看了草稿...16888bytes 中文字 1個字2個bytes... 也有8000多個字
一夜沒睡...發完要來睡
在此文之前...我已玩過 win81 的 wimboot 滿簡單的
所以這篇是玩 win7
工具:
1. 自製 WBTools
20150503
發文驗証碼: wvb9aigz8ukf3ln
2. tw_windows_7_ultimate_with_sp1_x86_dvd_u_677488.iso
3. tw_windows_8.1_enterprise_with_update_x86_dvd_6050663.iso (只是要用它的 pe 執行 dism)
單純建立 wimboot , 3 可以不用
wim 或 磁碟 異動時, 修正磁碟 DataSources 對應的 wim
才需要用 8.1 的 dism /Update-WIMBootEntry (後面會提)
dism /Update-WIMBootEntry 請參考
https://msdn.microsoft.com/zh-tw/library/hh825258.aspx
建立 wimboot 的 wim 和 apply wimboot 我是使用 wbtools 中的 wimlib-imagex.exe
主要參考了 2篇文章
http://chenall.net/post/windows7_wimboot/
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=336526
由於我只測 win7 x86
x64 情況是怎樣我不知道, 若 x64 有驅動簽章問題, 看第1篇參考文
2篇文章用的方式不太一樣
我是取長補短...但主要方式是用了 第1篇 那種
第1篇 這種可以在 win7pe 下建立 wimboot
第2篇 无忧那種要 win8.1pe(winpe 5.1)
這裡先說一下原理(我逆推測的)
簡單說
1. 支援 wimboot 的 wim
2. win7 要安裝了 wimboot 的 driver 也就是 wof.sys
3. 開機需要的檔案要為 實體檔案 (也就是 非 pointer file ... 即檔案實體存在而非對應到wim)
pointer file 即是該檔案是映射到 wim 中
兩篇文章的差異在
1.
wof.sys 的安裝
第1篇 是在 win7 下安裝
第2篇 是在 pe 下安裝(安裝到 win7)
這個後者比較好
因為 win7 已封裝 或是 直接解 install.wim 安裝的
就不用安裝好 win7 才能安裝 wof.sys
2.
wimboot 的 wim 建立 和 apply
第1篇 是用 wimlib-imagex (這個是第3方寫的程式...可以在 win7pe 下跑)
第2篇 是用 dism ( win8.1 的 dism 才支援 wimboot 操作 )
建立 wimboot 前者好一點...可以在 7pe 下跑
而且個人感覺 wimlib-imagex 好像快一點
但要用 dism 還是要用 81pe
3.
實體檔案 的建立
第1篇 是利用 wimboot 本身的功能 , 透過修改 WimBootCompress.ini
在 wimboot apply 時會自動依 WimBootCompress.ini 設定來產生 實體檔
第2篇 是手動建立 (把檔案 複製 到別磁碟在 copy 回來)
個人感覺前者較好
少了手動 copy 的動作...改 WimBootCompress.ini 就好
wimboot 原理(推測)...說穿也沒什麼
實際上開機時...開機需要的檔案要為 實體檔
直到 windows 支援 wimboot (可以讀取 pointer file)
win7 win81 需要的開機檔有差異
或者說 直到支援 pointer file 為止, 開機需要的實體檔有差異
win81 感覺好像開機程序會優先載入 wof.sys , 所以要實體化的檔案比較少
win7 則是開機要的 實體檔 比較多 (直到它載入 wof.sys)
原始的 WimBootCompress.ini 中
[PrepopulateList] (指要實體化的檔案) 好像只包含
*winload.*
*winresume.*
wof.sys
\Windows\System32\Config\SYSTEM
只要 檔案 完整名稱(就是含路徑) 附合上面就會實體檔化
例如
\windows\system32\winload.exe
\windows\system32\zh-TW\winload.exe.mui
都附合 *winload.*
要實體化原因
winload.exe(efi) winresume.exe(efi) , windows 的開機檔(第1個載入)
wof.sys 支援 wimboot 的 Services Driver
Services driver 的系統註冊都在 \Windows\System32\Config\SYSTEM
win7 可能是因為 wof.sys 載入較晚(推測)
所以要的實體檔比較多
可以參考我工具 WBTools 中的 WimBootCompress.ini
另外像我 C_xxxx.nls 是用 C_*.nls 而不是 C_936.nls(這個是簡體的)
另外 bootmgr 相關檔案也加進去
這樣可以正常的使用 bcdboot 來建立 bootmgr boot bcd
工具 WBTools 說明
大部份 cmd 都輸入 xxxx.cmd ? 都有說明
(都英文...因為我都是在 pe 下做 cmd 的...沒中文...做好後又懶的改)
Apply.cmd ... wimboot wim apply 用
Cap.cmd ... wimboot wim Capture 用 (會執行 wof.cmd)
NewBoot.cmd ... 砍掉舊的 bootmgr boot 再用 bcdboot 重建
vhdct.cmd ... 建立 vhd ( vhd 會掛載到 w: )
vhdass.cmd ... vhd檔掛載 ( vhd 會掛載到 w: )
vhddel.cmd ... 砍 vhd 檔 ( 會先解掛載才砍 )
wof.cmd ... 安裝 wof.sys 和 WimBootCompress.ini (執行 Cap.cmd 時就會執行 wof.cmd)
vhd*.script ... diskpart 的 script , vhdxxx.cmd 會調用
第3方的 wim 處理程式
wimlib-imagex.exe
libwim-15.dll
亂玩環境
XP 跑 vbox
vbox 設定
ram 512M
1 IDE CD-ROM
1 sata HD 10G
首先...先分割HD + 格式化
我是用 win7 安裝程式 中的那個分割介面
分割1 (hd0,0) ... 4G
分割2 (hd0,1) ... 6G
因為 win7x86 安裝最低要快 6G
分割1 要放 wimboot 的 wim
分割2 是放 win7 (後面會在砍了...再分成 分割2 分割3)
由於 tw_windows_7_ultimate_with_sp1_x86_dvd_u_677488.iso
的 install.wim 有5個 image (分別對應各版本)
這裡我用了 index 1 和 5 (即 Starter 和 Ultimate)
因為預設的安裝程式是安裝 Ultimate, 所以 Starter 我是手動 apply wim
分割好後...重開機重新進入 win7安裝程式(7PE)
磁碟代號如下
A: wbtools.img
C: (hd0,0) 4G 分割1
D: (hd0,1) 6G 分割2
E: CD-ROM
我工具在製做時是用成 軟碟img 方便在 vbox 使用...我是 copy 到 C: 用
實際發佈工具我應該會做成 iso
所以下面 copy wbtools 的指令...請按照實際 wbtools 的位置
例如 wbtools 在 g:\wbtools
copy g:\wbtools\*.* c:\wbtools
按 shift + F10 就可以叫出 cmd 指令介面
輸入
md c:\wbtools
copy a:\*.* wbtools
cd /d c:\wbtools
wimlib-imagex apply e:\sources\install.wim 1 d:\
這樣就把 install.wim 的 index 1 (Starter) 解出來到 D:\ 了
然後再打包成 wimboot 的 wim
(相關的 dism 或 wimlib-imagex 指令是加上 /wimboot 或 --wimboot 參數)
輸入
cap d: c:\win7.wim "Windows 7 Starter WimBoot"
cap 會執行 wof.cmd 並將 d:\ 打包成支援 wimboot 的 c:\win7.wim
接著是 Ultimate
這裡我是直接用 Win7 的安裝程式...
把 分割2 (hd0,1) 砍了 或 格式化...在把 Ultimate 用正常安裝方式到 (hd0,1)
安裝程式會解 install.wim 的 Ultimate (install.wim index 5) 到 (hd0,1)
然後會重開機...這裡重開機...我還是用 win7 安裝光碟開機 (也就是不等他安裝好...直接就打包)
按 shift + F10 到 cmd 下...下打包指令
cd /d c:\wbtools
cap d: c:\win7.wim "Windows 7 Ultimate WimBoot"
這樣 c:\win7.wim 會有2個 image
2種方式主要差在
正常安裝可以順便加 SRS Driver, 不然要手動下 dism 指令加 Driver
之後砍了 分割2 (hd0,1) 6G
再分成 2個分割
分割1 (hd0,0) ... 4G ( c:\win7.wim )
分割2 (hd0,1) ... 3G ( 用來放 win7.vhd ... wimboot apply Starter 到 vhd )
分割3 (hd0,2) ... 3G ( 直接 wimboot apply Ultimate )
重開機進 win7 安裝光碟
磁碟代號如下
C: (hd0,0) 4G 分割1 (目前這是啟動分割)
D: (hd0,1) 3G 分割2
E: (hd0,2) 3G 分割3
F: CD-ROM
先建立 vhd ... 執行
cd /d c:\wbtools
vhdct vhd=d:\win7s.vhd size=2g
再來分別 wimboot apply 到 e: 和 vhd ( w: )
apply c:\win7.wim w: "Windows 7 Starter WimBoot"
apply c:\win7.wim e: "Windows 7 Ultimate WimBoot"
這樣 wimboot 的部份就差不多
接下來是建立開機 bootmgr boot bcd
因為是雙系統
這裡我會同時用2種不同的開機管理, 分別是 bootmgr 和 grub4dos
如果要配合 "餵肉的" 用 grub4dos 比較好 , 用 KMS 的就沒差
這裡先說一下我要做的 2種開機管理的流程
各別的 分割區 PBR 開機流程
(hd0,0)PBR -> (hd0,0)bootmgr -> (hd0,0)bcd (有2個開機選項) -> (hd0,1)vhd 或 (hd0,2) 的 Windows
(hd0,1)PBR -> (hd0,1)bootmgr -> (hd0,1)bcd (單開機選項) -> (hd0,1)vhd 的 Windows
(hd0,2)PBR -> (hd0,2)bootmgr -> (hd0,2)bcd (單開機選項) -> (hd0,2) 的 Windows
開機管理的流程
1.
固定1個 啟動分割(hd0,0) 用 (hd0,0)bootmgr 做開機管理
mbr(一般mbr) -> 啟動分割(hd0,0) -> (hd0,0)PBR -> 後面流程就參照上面 (hd0,0)PBR
2.
grub4dos
變動啟動分割
mbr(grub4dos mbr) -> 搜尋 grldr -> menu.lst 設定啟動分割並載入PBR
也就是 grub4dos
選 (hd0,0) 為 啟動分割 會跑上面 (hd0,0)PBR 流程
選 (hd0,1) 為 啟動分割 會跑上面 (hd0,1)PBR 流程
選 (hd0,2) 為 啟動分割 會跑上面 (hd0,2)PBR 流程
由於 "餵肉的" 會修改啟動分割 PBR (分割區開機磁區/引導)
所以如果用 固定1個 啟動分割 這樣2個 windows 的 餵肉的 都會修改到同一個 啟動分割
(當然因為我現在2個 windows 都 win7 所以可能沒關係...)
這裡2種我都會做...但我主要是用 grub4dos (因為我用 餵肉的)
用 grubinst_gui 刷 grub4dos mbr
因為 字型 和 螢幕解析度 問題...它媽的滑鼠按不到 "安裝"
點一下 磁盤 (就最上面左邊那個...看到那個虛線沒有)
按 shift + tab ... 2次...再按 Enter
(如果用的 grubinst_gui 和我的不一樣...那就自己慢慢摸)
然後把 grldr 丟到 c:\
用 notepad c:\menu.lst 來編輯 c:\menu.lst
menu.lst 內容
timeout 10
title (hd0,0) active
makeactive (hd0,0)
root (hd0,0)
chainloader +1
boot
title (hd0,1) active ( Windows 7 Starter WimBoot )
makeactive (hd0,1)
root (hd0,1)
chainloader +1
boot
title (hd0,2) active ( Windows 7 Ultimate WimBoot )
makeactive (hd0,2)
root (hd0,2)
chainloader +1
boot
makeactive 就是設定啟動分割
再來建立 bootmgr boot bcd
這裡的磁碟代號分配是
c: (hd0,0) (目前的啟動分割)
d: (hd0,1)
e: (hd0,2)
w: (hd0,1)\win7s.vhd
輸入以下指令
cd /d wbtools
newboot w: c: /l zh-TW
bcdedit /store c:\boot\bcd /set {default} description "Windows 7 Starter WimBoot"
bcdboot e:\windows /s c: /l zh-TW
bcdedit /store c:\boot\bcd /set {default} description "Windows 7 Ultimate WimBoot"
newboot w: d: /l zh-TW
bcdedit /store d:\boot\bcd /set {default} description "Windows 7 Starter WimBoot"
newboot e: e: /l zh-TW
bcdedit /store e:\boot\bcd /set {default} description "Windows 7 Ultimat WimBoot"
指令說明
刪除 c: (hd0,0) 的舊 bootmgr boot bcd , 重新建立 w: 的 Windows 的開機項和檔案到 c: (hd0,0)
bcdboot e:\windows /s c: /l zh-TW
把 e: 的 Windows 的開機項增加到 c: (hd0,0)
因為 (hd0,0) 要用 bootmgr 建立雙系統開機
所以不是重新建立, 而是在剛建好的 bcd 之後直接再增加開機項
刪除 d: (hd0,1) 的舊 bootmgr boot bcd , 重新建立 w: 的 Windows 的開機項和檔案到 d: (hd0,1)
刪除 e: (hd0,2) 的舊 bootmgr boot bcd , 重新建立 e: 的 Windows 的開機項和檔案到 e: (hd0,2)
修改剛建立的開機項顯示名稱...不改就都顯示 Windows 7
之後重開機...按 F4 會到 grub4dos
按 F4 以外的任意鍵...會用目前 設定的 啟動分割 開機
也就是如果用 grub4dos 選 (hd0,1) 為 啟動分割 開機
下次不按 F4 直接用 啟動分割 開機...一樣是 (hd0,1) 開機
這裡我用 grub4dos 來分別用 (hd0,1) (hd0,2) 開機
因為還要裝 餵肉的
話說...這裡我 vhd 故意用 Starter
因為網路上有的文章說 win7 只有 企業版(Enterprise) 和 旗艦版(Ultimate) 可以 VHD 開機
所以順便測一下
結果...果然是不支援啊
在設定 電腦名稱 使用者名稱 等等都還正常...完成後要載入桌面就變成
好吧...把步驟倒退
(hd0,1)\vhd 換成 Ultimate
(hd0,2) 換成 Starter
grub4dos 因為已經建立...只要改一下 menu.lst
原本
title (hd0,1) active ( Windows 7 Starter WimBoot )
title (hd0,2) active ( Windows 7 Ultimate WimBoot )
改反過
title (hd0,1) active ( Windows 7 Ultimate WimBoot )
title (hd0,2) active ( Windows 7 Starter WimBoot )
不改其實也沒差...只是顯示的名稱不對而以
重開機先 F4 用 grub4dos 選 (hd0,0) 開機 (把啟動分割先設回去)
這樣才磁碟代號分配才會是 ( 沒設回去... 啟動分割 都是會 C: )
c: (hd0,0)
d: (hd0,1)
e: (hd0,2)
再重開機用 win7 安裝光碟開機
到 PE 按 shift + F10 到 cmd
因為 win7.wim 是建好的...所以不用動
只要重新格式化 d: e:
重建 vhd
重新 wimboot apply
重建開機項 bootmgr boot bcd
這裡就只打 cmd 指令cd /d wbtools
format d: /q
format e: /q
vhdct vhd=d:\win7u.vhd size=2g
apply c:\win7.wim w: "Windows 7 Ultimate WimBoot"
apply c:\win7.wim e: "Windows 7 Starter WimBoot"
newboot w: c: /l zh-TW
bcdedit /store c:\boot\bcd /set {default} description "Windows 7 Ultimate WimBoot"
bcdboot e:\windows /s c: /l zh-TW
bcdedit /store c:\boot\bcd /set {default} description "Windows 7 Starter WimBoot"
newboot w: d: /l zh-TW
bcdedit /store d:\boot\bcd /set {default} description "Windows 7 Ultimat WimBoot"
newboot e: e: /l zh-TW
bcdedit /store e:\boot\bcd /set {default} description "Windows 7 Starter WimBoot"
這樣就好了
分別重開機按 F4 選
(hd0,1) Windows 7 Ultimate WimBoot
(hd0,2) Windows 7 Starter WimBoot
開機完成安裝, 並分別安裝 餵肉的
這裡 Windows 7 Ultimate WimBoot 的 Windows 可能是分配到 D:
這是因為安裝過程中...可能儲存當時的磁碟代號分配
而又剛好 C: 分配了...所以 Windows 只好去用 D: (又或者 E: ...)
而 Windows 7 Starter WimBoot 是直接解出來
並沒儲存磁碟代號分配
所以 Windows 7 Starter WimBoot 會是 c:\windows
而 Windows 7 Ultimate WimBoot 我是在一般安裝剛解出來 install.wim 後就打包
並沒有做後續安裝動作...所以只要把
HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices 的資料刪除...再繼續安裝就會分配到 c:\windows
在 apply c:\win7.wim w: "Windows 7 Ultimate WimBoot" 後...接著下指令
reg load "hklm\tmp" "w:\windows\system32\config\system"
reg delete "hklm\tmp\MountedDevices"
reg unload "hklm\tmp"
就可以刪除 MountedDevices 的資料
下面是 Windows 7 Ultimate WimBoot
清除 HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices 後的情況
c: 2G (win7u.vhd) 實體檔大概 521M ( d:\win7u.vhd 實佔 470M 左右 )
e: 4G (hd0,0)
d: 3G (hd0,1)
f: 3G (hd0,2)
Windows 7 Starter WimBoot
D: 4G (hd0,0) 實體檔 1.5G ( pagefile.sys 就佔1G 了...不算 pagefile.sys 也是 5xxM )
E: 3G (hd0,1)
c: 3G (hd0,2)
沒掛 vhd (因為不是用 vhd 啟動)
grub4dos 畫面
(hd0,0) 開機 bootmgr 畫面
到這只是建立 wimboot windows
如果 wimboot wim 或 磁碟 有異動
例如
我後面會改 MBR 成 GPT
這裡因為改成 GPT 所以磁碟有異動
但因為磁碟異動所以 wim 也異動了
這裡 wimboot 要改 Legacy Bios + GPT wimboot
我想到2種方法修正 wimboot 磁碟異動方式
第1種
就是把 2個安裝好搞好的 wimboot 在打包1次成新的 wimboot wim
這其實不算修正...算是重新建立 wimboot wim 和 wimboot apply
這要在有支援 wof 的 windows or pe 才能
所以 win7光碟(7pe) 是不行了
不用 81pe 的情況下
只能在之前搞好的 wimboot windows 下打包
例如
進入 Windows 7 Ultimate WimBoot 去打包 Windows 7 Starter WimBoot
我以前面貼的在 Ultimate 中的 磁碟代號分配 來看
c: 2G (win7u.vhd) Windows 7 Ultimate WimBoot
e: 4G (hd0,0)
d: 3G (hd0,1)
f: 3G (hd0,2) Windows 7 Starter WimBoot
打包到 (hd0,0) win7.wim
cap f: e:\win7.wim "Windows 7 Starter WimBoot GPT"
然後進入 Windows 7 Starter WimBoot 去打包 Windows 7 Ultimate WimBoot
D: 4G (hd0,0)
E: 3G (hd0,1) win7u.vhd
c: 3G (hd0,2) Windows 7 Starter WimBoot
w: 2G (win7u.vhd)
由於 Ultimate 是 vhd 所以要先掛載一下, 一樣打包到 (hd0,0) win7.wim
vhdass e:\win7u.vhd
cap w: d:\win7.wim "Windows 7 Ultrmate WimBoot GPT"
這樣做完 win7.wim 其實就有 4個 wimboot wim image
Windows 7 Starter WimBoot
Windows 7 Ultrmate WimBoot
Windows 7 Starter WimBoot GPT
Windows 7 Ultrmate WimBoot GPT
然後轉 GPT (後面會提)
之後就和之前差不多...轉 GPT 後在重新 apply 和 newboot
到 PE 下
cd /d wbtools
format d: /q
format e: /q
vhdct vhd=d:\win7u.vhd size=2g
apply c:\win7.wim w: "Windows 7 Ultimate WimBoot GPT"
apply c:\win7.wim e: "Windows 7 Starter WimBoot GPT"
newboot w: c: /l zh-TW
bcdedit /store c:\boot\bcd /set {default} description "Windows 7 Ultimate WimBoot"
bcdboot e:\windows /s c: /l zh-TW
bcdedit /store c:\boot\bcd /set {default} description "Windows 7 Starter WimBoot"
newboot w: d: /l zh-TW
bcdedit /store d:\boot\bcd /set {default} description "Windows 7 Ultimat WimBoot"
newboot e: e: /l zh-TW
bcdedit /store e:\boot\bcd /set {default} description "Windows 7 Starter WimBoot"
之後在修正 Legacy Bios + GPT 開機 ... 等後續動作
不過這樣很麻煩...所以我說歸說...沒去測試
這裡我用比較懶的方式
第2種
用 81pe/windows 的 dism /Update-WIMBootEntry 來修正
進入 81pe
這裡可以用 dism /Get-WIMBootEntry 看一下 磁碟的 wimboot wim 映射
cd /d wbtools
vhdass d:\win7u.vhd
dism /Get-WIMBootEntry /Path:e:
dism /Get-WIMBootEntry /Path:w:
資料來源識別碼 就是我最一開始有提到的 DataSources
可以看到映射的 wim 前面的磁碟位置變成 unkwon
其實資料就儲存在 System Volume Information\WimOverlay.dat
不過不是文字檔...所以還是靠 81pe 來改吧
這裡要用 dism /Update-WIMBootEntry 來修正
dism /Update-WIMBootEntry /Path:e:\ /DataSourcesID:0 /ImageFile:c:\win7.wim
dism /Update-WIMBootEntry /Path:e:\ /DataSourcesID:0 /ImageFile:c:\win7.wim
修正好要重開機再進入 81pe
執行 dism /Get-WIMBootEntry 再查看一次
cd /d wbtools
vhdass d:\win7u.vhd
dism /Get-WIMBootEntry /Path:e:
dism /Get-WIMBootEntry /Path:w:
修正好了...在重新建立開機項
newboot w: c: /l zh-TW
bcdedit /store c:\boot\bcd /set {default} description "Windows 7 Ultimate WimBoot"
bcdboot e:\windows /s c: /l zh-TW
bcdedit /store c:\boot\bcd /set {default} description "Windows 7 Starter WimBoot"
newboot w: d: /l zh-TW
bcdedit /store d:\boot\bcd /set {default} description "Windows 7 Ultimat WimBoot"
newboot e: e: /l zh-TW
bcdedit /store e:\boot\bcd /set {default} description "Windows 7 Starter WimBoot"
前面說的 2招 只是 wimboot wim 修正處理 (不管是那一招)
其順序應該為
1. MBR 轉 GPT ... 這造成磁碟異動
2. wimboot wim 修正處理 ( 81pe dism 修正比較簡單快 ) ... 修正 wimboot wim 的 磁碟異動 (含修正 BCD 磁碟異動)
3. Legacy Bios + GPT 開機的後續修改 ... 修正 MBR to GPT 開機 ...利用 grub4dos 來讓 bootmgr 讀取 BCD
MBR 轉 GPT
然後 wimboot wim 修正
就是前面說的用 dism /Update-WIMBootEntry
或
打包安裝好的 Windows (因為安裝好的才能在 Legacy Bios + GPT...未安裝好的不行..安裝程式會出錯)
後續修改
Legacy bios + GPT 啟動修正
開機檔修正
進入 PE 叫出 CMD
attrib -s -h -r c:\
move c:\bootmgr c:\boot\bootmgr.exe
copy c:\grldr c:\bootmgr
attrib -s -h -r d:\
move d:\bootmgr d:\boot\bootmgr.exe
copy c:\grldr d:\bootmgr
attrib -s -h -r e:\
move e:\bootmgr e:\boot\bootmgr.exe
copy c:\grldr e:\bootmgr
建立 d:\menu.lst
map (hd0,1)+1 (fd0)
map --hook
root (fd0)
chainloader /boot/bootmgr.exe
boot
建立 e:\menu.lst
map (hd0,2)+1 (fd0)
map --hook
root (fd0)
chainloader /boot/bootmgr.exe
boot
修改 c:\menu.lst
timeout 10
title (hd0,0)
map (hd0,0)+1 (fd0)
map --hook
root (fd0)
chainloader /boot/bootmgr.exe
boot
title (hd0,1) Windows 7 Ultimate WimBoot
root (hd0,1)
chainloader +1
boot
title (hd0,2) Windows 7 Starter WimBoot
root (hd0,2)
chainloader +1
boot
到這裡應該就可以用 GPT 啟動
比較前一下前面那片有顯示 MBR 的
Legacy Bios + GPT 啟動原理去看
http://nonameteam.cc/thread-1635-1-1.html
|
本帖子中包含更多資源
您需要 登錄 才可以下載或查看,沒有帳號?我要註冊
x
|