NoName Team 電腦資訊討論區

 找回密碼
 我要註冊
搜索
查看: 25645|回復: 84

[原創] [亂玩+惡搞] win7_sp1_x86 + wimboot + vhd + 雙系統 + legacy bios + gpt

[複製鏈接]
發表於 2015-5-3 12:42:08 | 顯示全部樓層 |閱讀模式
本帖最後由 阿達金田一 於 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"

指令說明
newboot w: c: /l zh-TW

刪除 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 之後直接再增加開機項

newboot w: d: /l zh-TW

刪除 d: (hd0,1) 的舊 bootmgr boot bcd , 重新建立 w: 的 Windows  的開機項和檔案到 d: (hd0,1)

newboot e: e: /l zh-TW

刪除 e: (hd0,2) 的舊 bootmgr boot bcd , 重新建立 e: 的 Windows  的開機項和檔案到 e: (hd0,2)

bcdedit /store ......

修改剛建立的開機項顯示名稱...不改就都顯示 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
發表於 2015-5-5 00:19:53 | 顯示全部樓層
好詳細的步驟啊!
謝謝這麼專業的分享,有機會自己來跟著做做看。
 樓主| 發表於 2015-5-6 18:15:51 | 顯示全部樓層
本帖最後由 阿達金田一 於 2015-5-6 18:31 編輯

後續補充

剛好有遊戲不能在 XP 安裝
這2天把用很久的 XP 換成 Win7 SP1 x64 Ultimate + WimBoot
真的不太習慣...而且剛安裝好還給我狂讀硬碟 ( 剛好禮三嗎...預設排程...磁碟重組狂組 )
照網路上一些文章調設定後...感覺好一點了...不過整體效能還是比原本慢一點


在做 Win7 x64 + WimBoot 遇到一些問題...補充一下

主要有3個


首先是 Wimlib-imagex 是 32bit 程式
原始 安裝光碟 PE ... 不管是 Win7/8 只要是原始的.. x64 PE 是不支援跑 x86 的程式 (相關元件拿掉了吧)
所以如果要用 Wimlib-imagex 就是...以下3選1種方法
1. 找個支援跑 32bit 的 PE ... (像我的 WinPE 8PE 是用 bear1alex1 大做的)
2. 用 x86 PE
3. 一個安裝好的 Windows (都安裝好當然有支援了)

我在搞的期間是 Win7 x64 x86 CD pe 和 Win81 x64x 86 CD PE 和 bear1alex1 8PE 都有用(用來測試)
最終我硬碟是用 Win8.1 x86 安裝光碟的 PE (boot.wim)
這樣可以跑 wimlib-imagex 也可以跑 dism

但要跑 x86 PE 就是要支援 legacy bios 開機 (也就是 UEFI64 的 PC 要能支援 CSM ...不然就是你是 UEFI32)

這是 Wimlib-imagex 執行問題



dism 也有問題 ( 不過如果用 wimlib-imagex 不用 dism 就沒差...可以不管...我  dism 只是用來 /update-WimBootEntry )
我發現 dism apply wimboot wim 時
好像根本不會照 WimBootCompress.ini 中的資料來 實體化檔案 ( 或者是 方式不一樣 又或 我不會下指令 ?)
真不知道 dism 還要 WimBootCompress.ini 幹嘛
不管是用 wimlib-imagex 或 dism 做成的 wimboot wim
wimlib-imagex 在 wimboot apply 時都可以正常 apply ...該實體檔化的就解出來...不做pointer file
Dism 不管那個做的 Wim 都不行...Apply 時...好像根本沒實體化 都 pointer file
也許是因為 Win81不用實體化...因為 Win81 的 winload.exe 只要能載入其它大多都不用實體化
所以 dism 只做了原始 WimBootCompress.ini 中的 4 個實體檔化嗎...其它的資料就當沒看到 ??? (注意我是打 ???)

所以用 81PE dism 的...當然要手動 Copy 實體檔化

另外在 bootmgr Boot bcd 和 Windows 放一起時...做成 wimboot wim
dism  在 wimboot apply 也遇到部份檔案內容變成 空白 (用 type 看...大概是全變 0x00)
我發的是 \bootmgr \boot\memtest.exe 2個...至於還有沒有其它的我就不知道...(因為 Windows 檔案太多)
我是因為 手動Copy 實體檔化 還是開不了機去查看 bootmgr 才發現...因為 memtest 也開不了也順便看)

所以 dims apply 後就算像手動 Copy 實體檔化....有些檔案可能也是有問題
不過 bootmgr 在 windows\boot 中也有
實際上下 bcdboot 是會去調用 Windows\boot 中的檔案
所以 bootmgr boot bcd 部份應該可以用 bcdboot 重建就好...

至於 手動 Copy 實體化...最好在 Capture WimBoot Wim 前 (檔案還是正常前)
下面說的2個方法..我都沒測(因為我是用 wimlib-imagex)...只是推想

1. 可以 Copy 到其它的目錄下暫存...然用一般的 dism apply 打包成一般 Wim (實體檔專用)
等 WimBoot 都搞到 Capture 又 WimBoot 好後再把 實體檔專用的 Wim ... 一般 Apply 回去

2. 先打包 完整Windows 成 WimBoot Wim 的 index 1... 然後同 方法1...只是改成用 append 到 WimBoot Wim 的 index 2
Apply 時 index 1 就用 WimBoot Apply ... 再用 index 2 一般 apply  解出實體檔



最後 WimBootCompress.ini 的問題
因為我是用成 Boot + Windows 放在一起
所以 WimBootCompress.ini 有修改...和主題不一樣
主要是加入
\bootmgr

\?????
後者針對 餵肉的 和 小馬哥的騎也不騎 ... 看不懂我說啥的就算了...我這次是用小馬哥)

一般 Capture WimBoot Wim 好像...可以直接在 WimBoot Apply 回去
但如果後面有再次做 WimBoot Apply ...是會依序寫入到 DataSources 1 2 3 ... 第1次 WimBoot 的 DataSources 0 是留著的
這樣有啥影响我不知道...我是有 WimBoot 過的 磁碟 都會  format 再重新 WimBoot

而 format 後 PBR 就會寫回成 NT6 PBR ... ????? 就沒用了
小馬哥的是有 PBR 引導修復功能咧...支援在 PE 下跑
不過一樣是 32bit 程式... x64 PE 沒支援32bit 的...一樣不能跑...(所以我用 x86 PE)
餵肉的能不能修復我就不知道....不能也沒關切...其實再 餵 一次就好

簡單的說...我個人的情況是
MBR 刷 grub4dos

(hd0,0) 4G
放 grldr + Win81 x86 CD PE (Boot.wim) + wbtools(有修改的...不過和主題的也沒差很多) +  WimBoot Wim (做好 3.2G 左右)

(hd0,1) 26G .... Active 啟動分割 是這個
WimBoot 磁碟 ( 用來被 WimBoot Wim 來做 WimBoot Apply )

剩下的空間是舊的分割...資料用...沒動 (原本前就是1個 30G 放 XP ...分屍成 4 + 26G)
所以按 F4 會到 PE ... 其它都會用 (hd0,1) 正常啟動

所以我是正常安裝到 (hd0,1) ....安裝好 Windows...裝好 Driver ...也就只有這樣不然怎麼可能 Wim 才 3.2G
然後開始 F4 到 PE 下打包成 Wim 再 WimBoot 回 (hd0,1)

zh-TW 專用版 WimBootCompress..ini
其實也沒差很多...只是部份檔案是針對 zh-TW...而不是用 * 全部都實體檔化

; This is the inbox configuration file used for deploying or capture a
; WIMBoot system. Please do not remove this file because WIMCaptureImage
; and WIMApplyImage will fail if WIM_FLAG_WIM_BOOT flag is specified.

[CompressionExclusionList]
ntoskrnl.exe
ntkrnlpa.exe

[PrepopulateList]
\Windows\System32\winload.*
\Windows\System32\winresume.*
\Windows\System32\zh-TW\winload.*
\Windows\System32\zh-TW\winresume.*
\Windows\System32\Config\SYSTEM
\Windows\System32\bootstr.dll
\Windows\System32\zh-TW\bootstr.dll.mui
\Windows\System32\config\BCD-Template
\Windows\Boot\PCAT\*
\Windows\Boot\Fonts\*
\bootmgr
\?????
\*ldr
\Boot\*
\Recovery\*
\Windows\fonts\vgaoem.fon
\Windows\fonts\vgasys.fon
\Windows\inf\disk.inf
\Windows\inf\errata.inf
\Windows\inf\hal.inf
\Windows\inf\usb.inf
\Windows\inf\usbport.inf
\Windows\inf\usbstor.inf
\Windows\inf\volsnap.inf
\Windows\inf\volume.inf
\Windows\System32\apisetschema.dll
\Windows\System32\BOOTVID.DLL
\Windows\System32\C_950.NLS
\Windows\System32\ci.dll
\Windows\System32\clfs.sys
\Windows\System32\CodeIntegrity\driver.stl
\Windows\System32\drivers\*.*
\Windows\System32\hal*.dll
\Windows\system32\kd.dll
\Windows\System32\kdcom.dll
\Windows\System32\l_intl.nls
\Windows\system32\mcupdate_AuthenticAMD.dll
\Windows\System32\mcupdate_GenuineIntel.dll
\Windows\System32\nt*krnl*.exe
\Windows\System32\ntdll.dll
\Windows\System32\PSHED.DLL
\Windows\System32\smss.exe
\Windows\System32\Storprop.dll

[ExclusionList]
\$bootdrive$
\$dwnlvldrive$
\$lsdrive$
\$installdrive$
\$Recycle.Bin\*
\bootsect.bak
\hiberfil.sys
\pagefile.sys
\ProgramData\Microsoft\Windows\SQM
\System Volume Information
\Users\*\AppData\Local\GDIPFONTCACHEV1.DAT
\Users\*\NTUSER.DAT*.TM.blf
\Users\*\NTUSER.DAT*.regtrans-ms
\Users\*\NTUSER.DAT*.log*
\Windows\AppCompat\Programs\Amcache.hve*.TM.blf
\Windows\AppCompat\Programs\Amcache.hve*.regtrans-ms
\Windows\AppCompat\Programs\Amcache.hve*.log*
\Windows\CSC
\Windows\Debug\*
\Windows\Logs\*
\Windows\Panther\*.etl
\Windows\Panther\*.log
\Windows\Panther\FastCleanup
\Windows\Panther\img
\Windows\Panther\Licenses
\Windows\Panther\MigLog*.xml
\Windows\Panther\Resources
\Windows\Panther\Rollback
\Windows\Panther\Setup*
\Windows\Panther\UnattendGC
\Windows\Panther\upgradematrix
\Windows\Prefetch\*
\Windows\ServiceProfiles\LocalService\NTUSER.DAT*.TM.blf
\Windows\ServiceProfiles\LocalService\NTUSER.DAT*.regtrans-ms
\Windows\ServiceProfiles\LocalService\NTUSER.DAT*.log*
\Windows\ServiceProfiles\NetworkService\NTUSER.DAT*.TM.blf
\Windows\ServiceProfiles\NetworkService\NTUSER.DAT*.regtrans-ms
\Windows\ServiceProfiles\NetworkService\NTUSER.DAT*.log*
\Windows\System32\config\RegBack\*
\Windows\System32\config\*.TM.blf
\Windows\System32\config\*.regtrans-ms
\Windows\System32\config\*.log*
\Windows\System32\SMI\Store\Machine\SCHEMA.DAT*.TM.blf
\Windows\System32\SMI\Store\Machine\SCHEMA.DAT*.regtrans-ms
\Windows\System32\SMI\Store\Machine\SCHEMA.DAT*.log*
\Windows\System32\sysprep\Panther
\Windows\System32\winevt\Logs\*
\Windows\System32\winevt\TraceFormat\*
\Windows\Temp\*
\Windows\TSSysprep.log
\Windows\winsxs\poqexec.log
\Windows\winsxs\ManifestCache\*
\Windows\servicing\Sessions\*_*.xml
\Windows\servicing\Sessions\Sessions.back.xml

[CompressionFolderList]
\Windows\System32\WinEvt\Logs
\Windows\Installer

無限定...沒測 (我也沒其它種語言的 Win 可以測)
; This is the inbox configuration file used for deploying or capture a
; WIMBoot system. Please do not remove this file because WIMCaptureImage
; and WIMApplyImage will fail if WIM_FLAG_WIM_BOOT flag is specified.

[CompressionExclusionList]
ntoskrnl.exe
ntkrnlpa.exe

[PrepopulateList]
*winload.*
*winresume.*
\Windows\System32\Config\SYSTEM
\Windows\System32\bootstr.dll
\Windows\System32\*\bootstr.dll.mui
\Windows\System32\config\BCD-Template
\Windows\Boot\PCAT\*
\Windows\Boot\Fonts\*.*
\bootmgr
\?????
\*ldr
\Boot\*
\Recovery\*
\Windows\fonts\vgaoem.fon
\Windows\fonts\vgasys.fon
\Windows\inf\disk.inf
\Windows\inf\errata.inf
\Windows\inf\hal.inf
\Windows\inf\usb.inf
\Windows\inf\usbport.inf
\Windows\inf\usbstor.inf
\Windows\inf\volsnap.inf
\Windows\inf\volume.inf
\Windows\System32\apisetschema.dll
\Windows\System32\BOOTVID.DLL
\Windows\System32\C_*.NLS
\Windows\System32\ci.dll
\Windows\System32\clfs.sys
\Windows\System32\CodeIntegrity\driver.stl
\Windows\System32\drivers\*.*
\Windows\System32\hal*.dll
\Windows\system32\kd.dll
\Windows\System32\kdcom.dll
\Windows\System32\l_intl.nls
\Windows\system32\mcupdate_AuthenticAMD.dll
\Windows\System32\mcupdate_GenuineIntel.dll
\Windows\System32\nt*krnl*.exe
\Windows\System32\ntdll.dll
\Windows\System32\PSHED.DLL
\Windows\System32\smss.exe
\Windows\System32\Storprop.dll

[ExclusionList]
\$bootdrive$
\$dwnlvldrive$
\$lsdrive$
\$installdrive$
\$Recycle.Bin\*
\bootsect.bak
\hiberfil.sys
\pagefile.sys
\ProgramData\Microsoft\Windows\SQM
\System Volume Information
\Users\*\AppData\Local\GDIPFONTCACHEV1.DAT
\Users\*\NTUSER.DAT*.TM.blf
\Users\*\NTUSER.DAT*.regtrans-ms
\Users\*\NTUSER.DAT*.log*
\Windows\AppCompat\Programs\Amcache.hve*.TM.blf
\Windows\AppCompat\Programs\Amcache.hve*.regtrans-ms
\Windows\AppCompat\Programs\Amcache.hve*.log*
\Windows\CSC
\Windows\Debug\*
\Windows\Logs\*
\Windows\Panther\*.etl
\Windows\Panther\*.log
\Windows\Panther\FastCleanup
\Windows\Panther\img
\Windows\Panther\Licenses
\Windows\Panther\MigLog*.xml
\Windows\Panther\Resources
\Windows\Panther\Rollback
\Windows\Panther\Setup*
\Windows\Panther\UnattendGC
\Windows\Panther\upgradematrix
\Windows\Prefetch\*
\Windows\ServiceProfiles\LocalService\NTUSER.DAT*.TM.blf
\Windows\ServiceProfiles\LocalService\NTUSER.DAT*.regtrans-ms
\Windows\ServiceProfiles\LocalService\NTUSER.DAT*.log*
\Windows\ServiceProfiles\NetworkService\NTUSER.DAT*.TM.blf
\Windows\ServiceProfiles\NetworkService\NTUSER.DAT*.regtrans-ms
\Windows\ServiceProfiles\NetworkService\NTUSER.DAT*.log*
\Windows\System32\config\RegBack\*
\Windows\System32\config\*.TM.blf
\Windows\System32\config\*.regtrans-ms
\Windows\System32\config\*.log*
\Windows\System32\SMI\Store\Machine\SCHEMA.DAT*.TM.blf
\Windows\System32\SMI\Store\Machine\SCHEMA.DAT*.regtrans-ms
\Windows\System32\SMI\Store\Machine\SCHEMA.DAT*.log*
\Windows\System32\sysprep\Panther
\Windows\System32\winevt\Logs\*
\Windows\System32\winevt\TraceFormat\*
\Windows\Temp\*
\Windows\TSSysprep.log
\Windows\winsxs\poqexec.log
\Windows\winsxs\ManifestCache\*
\Windows\servicing\Sessions\*_*.xml
\Windows\servicing\Sessions\Sessions.back.xml

[CompressionFolderList]
\Windows\System32\WinEvt\Logs
\Windows\Installer

 樓主| 發表於 2015-5-6 19:28:03 | 顯示全部樓層
本帖最後由 阿達金田一 於 2015-5-6 19:39 編輯

補充 中的 補充
以下只是純理論推測...中途有問題自行解決 (當然願意上來貼心得更好)

前補充中有提到使用 wimlib-imagex 的3種清況
前補充中包含 1 和 2種

雖然最後是用 Win81 x86 CD PE ...而不是 bear1alex1 大的 PE
這主要原因是... Win81 x86 PE 支援 Dism WimBoot ...又可以跑 Wimlib-imagex
我抓的 bear1alex1 大的 Win81 x64 PE ... 只能跑 wimlib-imagex
沒 dism  也不支援 WimBoot (記得後來有放支援 WimBoot 不過我沒抓)
而boot.wim 原始光碟 PE 好像才 2xxM ...比較小... 4G 要放 WimBoot Wim ...就佔 3.2G 了 ...總要留一點吧

又小又都支援..反正我只有 Legacy Bios 開機...這個合用一點
(還原也不過是 format + 重新 wimboot apply ...下指令就好... 大概 2-3分鐘)

不過想到只有 Win7 x64 光碟 怎麼辦
只能用我前面提到的第3個方法了
反正我前補充也是安裝好才打包
安裝好的 windows 7 可以執行 wimlib-imagex 所以把自己打包起來

這裡需要用到 2個 磁碟 或 2個 VHD(當然 VHD 開機就只能 企業版 或 旗艦版)

先說 2磁碟 方式 (針對不能 VHD 開機的)
假設是 (hd0,0) 和 (hd0,1) ...請確保 2個都有 8G 以上 (最少也不要低過 7G )
1. 先安裝 windows 到 (hd0,1) ..........
2. 打包自己成 WimBoot Wim 存到 (hd0,0)
3. WimBoot Apply 到 (hd0,0)  ... 這樣 (hd0,0) 就是一個 WimBoot Win7
PS:  Wim 可以和 Pointer file 放到一起...只是 Wim 不能一起放到 VHD 中
4. 複製 Wim 到 (hd0,1) + WimBoot apply 到 (hd0,1)
這樣就有2個 系統

如果2個系統想共用1個 WimBoot Wim
WimBoot Wim 要放到做還原系統那一個磁碟
例如
(hd0,0) 做還原系統 (hd0,1) 做主要使用
Wim 要放到 (hd0,0) ... 不然用 (hd0,0) 開機 ... Wim 卻放在 (hd0,1)
是要對 (hd0,1) format 嗎...那  (hd0,0) 的系統也跟著掛了
如果是像這樣 步驟4 就可以不用做...直接 WimBoot apply 到 (hd0,1) ...主要用 (hd0,1) ...要還原才用 (hd0,0) 開機



2個 VHD
2個VHD 分別用 1.vhd 2.vhd 表示
其實和上面 2個磁碟...意思一樣...只是用成 VHD 比較簡單一點...比較不會錯

1. 先安裝 windows 到 1.vhd
2. 把 1.vhd 當成 parent 做成 2.vhd
3. 用 2.vhd 開機...打包 1.vhd 中的 Windows 成 WimBoot Wim
4. 有了 WimBoot Wim 後面就看想要怎麼玩

下面說2種玩法

玩法1...這個和 2磁碟 方式...意思一樣....
0. 做好 WimBoot Wim
1. 再用回 1.vhd 開機 .. 2.vhd 可以砍了
2. 之後另建一個獨立 2.vhd (不要 parnet 1.vhd)
3. WimBoot Apply 到 2.vhd
4. 用 2.vhd 開機把 1.vhd 也 WimBoot Apply
這樣就2個 WimBoot Wim 系統VHD 了... (可共用1個 Wim)

玩法2 ... 異動VHD...(這個玩法不知道會不會 Wim 跨度太大不行)
0. 做好 WimBoot Wim
1. 再用回 1.vhd 開機 .. 2.vhd 可以砍了
2. 之後另建一個獨立 2.vhd (不要 parnet 1.vhd)
3. WimBoot Apply 到 2.vhd
4. 用 2.vhd 開機....把 1.vhd 砍了
5. 重新建立 1.vhd.... parnet 2.vhd (異動碟..父=2.vhd, 子=1.vhd)
6. Copy 1.vhd 成 3.vhd , 4.vhd

1.vhd ... 平常用 OS
2.vhd ... WimBoot  + partnet 碟...不動
3.vhd ... 還原用 OS
4.vhd ... 當備份...vhd備份檔...還原時...進入 3.vhd 把 4.vhd Copy 蓋過 1.vhd...就好了

發表於 2015-5-8 13:54:27 | 顯示全部樓層
請教一下:

小弟看了一些wimboot的文章
有提到有2種方式來製作成wimboot.wim
一個是直接用原版install.wim
一個是用已經在使用的系統做成

小弟想用原版w8.1x64的 install.wim做成win81x64wimboot.wim
然後把指針文件放到WIN81x64.vhd內

這2個檔案(win81x64wimboot.wim和 WIN81x64.vhd)直接放到128G的SSD

看到文章有寫到
"創建成功之後可以看到E盤的文件結構與傳統安裝方式的C盤相同,這些其實只是wim文件索引。另外,所有寫入操作將保存在指針文件上,wim文件不會發生變動"

以上的意思 是不是我做好的win81x64wimboot.wim就是一個完整可以使用的系統
然後只要啟動 WIN81x64.vhd
然後把我要的主機板驅動阿 一些常用小軟體阿 都安裝完 重開機
那些所做的改變都會保存到 WIN81x64.vhd內
而win81x64wimboot.wim並不會被修改到它的內容

當系統中毒 或是故障了
我是不是只要把WIN81x64.vhd砍掉 把備分好的WIN81x64.vhd複製到SSD  又是一個新的好的系統了
 樓主| 發表於 2015-5-9 09:40:56 | 顯示全部樓層
是的
發表於 2015-5-9 09:58:23 | 顯示全部樓層
阿達金田一 發表於 2015-5-9 09:40
是的

另外想到一點 WIN81x64.vhd 如果容量不大 小於2G 是否可以用grub4dos引導載入RAM中 這樣不知道有沒有用 感覺主體win81x64wimboot.wim還是在SSD中 似乎多此一舉的感覺
 樓主| 發表於 2015-5-9 13:06:38 | 顯示全部樓層
嗯...
其實這種做法..對岸有很多
而且不只是 WimBoot ...一般的 VHD 也有 (分差VHD...即父子VHD)...把子VHD 用成 ramos)
其主要並不是在讀取上...而是寫入
因為寫入時是寫到 ramdisk ...所以寫入動作不會寫到磁碟...而且又快...而且重開機就消失還原了
不過 VHD/WIM 的讀取當然還是在實際的磁碟中

所以用 FBWF 其實也是一樣(因為實際寫入都是到 ramdisk)...只是看個人需求...和對哪種比較熟

2種要說差別....就是 FBWF 你要安裝到 windows 中...不要用就還要移除
而 grub4dos 則是可以自由選擇...要 ramos 就 ramos ...不要就正常的 VHD 開機

就使用上來說 grub4dos 比較方便....
發表於 2015-5-14 12:43:14 | 顯示全部樓層
BiosGPT Win工具我没有权限下载呀,可否劳烦给个?tl2h@163.com
發表於 2015-5-15 16:13:58 | 顯示全部樓層
本帖最後由 2567288 於 2015-5-15 18:22 編輯
smallhaung 發表於 2015-5-8 13:54
請教一下:

小弟看了一些wimboot的文章

這個之前把 win8.1 x64 做成 wimboot 的方式(vhd + wim) , 放在隨身碟試過 , 也許是分頁檔 (pagefile.sys) 沒處理好 , 效果不是很理想

這兩天重新試了一下 , 另外想在沒有實體硬碟的情況下使用
(1) 在系統中安裝 Primo Ramdisk , 創建一個 Ramdisk 來設定分頁檔 (pagefile.sys)
(2) 安裝 ewf

效果還不錯 , usb2.0的隨身碟 , 開機完成大約 50 秒

測一下隨身碟速度 :


把隨身碟改成U深三分區 , VHD(指針文件) + WIM , 放在中間的 NTFS 分區


用兩台電腦 (不同的 vhd) , 其中一台的 legacy 模式


安裝的軟體


沒有實體硬碟的結構


R槽(Ramdisk) 主要是設定分頁檔 (pagefile.sys) 用 , 只使用 16M


初期 ewf 只使用 19.9 MB, 記憶體使用 0.9GB


分別測試 lightroom 6 , photoshop cs5 , autocad2002 , 開啟速度都很快






ewf 使用 80.4 MB, 記憶體使用 1.2GB


另一台用 uefi 測試


一樣的軟體


uefi 模式


網頁瀏覽


ewf 使用 26 MB, 記憶體使用 1.2GB


pe 內看一下隋身碟的 u深三分區 , 及 wimboot vhd 的檔案實際大小


有兩點要注意
(1) 隨身碟的剩餘容量 , 要大於 vhd 設定的大小 (測試使用 3GB 動態擴展)

(2) 如果是由硬碟拷貝進隨身碟 , 要重新掛載 VHD , 重新指向 wimboot 的鏡像 (wim檔)





您需要登錄後才可以回帖 登錄 | 我要註冊

本版積分規則

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

GMT+8, 2024-11-28 02:35 , Processed in 0.429083 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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