【openxp打包簡易流程第1版 2026-02-08.txt】
openxp打包簡易流程第1版 2026-02-08
參考資料:
https://theopenxp.org/wiki/Getting_Started
D:\srv03rtm\readme.md
一、要點:
1. 編譯源碼和打包要單線程,估計是臨時文件衝突編譯會失敗。
2. 打包64位版本iso,會用到32位版的文件。所以要先打包32位版(x86),後打包64位版本(amd64)。
3. 編譯通過後,已經和源碼沒有太多的關係。後續需要從正式發行版里補缺失的或運行正常的文件進行打包。
4. 並不是所有的版本參數都可以通過,可以通過腳本 chksku.pm 初步判斷。pbuild.cmd 執行的 tools\postbuildscripts\cdimage.cmd -l:usa 會用到 chksku.pm。
perl tools\chksku.pm
-t:
per pro srv ads
-l:
usa jpn ara
-a:
x86
amd64
ia64
return 0 (valid)
return 1 (invalid)
perl tools\cksku.pm -t:per -l:usa -a:amd64
echo %ERRORLEVEL%
0
perl tools\cksku.pm -t:pro -l:usa -a:amd64
echo %ERRORLEVEL%
0
perl tools\cksku.pm -t:srv -l:usa -a:amd64
echo %ERRORLEVEL%
1
二、準備工作:
1. 源碼包
https://theopenxp.org/
https://theopenxp.org/download
下這兩個文件就可以。
srv03rtm.7z
misbin.7z
2. 作業系統:
需要64位版的Windows。這個源碼時打過補丁的,32位版工具支持有問題。
我嘗試過,英文版Server 2003,Win10 LTSC都可以,選英文版Server 2003吧。
中文版Win10 LTSC會有些問題,需要給源碼打補丁,也能編譯通過。還沒有深入分析。
Win10需要禁UAC disable User Account Control
HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System and set EnableLUA to 0. 重啟機器。
需要安裝的軟體
en_win_srv_2003_r2_standard_x64_with_sp2_vl_cd1_X13-47808.iso
en_win_srv_2003_r2_standard_x64_with_sp2_vl_cd2_X13-68587.iso
Microsoft .NET Framework 2.0 Service Pack 1 (x64)
NetFx20SP1_x64.exe
3. 編譯準備
解壓 srv03rtm.7z 到 D:\srv03rtm
安裝密鑰 tools\driver.pfx
三、編譯生成x86安裝盤
4. 第一輪,編譯原始碼,生成x86安裝盤
系統管理員身份進入cmd
cd /d D:\srv03rtm
tools\razzle64.cmd free offline
第一次進入會自動安裝些工具。退出再進入一次。
用32位版替換兩個不能執行的文件。
copy D:\srv03rtm\tools\x86\gidl.exe D:\srv03rtm\tools\amd64
copy D:\srv03rtm\tools\x86\mibcc.exe D:\srv03rtm\tools\amd64
5. 開始編譯
如果第一次運行編譯首先執行: tools\prebuild
build /cZP -M 1
注意,一定要定義 -M 1。單線程編譯。
6. 編譯完成後,會生成 D:\binaries.x86fre
這是可以把 D:\binaries.x86fre 和 D:\srv03rtm 打包備份一下。回頭還要用。
打包後,我改了壓縮包文件名。
binaries.x86fre_x86.7z
srv03rtm_x86.7z
7. 補缺失的文件
解壓文件 misbin.7z
有4個目錄。用 binaries.x86fre 覆蓋 D:\binaries.x86fre
8. 修改打包的線程為1
文件名 D:\srv03rtm\tools\postbuildscripts\pbuild.cmd
找到
if ( $HorsePower ) {
$MaxThreads = $NumProcs * $HorsePower;
} else {
$MaxThreads = $NumProcs * 4;
}
之後加上一句
$MaxThreads = 1;
8. 把需要生成 iso 的文件壓縮打包。
tools\postbuild -sku:srv
9. 生成 x86 版的 iso
tools\oscdimg.cmd srv
如果不需要 x86 版的iso文件,這一步也可以省略。
四、編譯生成amd64安裝盤
打包amd64版需要用到x86版的文件。
保留 D:\binaries.x86fre 目錄備用。刪除或改名 D:\srv03rtm 目錄。
以下步驟和上述步驟類似。
解壓 srv03rtm.7z 到 D:\srv03rtm
10. 第二輪,編譯原始碼,生成amd64安裝盤
系統管理員身份進入cmd
cd /d D:\srv03rtm
tools\razzle64.cmd free offline win64 amd64
第一次進入會自動安裝些工具。退出再進入一次。
用32位版替換兩個不能執行的文件。
copy D:\srv03rtm\tools\x86\gidl.exe D:\srv03rtm\tools\amd64
copy D:\srv03rtm\tools\x86\mibcc.exe D:\srv03rtm\tools\amd64
5. 開始編譯
如果第一次運行編譯首先執行: tools\prebuild
build /cZP -M 1
注意,一定要定義 -M 1。單線程編譯。
6. 編譯完成後,會生成 D:\binaries.amd64fre
這是可以把 D:\binaries.amd64fre 和 D:\srv03rtm 打包備份一下。回頭還要用。
打包後,我改了壓縮包文件名。
binaries.amd64fre_amd64.7z
srv03rtm_amd64.7z
7. 補缺失的文件
解壓文件 misbin.7z
有4個目錄。用 binaries.amd64fre 覆蓋 D:\binaries.amd64fre
8. 修改打包的線程為1
文件名 D:\srv03rtm\tools\postbuildscripts\pbuild.cmd
找到
if ( $HorsePower ) {
$MaxThreads = $NumProcs * $HorsePower;
} else {
$MaxThreads = $NumProcs * 4;
}
之後加上一句
$MaxThreads = 1;
8. 把需要生成 iso 的文件壓縮打包。
tools\postbuild -sku:pro
9. 生成 am64 版的 iso
tools\oscdimg.cmd pro
四、後續
生成的iso文件,安裝進入會有問題,後續排查解決。
我打包iso的安裝失敗
zzemu 2026/2/8 22:13:54