PE经典DIY案例1:全解开方案让量产PE也能
更新說明:因未來的uefi似乎并不能識別并引導ud區,但能識別和引導量產和u+B+隱藏或高端隱藏區,故解決量產PE對u+B+隱藏區的支持,并增加對UEFI啟動支持,已經成為PE制作的最主流技術。
?
PE的最迷人之處,就是DIY。通過DIY,新人才能慢慢提高水平。假期研究了一下U+和B+隱藏。穿發奇想,大部分量產版專用PE,并不支持U+和B+隱藏。就想讓大家簡單改造一下,讓手中的量產專用PE,都能來玩U+和B+隱藏。這里指的量產PE,一般都為內核解開的;多引導一般為grub,其它引導請自行研究解決。
一、U+V2高端隱藏和B+隱藏原理
1.隱藏PE技術:詳見帖子
http://zds1210.blog.163.com/blog/static/2448124820131432936820/
2.內核解開利與蔽:內核解開后,PE特別是NT5 PE對新型電腦特別是本本有超強的兼容性;但似乎不支持隱藏區zip部署,也不支持U+深度隱藏和UD部署。
二、讓純grub4dos多引導的的PE U+寫入U盤隱藏區保留grub多引導
最初,純grub多引導的內核解開的ISO?格式?nt5 PE,寫入U+隱藏區中,就發現變成只支持PE啟動的單引導。原來以為最新版的U+不支持純grub多引導寫入U盤;后來發現PE內核打包了,U+后純grub多引導又出現。反復測試,才大概知道一點規律:原來,?U+引導時,U+先搜索自家的easyboot引導,然后再搜索nt5 PE的引導文件setupldr.bin,最后才搜索其它引導文件如grub;NT5 PE內核解開后,U+先搜索到nt5 PE的引導文件setupldr.bin,所以就直接引導nt5 P E了,而不會出現grub多引導。
知道原因后,解決問題就來就簡單了。解決方法有如下兩方案。
a.U+時保留純grub引導:把nt5 PE引導文件從setupldr.bin改名為ntb之類的,把grub主引導文件放在根目錄下,文件名保留默認的grldr,讓U+直接搜索到grldr,啟動多引導。這樣處理后,光盤版和U+版都可以實現純grub多引導 。也可以在U+后用bootice強制在PE隱藏分區寫入grub分區引導。
當然,也可以給PE(特別是xp和03PE)內核打包成iso來用grub進行map,但這樣子兼容性會下降。
?b.繞道easyboot引導:引入單引導的easyboot(保留引導時間一秒鐘,菜單什么提示的全變為黑色不可見,一個菜單就引導grub主引導文件grldr)。這個方案可加快U+引導速度,增強U+隱藏時引導的兼容性。
同時,實測發現,在用mkisofs打包前,先用easyboot把eb引導文件如BOOTMENU.EZB打開并保存一次,再用mkisofs打包成純grub引導的ISO——這時,光盤量產版引導為純grub引導;U+后又變成easyboot+grub引導了。
三、怎么讓PE識別U+和B+隱藏區
純grub多引導U+技術解決后,接下為就是怎么把光盤版的ISO PE變成支持u+和B+隱藏的PE了?
全內置PE,一般不用考慮外置加載問題。外置外掛式PE,PE內核啟動后,因PE并不認識U+和B+隱藏區,所以要特別處理。用showdirver等類似命令,雖可以顯現隱藏區,但它是可讀寫的,安全性不佳,不推薦(最好關閉pecmd語句中的showdirver信命令,以免隱藏區可讀寫,影響隱藏區數據安全。硬盤上的隱藏區要顯示方法很多)。用杏大的Hdload也可以建立隱藏區按需加載的快捷方式,但要固定隱藏區卷標,通用性不強。推薦大家用bootpart只讀掛載B+隱藏區,又安全通用性又高。
說明白一點,就是在內核中加入bootpart(三文件,bootpart.exe、bootaprt.sys,64位pe加bootpt64.sys),然后把pecmd.ini調用外置winP.ini的腳本改用調用load.cmd腳本,EXEC =!%WinDir%\SYSTEM32\LOAD.CMd。再由load.cmd腳本智能調用winpe.in:PE內核啟動后,如果可見區找得到外置配置文件winpe.ini,就用pecmd直接加載外置吧;找不到就用bootpart只讀掛載U+或B+隱藏區,然后再加載外置。Load.cmd腳本如下,請大家慢慢改進:
@echo off
Rem?以下腳本由獨劍制作,可以智能加載可見區及U+B+隱藏區外置;
Rem?在xp 03 win7 win8普通及極速PE中測試通過
Rem?加載03PE的配置文件名為win03PE.INI
for %%x in ( C D E F G H I J K L M N O P Q R S T U V W) DO if exist %%x:\TOOLS\win03PE.INI SET OPDrv=%%x:&goto cd
goto ULBI
rem?以下為部署到可見區,直接調用腳本
:cd
%WinDir%\SYSTEM32\pecmd.exe load %OPDrv%\TOOLS\win03PE.INI
goto end
rem?以下部署到U+B+隱藏區,用bootpart只讀掛載隱藏區到T盤再來掛載外置
:ULBI
%windir%\system32\bootpart.exe -mount???-readonly??-driveletter T:
if not exist T:\TOOLS\win03PE.INI goto end2
%WinDir%\SYSTEM32\pecmd.exe load T:\TOOLS\win03PE.INI
goto end
:end2
%windir%\system32\bootpart.exe -eject
@echo on
exit
:end
@echo on
exit
有些朋友并不喜歡用cmd腳本,同時為了保持方案的通用性,這里提供pecmd腳本。也就是在在內核中加入bootpart(三文件,bootpart.exe、bootaprt.sys,64位pe加bootpt64.sys)后,大家把把pecmd.ini調用外置處(load??winpe.ini),改成如下腳本就可以:
//試著用bootpart只讀掛載U+和B+隱藏區到T盤
EXEC =!%windir%\system32\bootpart.exe -mount???-readonly??-driveletter T:
//如果T盤存在配置文件,則說明掛載成功直接加載T盤外置;如無配置文件,則取消掛載,用pecmd load搜索加載可見區外置。
IFEX T:\TOOLS\win03PE.INI,TEAM TEXT?載入UI和BI隱藏區外置|LOAD T:\TOOLS\win03PE.INI!TEAM TEXT?載入可見區外置| EXEC =!%windir%\system32\bootpart.exe -eject|load \TOOLS\win03PE.INI???
?
?grub引導文件改好,內核改好,,用mkisofs重新打包成PE純grub多引導的iso文件,新PE就制作好了。
四、部署要點:
1.U+:推薦ultraiso部署到U+V2-hdd格式高端隱藏,不支持zip格式隱藏及深度隱藏;只支持zip的老機子可以U+Zip到可見區玩。
2.B+:推薦用bootice部署到usb-hdd隱藏區,并要把隱藏區激活,以免bootpart掛載不了隱藏盤。
?
這樣子,就可以把論壇上大?部分流行的光盤量產版PE,變成支持U+V2高端隱藏和B+隱藏的PE了。請大家自己動手制作吧。
?
大家可以參考我的成品PE及部署要點:
作品一、我改的杏大PE量產版加U+B+功能,外置解開沒有用wim整體打包,純bios啟動
http://zds1210.blog.163.com/blog/static/2448124820131412229428/?
作品二、我設計的雙三八方案,量產加U+B+隱藏,揚州PE風格,bios和uefi雙啟
http://zds1210.blog.163.com/blog/static/244812482013329013685/
作品三、我改的其它老大的作品,量產加U+B+,外置整體用wim打包
(HPY大俠測試比較成功,揚州風格,量產加U+B+隱藏,bios和uefi雙啟)
http://zds1210.blog.163.com/blog/static/2448124820132302332833/
?
制作好改進型量產PE后,你會發現,PE內核解開后,只支持U+V2-hdd格式高端隱藏,好像并不支持U+隱藏zip格式,也不支持U+深度隱藏。怎么讓PE支持U+zip,支持U+深度隱藏,甚至支持UD呢?下次我們再來第二個diy案例吧,讓一ISO PE支持刻錄光盤量產UDU+深度和B+隱藏吧。。
?
?
?
?
?
PE經典DIY案例2:半解開方案讓你的PE除了量產和U+B+高端隱藏外
也能玩UD和U+V2-hdd深度隱藏!
PE的最迷人之處,就是DIY。通過DIY,新人才能慢慢提高水平。
上一次,通過簡單的DIY,就可以讓量產用的PE,也能玩U+高端和B+隱藏。但你會發現,這種內核解開的PE,一U+到zip格式的隱藏區,很多機子啟動PE就卡nt5和nt6引導上,更不要說U+深度隱藏和UD了。這一次我們再來一次DIY,讓你的PE,還能玩UD和U+V2-hdd深度隱藏,成為可刻盤、量產、UD、U+深度隱藏和B+隱藏的大一統ISO PE吧。
UD和U+深度隱藏都是抹掉分區信息的,在windows/winPE下找不到隱藏分區,所以,相當安全可靠,可以防病毒、防誤刪除和誤格式化。
一、PE內核打包
為了讓你的PE支持部署?UD和U+深度隱藏,PE內核打包成ISO用grub4dos來進行map是必須的。因為即使grub能識別引導UD和U+深度隱藏這種抹掉分區信息的隱藏區,但nt5和nt6引導很可能不識別,就會卡在PE啟動上了。內核解開到內核打包,其實也不復雜,如果你懶,建議你抄人家做得好的UD版改造吧,反正網上一大堆。
但內核打包后,又會引導兼容型問題,特別是對新型電腦特別是新型筆記本電腦的兼容,會出現內核打包map引起的非硬盤驅動的藍屏問題,主要是nt5 PE,win7 win8 PE好像沒這個問題。為解決這個問題,grub增加了一下參數來解決。我們在nt5 PE引導菜單中增加幾個兼容模式就可以解決問題了。
map --e820cycles=n(不加參數默認為-1,從0-3試一下)
map --hook
二、使grub引導識別U+深度隱藏區
grub可以識別并引導UD區,但并不能識別并引導U+深度隱藏區,我們應對其內置菜單grldr作如下改進:
#由論壇P大和2011czmxbb52大提供,HHHWWW3333和不點改進。實測多個grub4.5版本,均成功通過。
#pxe detect
configfile
default 0
timeout 1
title find? /menu/menu.lst
?errorcheck off
?configfile /menu/menu.lst
?if "%@root%"=="(ud)" && calc *0x82A0=*0x82b9&0xff
?if "%@root:~1,1%"=="f" && find --set-root --devices=f /menu/menu.lst && configfile /menu/menu.lst
?find --set-root --ignore-floppies --ignore-cd /menu/menu.lst && configfile /menu/menu.lst
?dd if=(hd0)96+1 of=(md)768+1 bs=1 count=8 skip=502
?set /a pe=*393216 && set /a ps=*393220
?write 393216 0
?write 393220 0
?map (hd0)%pe%+%ps% (fd3)
?map --hook
?set pe= && set ps=
?rootnoverify (fd3)
?#ls (fd3)/ > nul
?configfile (fd3)/menu/menu.lst
?if "%@root:~1,1%"=="f" && find --set-root --devices=f /menu/menu.lst && configfile /menu/menu.lst
?find --set-root --ignore-floppies --ignore-cd /menu/menu.lst && configfile /menu/menu.lst
??????? errorcheck on
?commandline
title commandline
?commandline
title reboot
?reboot
title halt
?halt
?
4.6版的grub核心腳本應改成如下,改成fd3限制bios實際軟驅為4個,dos實際只能有兩個,一個是A盤,一是B盤。
dd if=(hd0)96+1 of=(md)768+1 bs=1 count=8 skip=502
set /a pe=*393216&4294967295 && set /a ps=*393220&4294967295
write 393216 0
write 393220 0
map (128)%pe%+%ps% (fd3)
map --hook
set pe= && set ps=
rootnoverify (fd3)
#ls (fd3)/ > nul
configfile (fd3)/MENU/MENU.LST
pause Error: menu.lst not found! && commandlineenu/menu.lst && configfile /menu/menu.lst
同時內核打包后,純grub多引導的iso,U+時仍可以保留grub多引導,這點不用擔心了。
三、PE內核改進
上次我們在PE內核加入了ultraiso的官方版bootpart驅動(bootpart.exe、bootaprt.sys,64位pe加bootpt64.sys)后,就原生態的支持U+V2高端隱藏區和B+隱藏區。事實上,bootpart驅動也支持U+V2-hdd深度隱藏區掛載,暫不支持U+V2-zip深度隱藏區掛載。同時,UD區文件是不能直接使用的,現在都要導出到可見區下再使用——為了增加對UD隱藏區的數據讀出,我們推薦大家在%windir%\system32\下加入百草霜老大的在原版fbinst基礎上改進的fbinst plus,它可以完美支持ud的uft-8文件格式。bootpart和fbinst plus這兩個軟件在基本PE內核下都可以運行,實測對U+和B+隱藏及UD隱藏在xp 03 win7?和win8系統下支持都非常好。
(一)fbinst plus的基本用法
改進fbinst plus采用的是命令行模式,但功能很強大,我們可以在pecmd腳本下或cmd腳本下調用下。以下是在pecmd腳本上調用的常用用法:
//1.導出UD區文件
EXEC =!%WinDir%\SYSTEM32\fbinst (ud) output tools/ico.dll???%WinDir%\system32\%~nx
//2.系統自啟動程序調用
/EXEC =!%WinDir%\SYSTEM32\fbinst --udload "tools/文字輸入/FREEWB.exe" "%TEMP%"
//3.1建立UD區程序按需調用的快捷方式并加圖標(是彈出黑窗口,,)
TEAM ENVI FBE=fbinst --link|ENVI FBU=fbinst.exe "—udload
//引用快捷圖標,有時是#,是時候是,
exec =!%FBE% %Desktop%\手工運行ghost32" %FBU% petools/備份還原/ghost32.exe %TEMP%" ico.dll#22
exec =!%FBE% % Programs %\備份還原\手工運行ghost32" %FBU% petools/備份還原/ghost32.exe %TEMP%"??ico.dll#22
//3.2建立UD區程序按需調用的快捷方式(不彈出黑窗口)
TEAM ENVI SS=%windir%\system32|ENVI FBU=!%SS%\fbinst.exe --udload tools|ENVI PEC=%windir%\system32\pecmd.exe
//引用快捷圖標,有時是#,是時候是,
link %Programs%\搜索自定義petools,%PEC%,exec %fbu%/文件工具/fbpetools.cmd %TEMP%,%SS%\ico.dll#2
link %Programs%\系統維護\遠程編輯注冊表,%PEC%,exec %fbu%/系統維護/遠程編輯注冊表.exe %TEMP%,%SS%\ico.dll#11
link %Desktop%\Aida64?環境檢測,%PEC%,exec %fbu%/硬件檢測/aida64.exe %TEMP%,%SS%\ico.dll#13
//4.搜索UD區指定文件夾并建立快捷方式
exec =!WinDir%\SYSTEM32\fbinst --onlylink "PEtools/*"??%TEMP%
?
//5全盤搜索可見區\Petools并建立快捷方式,win8PE不完善建議用其它pecmd腳本搞定
exec =!%windir%\system32\fbinst.exe --autoptlink
?
(二)智能判斷PE部署環境腳本
我們在PE內核加這兩個程序以后,就可以在PE內核啟動后,由Pecmd.ini調用load.cmd,由load.cmd智能判斷PE部署環境,可見區由pecmd load加載外置,U+和B+隱藏區由bootpart只讀加載隱藏區,UD由fbinst plus建立外置的按需加載快捷方式。
load.cmd智能腳本如下,請大家慢慢改進吧。
@echo off
rem?以下腳本由獨劍原創,可智能加載可見區UD區U+深隱藏區和B+區外置;實測在xp 03 win7 win8 PE下通過。
for %%x in (C D E F G H I J K L M N O P Q R S T U V W) DO if exist %%x:\TOOLS\CD03PE2013.INI??SET OPDrv=%%x:&goto cd
goto UD
rem?量產版U+和B+版的外置配置文件為CD03PE2013.INI
:cd
%WinDir%\SYSTEM32\pecmd.exe load?%OPDrv%\TOOLS\CD03PE2013.INI
goto end
rem UD的外置配置文件為UD03PE2013.INI
:UD
%WinDir%\SYSTEM32\fbinst.exe (ud) output tools/ud03pe.ini???%WinDir%\%%~nx
if not exist %WinDir%\ud03pe.ini goto ULBI
%WinDir%\SYSTEM32\pecmd.exe load %WinDir%\ud03pe.ini
goto end
:ULBI
%windir%\system32\bootpart.exe -mount???-readonly??-driveletter T:
if not exist T:\TOOLS\CD03PE2013.INI goto end2
%WinDir%\SYSTEM32\pecmd.exe load T:\TOOLS\CD03PE2013.INI
goto end
:end2
%windir%\system32\bootpart.exe -eject
@echo on
exit
:end
@echo on
exit
有些朋友不喜歡用cmd腳本,同時為了保持方案的通用性,這里提供pecmd腳本。也就是在內核中加入fbinst plus和bootpart(三文件,bootpart.exe、bootaprt.sys,64位pe加bootpt64.sys)后,大家把把pecmd.ini調用外置處(load??winpe.ini),改成如下腳本就可以:
//UD和非UD(光盤量產U+B+版)通用外置掛載方案;ud?為ud03pe.ini?,非UD為cd03pe.ini
//試著導出UD區配置文件,成功為UD版,不成功則為非UD版
EXEC =!%windir%\system32\fbinst.exe (ud) output tools/ud03pe.ini???%WinDir%\%~nx
//非UD版,則試著只讀掛載U+或B+隱藏區到T盤;
IFEX??%WinDir%\ud03pe.ini,! EXEC =!%windir%\system32\bootpart.exe -mount???-readonly??-driveletter T:
//如果掛載的是非U+或B+隱藏盤,則取消掛載,免浪費盤符
IFEX T:\TOOLS\cd03pe.ini,! EXEC =!%windir%\system32\bootpart.exe??-eject
?//UD版加載外置配置文件ud03pe.ini;非Ud版加載外置配置文件cd03pe.ini
IFEX??%WinDir%\ud03pe.ini,load?%WinDir%\ud03pe.ini!load \cd03pe.ini?
?
?也可以試著由以下有子過程的pecmd腳本解決(以下腳本實機測試通過)
//UD和非UD(光盤量產U+B+版)通用外置掛載方案;ud?為ud03pe.ini?,非UD為cd03pe.ini
//試著導出UD區配置文件,成功為UD版,不成功則為非UD版
EXEC =!%windir%\system32\fbinst.exe (ud) output "tools/ud03pe.ini"???x:\tools\%~nx
//UD則加載配置文件ud03pe.ini,非UD調用子過程,智能處理
IFEX??x:\tools\ud03pe.ini,CALL UD_LOAD?! CALL CD_LOAD
_SUB?UD_ LOAD
TEAM TEXT?載入UD隱藏區外置|load?x:\tools\ud03pe.ini
_END
_SUB?CD_ LOAD
//試著用bootpart只讀掛載U+和B+隱藏區到T盤
EXEC =!%windir%\system32\bootpart.exe -mount???-readonly??-driveletter T:
//如果T盤存在配置文件,則說明掛載成功直接加載T盤外置;如無配置文件,則取消掛載,用pecmd load加載可見區外置。
IFEX T:\TOOLS\cd03pe.ini,TEAM TEXT?載入UI和BI隱藏區外置|LOAD T:\TOOLS\cd03pe.ini!TEAM TEXT?載入可見區外置| EXEC =!%windir%\system32\bootpart.exe -eject|load \TOOLS\?cd03pe.ini???
_END
?
?
如果外置整體打包成wim,可以試著由以下pecmd腳本解決,Pecmd關鍵代碼為:
//UD和非UD(光盤量產U+B+版)通用外置WIM打包掛載方案
//exec =!cmd.exe? /C? "md x:\tools\"
EXEC =!%windir%\system32\fbinst.exe (ud) output "tools/WIN03PE2013.INI"?? x:\tools\%~nx
IFEX? x:\tools\WIN03PE2013.INI,CALL UD_LOAD!CALL CD_LOAD
_SUB UD_LOAD
//EXEC =!%windir%\system32\fbinst.exe (ud) output tools/tools.wim z:\tools\%~nx
TEAM TEXT 載入UD隱藏區外置|load x:\tools\WIN03PE2013.INI
_END
_SUB CD_LOAD
EXEC =!%windir%\system32\bootpart.exe -mount?? -readonly? -driveletter T:
IFEX T:\TOOLS\WIN03PE2013.INI,TEAM TEXT 載入UIBI隱藏區外置|load t:\tools\WIN03PE2013.INI!TEAM TEXT 載入可見區外置|EXEC =!%windir%\system32\bootpart.exe -eject|load \tools\WIN03PE2013.INI
_END
這個時候外置加載腳本可以統一為一個,win03pe2013.ini關鍵腳本如下:
//以下為moun外置wim,分UD和非UD(光盤量產和U+B+版)
IFEX? x:\tools\WIN03PE2013.INI,CALL UD_moun!CALL CD_moun
_SUB UD_moun
EXEC =!%windir%\system32\fbinst.exe (ud) output tools/tools.wim Z:\tools\%~nx
MOUN Z:\tools\tools.WIM,Y:,1
_END
_SUB CD_moun
MOUN %CurDrv%\tools\tools.WIM,Y:,1
_END
//并定義外置目錄
FIND Explorer.EXE,CALL Outer_Reload
ENVI TYDir=Y:\tools
//以下定義快捷方式圖標文件
envi icpt=%TYDir%\ico.dll#
file %TYDir%\dll.7z=>x:\wxpe\system32\dll.7z
file %TYDir%\basic.7z=>x:\wxpe\system32\basic.7z
//以下為自定義桌面,分UD和非UD(光盤量產和U+B+版)
IFEX? x:\tools\WIN03PE2013.INI,CALL UD_desk!CALL CD_desk
_SUB UD_desk
EXEC =!%WinDir%\SYSTEM32\fbinst (ud) output desk/logo.jpg?? %WinDir%\system32\%~nx
EXEC =!%WinDir%\SYSTEM32\fbinst (ud) output desk/desk.jpg?? %WinDir%\system32\%~nx
_END
_SUB CD_desk
file x:\wxpe\system32\logo.jpg
file x:\wxpe\system32\desk.jpg
file %CurDrv%\desk\logo.jpg=>x:\wxpe\system32\logo.jpg?
file %CurDrv%\desk\desk.jpg=>x:\wxpe\system32\desk.jpg
_END
wAIT 300
//系統安裝
link %programs%\系統安裝\Windows安裝助手,%TYDir%\系統安裝\setupxp.exe,,%icpt%40
?
?
(三)最簡單的大統一方案——支持光盤、量產、UD和U+V2-hdd深度隱藏
如果大家感覺上面的大麻煩,就給大家一下最簡單的統一加載外置\petool方案吧。
本方案中利用百大的fbinst plus(fbinst.exe)和ultraiso自帶的bootpart驅動(bootpart.exe,bootpart.sys,bootpt64.sys)來實現可見區、UD區和U+隱藏區(低端隱藏、高端隱藏和深度隱藏-hdd格式,不支持深度隱藏U+V2-zip格式)和B+隱藏區的\petools\外置的自動建立快捷方式。PE系統支持32位或64位的xp 03 win7和win8 PE。
首先要求外置軟件單個打包成能單獨運行,分目錄放置于\petools\下。然后PE內核%windir%\system3\下內置四文件fbinst,bootpart.exe, bootpart.sys,bootpt64.sys,并編寫cmd腳本在pecmd.ini的適合位置調用。cmd腳本如下,你也可以改成pecmd腳本。
@echo off
rem?以下代碼可以搜索可見區、UD區和U+ B+隱藏區petools文件夾,并建立快捷方式
Rem U+隱藏區不支持深度隱藏U+V2-zip格式。
rem?在win8PE中可見區搜索不完善,建議大家用pecmd腳本代替
%windir%\system32\fbinst --onlylink "PEtools/*"??%TEMP%
%windir%\system32\bootpart.exe -mount???-readonly??-driveletter U:
%windir%\system32\fbinst.exe --autoptlink
四、部署要點:
1.U+:支持ultraiso部署到U+V2-hdd深度隱藏,因bootpart所限,并不支持U+V2-zip深度隱藏后外掛的加載。
2.B+:推薦用bootice部署到usb-hdd隱藏區,并要把隱藏區激活,以免bootpart掛載不了隱藏盤。
?
大家可以參加我制作的半解開統一成品PE:
一、在杏大PE2013元旦UD版基礎上改進成統一版,外置解開整體沒有用wim打包
我的博客上的帖子:
http://zds1210.blog.163.com/blog/static/24481248201303001531628/
無憂論壇上的帖子:
http://bbs.wuyou.com/viewthread.php?tid=274893
二、其它大俠的UD版改進成統一版,外置整體用wim打包,HPY大俠的作品改進已經完工
http://zds1210.blog.163.com/blog/static/2448124820133895550491/
?
?
制作好以后,你會發現,這種全外置的統一PE,并不支持U+V2-zip深度隱藏下加載外置,這只能怪官方的bootpart了。難道一定要全內置PE才行吧?下次,我再出一個絕招,用很另類的方法,不用什么bootpart,也不用什么fbinst了,不要說什么U+V2-zip深度隱藏,就是以后出來很牛的隱藏區,只要grub能識別,我們就能加載實現統一部署。
?
?
PE經典DIY案例3:全打包方案,小樣的U+V2-zip深度隱藏,
我就不信搞不定你——對付各種PE隱藏區的最后絕招
?
PE的最迷人之處,就是DIY。通過DIY,新人才能慢慢提高水平。
上一次,通過DIY,在PE內核中加入了fbinst plus并打包,可以讓你的PE,也能玩UD和U+V2-hdd深度隱藏。但你會發現,這種全外置的統一PE,因目前官方的bootpart所限,并不支持U+V2-zip深度隱藏下加載外置。這一次我們再來一次DIY,給你一個絕招,讓你的PE,搞定U+V2-zip深度隱藏,甚至以后更牛的隱藏。
這時,大家也許會想到全內置的極速PE,一二級內核分離來map,外置和二級內核一起打包,就可以實現U+V2-zip深度隱藏區外置的加載。我們可以借這個原理,普通PE中外置也打包成ISO來map,就能搞定各種隱藏。
一、基本原理
全打包統一PE,也叫真正統一PE,借鑒了一二級內核分離的全內置極速PE方案,PE內核和外置都分別打包成ISO來用grub4dos進行map。首先要求PE內核中內置wvblock驅動?(運行外置式的飯大的srs驅動也行),PE內核啟動后,部署在U盤可讀寫介質中(如U+ B+可見區和隱藏區)中就可以看到外置ISO的直接map的wvblock虛擬盤,從而實現外置加載。內核中不需要專門針對隱藏的工具,如fbinst plus,udload和bootpart。
因為在光盤量產版(只讀介質中)并不支持外置程序的直接map,所以特設計了智能腳本,用wblock、vdm或imgburn虛擬光驅只讀掛載只讀介質可見區中的外置ISO文件,再實現外置的掛載。
這種全打包統一方案,是相當創新的一種統一部署方案,是?相當的另類的。最大的優勢,就是專門對付各種隱藏PE區的全外置加載,只要grub能識別引導隱藏區,它就能加載隱藏區的外置,而不用改變原來的PE內核。比如,U+剛開始才有低度隱藏,因grub能識別低度隱藏,它就支持低度隱藏;U+高端隱藏后,因grub能識別高端隱藏,它就支持高端隱藏;?U+V2深度隱藏出來后,改進grub使它支持深度隱藏,它就支持深度隱藏,也是目前唯一支持U+V2-zip深度隱藏后外置加載PE方案。再后來我測試B+隱藏,發現它可以不用激活分區就完全支持B+隱藏。未來有什么更牛的隱藏PE,只要grub能識別這種隱藏區,這個PE就不用改變內核的支持這種隱藏區的外置加載。無愧為真正統一PE的稱號。
當然,它的缺點也是很多,一二級內核分離的極速PE有什么缺點,它就有什么缺點。一是對U口讀寫質量要求高,U盤質量不好,U盤插口不好或沒有插好,就可能加載不了外置,特別是win7PE。二是內核和外置打包,兼容性下降,有些問題不可預知:在一些主板中,死活加不了外置,特別是win7PE,要map –mem外置才行。三是對win7win8PE制作技術要求特別高。WIN7PE,目前解決的比較好的是飯大極速win7PE中還原的普通win7PE,在U盤可讀寫介部署,實現了外置的ISO直接map,在PE啟動后可以看到外置直接map的虛擬盤。一直夢想能找到一種通用的方法,在其它win7PE和win8PE中集成wvblock驅動,按飯大或smine的方案調整好USB、wvblock、cdrom驅動順序,打開其它win7Pe或win8的任督二脈,實現外置或極速版二級內核的直接map。但試了其它幾個PE,都是在U盤版中能看到直接map外置ISO的虛擬盤驅,就是打不開。看來還有一些注冊項和文件要攻關,請大家多多努力。
二、grub腳本和菜單改進
前提還是要改進grub的內置菜單grldr(方法如前),使它識別U+V2深度隱藏區。甚至更牛的隱藏區,也可增加代碼,讓grub能識別能引導。然后,PE和外置都要打包成ISO來map,外置ISO是直接map,所以,部署在隱藏U盤可讀寫區中,外置包再大,加載速度也可以很快。
三、內核改進
全打包統一方案,內核中不需要專門針對隱藏的工具,如fbinst plus,udload和bootpart。首先要在PE內核中內置wvblock驅動,PE內核啟動后,部署在U盤可讀寫介質中(如U+ B+可見區和隱藏區)中就可以看到外置ISO的直接map的wvblock虛擬盤,從而實現外置加載。
因為在光盤量產版(只讀介質中)并不支持外置程序ISO的直接map,所以特設計了智能腳本,用wblock、vdm或imgburn虛擬光驅只讀掛載光盤量產可見區中的外置ISO文件,來實現外置的掛載。
pecmd.ini中關鍵語句如下:
//建立外置程序的擴展菜單,包括桌面和開始菜單
//以下語句直接調用UD或U+或B+隱藏區的外置
LOAD \外置程序\WinPE.INI
//新增加幾行用于調入光盤版和量產版的PEtools.iso
LINK %StartMenu%\加載外部配置,%WS%\peiso.cmd
TEAM TEXT|exec =%WS%\peiso.cmd
?
peiso.cmd腳本如下:
1.vdm加載ISO
@echo off
set ff=winpefiles
for %%x in (A B C D E F G H I J K L M N O P Q R S T U V W) DO if exist %%x:\外置程序\winpe.ini goto end
for %%x in (A B C D E F G H I J K L M N O P Q R S T U V) DO (if exist %%x:\iso\petools.iso set fn=%%x:\iso\petools.iso
if exist %%x:\iso\petools.iso GOTO iso
)
goto end
:iso
REG ADD "HKCU\Software\Towodo Software\Virtual Drive Manager\Settings" /f /v MountPrevious /t REG_DWORD /d 1 >nul
REG ADD "HKCU\Software\Towodo Software\Virtual Drive Manager\Settings" /f /v XbtnQuit /t REG_DWORD /d 0 >nul
REG ADD "HKCU\Software\Towodo Software\Virtual Drive Manager\Settings" /f /v LastMounts /t REG_MULTI_SZ /s ! /d W:!自動偵測!%fn%!1 >nul
REG ADD "HKCU\Software\Towodo Software\虛擬驅動器\Settings" /f /v MountPrevious /t REG_DWORD /d 1 >nul
REG ADD "HKCU\Software\Towodo Software\虛擬驅動器\Settings" /f /v XbtnQuit /t REG_DWORD /d 0 >nul
REG ADD "HKCU\Software\Towodo Software\虛擬驅動器\Settings" /f /v LastMounts /t REG_MULTI_SZ /s ! /d W:!自動偵測!%fn%!1 >nul
goto vdm
:vdm
start vdm1.exe /i
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo?稍等片刻......
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:Wait
pecmd wait 1000
IF NOT EXIST W: GOTO Wait
if exist W:\外置程序\winpe.ini pecmd load W:\外置程序\winpe.ini
:end
?
2.imburn加載ISO
@echo off
for %%x in (A B C D E F G H I J K L M N O P Q R S T U V W) DO if exist %%x:\外置程序\winpe.ini goto end
for %%x in (A B C D E F G H I J K L M N O P Q R S T U V) DO (if exist %%x:\iso\petools.iso set fn=%%x:\iso\petools.iso
if exist %%x:\iso\petools.iso GOTO iso
)
goto end
:iso
imdisk??-a -f %fn% -m Y:
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo?稍等片刻......
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:Wait
pecmd wait 1000
IF NOT EXIST Y: GOTO Wait
if exist Y:\外置程序\winpe.ini pecmd load Y:\外置程序\winpe.ini
:end
?
3.isocmd加載ISO或壓縮ISZ方案:最好用,PE內核system32中加入isocmd.exe及ISODrive.sys和ISODrv64.sys
@echo off
isocmd.exe -number 1
isocmd.exe -i
isocmd.exe -change 1 t:
for %%i in (D: E: X: C: F: G: H: I: J: K: L: M: N: O: P: Q: R: S: T: U: V: W: Y: Z:) DO (
??if exist %%i\iso\NVXPPE.ISO (SET OPDrv=%%i&SET OPExt=iso&goto :mount_iso)
)
:mount_iso
isocmd -mount t: %OPDrv%\iso\NVXPPE.%OPExt% >nul
SET OPExt=
pecmd load T:\tools\winpe.ini
語句用法 如下:
ISOCMD -NUMBER 1 (設定光盤數量)
ISOCMD -i (開始安裝驅動)
ISOCMD -MOUNT 0: ISO路徑 (加載ISO文件到最后一個可用盤符)
ISOCMD -EJECT 0: (卸載最后加載的光驅,不管是否有文件打開)
ISOCMD -r (卸載驅動)
ISOCMD -v (或p,顯示信息)
ISOCMD -s (啟用驅動)
ISOCMD -1 (停止驅動)
isocmd.exe -change 1 y:(固定掛載光盤為Y盤)
三、配角fbinst和bootpart的作用
這種方案中,fbinst plus?和bootpart已經起不到作用了,我們主要還是利用了wvblock驅動。但把它們外置,可以搜索可見區、UD區和U+B+隱藏區自定義\Petools下的軟件;把它們內置,當wvblock驅動加載外置失敗,我們可以用它們再一次來嘗試加載外置,從而起到雙保險作用。
?
大家可以參加我制作的全打包統一成品PE:(也叫真正統一PE大合盤)
我的博客上的帖子:
http://zds1210.blog.163.com/blog/static/244812482012101023635183/
?
無憂論壇上的帖子:
http://bbs.wuyou.com/viewthread.PHP?tid=274893
?
?
?補充:
關于極速PE三個統一方案的說明
本人設計了三個普通PE統一方案,一是全解開方案,二是半解開方案,三是全打包方案(又叫真正統一PE),制作了三個成品PE大合盤,經測試都達到了預期的統一目標。
但在研究極速PE的各種部署的統一中,卻遇到了比較大的困難。首先,極速PE,一定要采用一二級內核分離,一級內核用grub以仿真內存方式map(map --mem),才能實現新老機子極速啟動。因部署在隱藏U盤區(UD、U+和B+隱藏),無法直接mount隱藏區解開的二級內核,需要把二級內核打包成ISO用grub直接map(用wvblock驅動把二級內核映射到虛擬光驅中,從而實現mount二級內核);而在只讀介質中(光盤、U盤量產為usb-cdrom)中,又無法直接map打包的二級內核ISO,只能直接mout解開的二級內核。因而很難實現極速PE在各種部署中的統一,很難同時達到極速啟動的效果。
本方案首創了雙二級內核的方法,以空間換時間的方法,實現極速PE在光盤、量產為usb-cdrom、UD、U+和B+各種部署中的都能極速啟動,讓極速PE實現真正統一。考慮到xp和03極速?PE二級內核一般為20—30M左右,所浪費空間并不多。
一、全解開方案:可用于刻錄光盤、量產、U+V2-hdd高端隱藏和B+隱藏
一級內核解開,二級內核解開的wim和打包成無碎片的ISO均保留。部署在可見區(光盤量產)時,一級內核啟動后,直接mount解開的二級內核wim;部署在可寫隱藏區(U+和B+隱藏區)時,就利用打包成ISO的二級內核(把二級內核用grub直接map,用wvblock驅動把打包的二級內核ISO映射到虛擬光驅中來mount)。內核啟動后,智能加載可見區(用pecmd load)、U+B+隱藏區(利用bootpart驅動)外置。部署在U+B+可見區時,可以利用解開的二級內核,也可以利用打包的二級內核,推薦用解開的二級內核,以免打包的二級內核在讀寫中產生碎片而mount失敗。
關鍵pecmd腳本如下:(補充)
關鍵grub腳本如下:(補充)
PE成品地址:
http://zds1210.blog.163.com/blog/static/244812482013329013685/
二、半解開方案:可用于刻錄光盤、量產、UD、U+V2-hdd深度隱藏和B+隱藏
一級內核打包成ISO來map,二級內核解開的WIM和打包成無碎片的ISO均保留。
部署在可見區(光盤量產)時,一級內核啟動后,直接mount解開的二級內核wim;部署在可寫隱藏區(U+和B+隱藏區)時,就利用打包成ISO的二級內核(把二級內核用grub直接map,用wvblock驅動把打包的二級內核ISO映射到虛擬光驅中來mount)。內核啟動后,智能加載可見區(用pecmd load)、UD區(用fbinst plus)和U+B+隱藏區(利用bootpart驅動)外置。部署在U+B+可見區時,可以利用解開的二級內核,也可以利用打包的二級內核,推薦用解開的二級內核,以免打包的二級內核在讀寫中產生碎片而mount失敗。
關鍵pecmd腳本如下如方案一。關鍵grub腳本如下:(補充)
PE成品地址:
http://zds1210.blog.163.com/blog/static/24481248201303001531628/
三、全打包方案:可用于刻錄光盤、量產、UD、U+V2-zip深度隱藏和B+隱藏,對付可寫隱藏區的利器
一級內核打包成ISO來map,解開二級內核的WIM和與外置一起打包成無碎片的ISO均保留。部署在可見區時,一級內核啟動后,直接加載解開的二級內核,再用isocmd或vdm等掛載打包的二級內核和外置ISO到虛擬光驅中,然后實現外置加載;部署于U盤隱藏區(UD、U+和B+隱藏)時,一級內核啟動后,然后mount打包的二級內核從而實現外置加載(用grub直接map二級內核和外置包,用wvblock驅動把二級內核和外置映射到虛擬光驅中)。關鍵grub腳本如下:(補充)
本方案中,可與全打包普通統一PE共享外置,可實現U+V2-zip深度隱藏時外置加載,是專門對付各種可寫隱藏區的好方案,全打包統一極速PE,不愧為真正統一極速PE。
PE成品地址:
?
同時在三個方案中,都改進了native.ini腳本,native.ini不到二級內核時,轉換到wait.ini腳本,wait.ini腳本找不到二級內核時,再轉換到native.ini腳本…… 這樣子增強了加載二級內核的可靠性,解決了一部分量產區在后面的U盤量產時加載不了極速版二級內核的問題。
?
PE經典DIY三案例?帖子更新地址:
http://zds1210.blog.163.com/blog/static/24481248201311781538866/
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的PE经典DIY案例1:全解开方案让量产PE也能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最常用最好记Linux命令
- 下一篇: C#double转化成字符串 保留小数位