Windows XP SP1源代码编译方法(笔记)

发布时间:2024年01月04日

NT版本 ? : 5.1
编译号 ? :2600
编译时间 : 2001年8月17日11点48分

第一步 : 搭建编译环境
? 使用VMWare搭建Windows XP的编译环境,注意系统要使用英文版。

第二步 : 设置编译参数

1.将原代码解压到虚拟机的XP系统中的C盘C:\NT目录或者D盘D:\NT目录下。

2.取消所有源代码的只读属性

3.打补丁:解压winxpsp1_perpatched_v1.rar覆盖到原代码,winxpsp1_perpatched_v1.rar是我根据win2003_prepatched_v10a补丁修改的Windows XP XP SP1补丁,网上最新的win2003_prepatched_v10a是给Windows Server 2003修改的补丁,在Windows XP SP1中实测不可用。

4.将NT\tools\razzle.cmd创建快捷方式到桌面,然后点属性编辑razzle.cmd,
? ? target ? :%windir%\system32\cmd.exe /k C:\NT\tools\razzle.cmd free officialbuild?
? ? Start in : C:\NT

第三步 : 开始编译

1.点击运行razzle.cmd,中间会弹出记事本,点击关闭即可。运行完成后显示当前在管理员权限表示成功。

2.输入build /cZP 或者 perl tools\timebuild.pl -NOCLEANBUILD -NOSYNC -NOSCORCH开始编译

? 打开build.log和build.err文件可以查看错误和日志。

? 编译完成后的二进制输出文件在 : C:\binaries.x86fre?

? 注:输入build /cZP 编译速度要快,timebuild.pl 经过漫长的等待后将编译出所有的发行版本。

第四步 : 制作ISO

? 将C:\binaries.x86fre 中的内容全部移动到 C:\svcpack.x86fre\usa\* 目录


?1.运行perl tools\timebuild.pl -NOCLEANBUILD -NOSYNC -NOSCORCH -RESUME 或者 tools\postbuild.cmd 将编译出所有的发行版本。

?2.运行tools\postbuild.cmd -sku:{pro} 将编译出单独的发行版本

? ?目录在:C:\binaries.x86fre\pro目录中

?3.运行tools\oscdimg.cmd pro 将制作出可安装的ISO

? ?ISO安装镜像在 :C:pro.iso?


? ?注 :Windows XP SP1 的tools目录的编译工具可正常编译,但是在制作ISO的时候命令1默认是编译所有的版本SP补丁包,需要调整编译配置,正常编译完成后我直接替换Windows Server 2003的编译工具到Windows XP SP1 目录NT\tools,输入2的制作命令制作出了可安装ISO。

第五步 :用虚拟机开始安装自己编译的Windows XP系统。

? ?将pro.iso复制到主机系统,开始体验。哈哈!


备注:
? 构建编译环境命令 ? ?: NT\tools\razzle.cmd

? 编译命令 ? ? ? ? ? ?: NT\tools\timebuild.pl //速度很慢

? 编译命令 ? ? ? ? ? ?: build ? ? ? ? ? ? ? ? //速度快点

? 构建Windows PE 命令 : NT\tools\makewinpeimg.cmd

? 构建媒体中心版本命令: NT\tools\sp\mkmedctr.cmd

? 构建平板电脑版本命令: NT\tools\sp\mktabcab.cmd

? 丢失文件检查命令 ? ?: NT\tools\postbuildscripts\missingfilecheck.cmd

? 填充丢失的文件命令 ?: NT\tools\populatefromvbl.pl?

SKU :?

? per 家庭版

? pro 专业版

? bla WEB版

? srv 服务器版

? ent 高级服务器版

? sbs 小企业版

? ads 企业版

? dtc 数据中心版

启动问题修复 :

? 目前Windows XP SP1 原代码缺少的最重要的文件是: winlogon.exe和一些驱动文件


-------------------------------------------------------------
? BIOS->MBR->ntldr

? ntldr ? ? ? ? ? ? ? ? ?yes ?Windows NT 引导器

? ntdetect.com ? ? yes ?Windows NT 硬件检测

? hal.dll ? ? ? ? ? ? ? ? yes ?Windows NT 硬件隔离层

-------------------------------------------------------------
说明 :

? BIOS->MBR->ntldr

? ntldr ? ? ? ? ? ?yes ?Windows NT 引导器

? ntbootdd.sys ? ? no ? Windows NT 磁盘驱动

? pagefile.sys ? ? ?yes ? Windows NT 虚拟内存文件

? ntdetect.com ? ? yes ?Windows NT 硬件检测

? hal.dll ? ? ? ? ?yes ?Windows NT 硬件隔离层

? ntoskrnl.exe ? ? yes ?Windows NT 内核

? smss.exe ? ? ? ? yes ?Windows NT 会话管理器

? win32k.sys ? ? ? yes ?Windows NT 内核模式中的Win32子系统

? csrss.exe ? ? ? ?yes ?Windows NT 用户模式中的Win32子系统

? autochk.exe ? ? ?yes ?Windows NT 磁盘检查

? winlogon.exe ? ? no ? Windows NT 登陆
??
? msgina.dll ? ? ? yes ?Windows NT 登陆认证策略相关模块

? logonui.exe ? ? ?yes ?Windows NT 系统的登录界面

? services.exe ? ? yes ?Windows NT 服务和控制

? svchost.exe ? ? ?yes ?Windows NT 服务宿主进程

? wmiprvse.exe ? ? yes ?Windows NT WMI操作

? winmgmt.exe ? ? ?yes ?Windows NT Windows管理服务,用于系统管理员创建Windows管理脚本。

? lsass.exe ? ? ? ?yes ?Windows NT 安全管理器

? wscntfy.exe ? ? ?no ? Windows NT Windows安全中心通知

? wuacult.exe ? ? ?yes ?Windows NT 自动更新

? spoolsv.exe ? ? ?yes ?Windows NT 管理所有本地和网络打印队列及控制所有打印工作。

? alg.exe ? ? ? ? ?yes ?Windows NT 网络连接共享和网络连接防火墙。

? verclsid.exe ? ? yes ?Windows NT XP 安全更新程序

? userinit.exe ? ? yes ?Windows NT 管理不同的启动顺序

? exprorer.exe ? ? yes ?Windows NT 桌面和文件资源管理器

? boot.ini ? ? ? ? ? ? ?Windows NT 启动选项配置文件

可选 :
?
? bootsect.dos ? ? no ? Windows NT OS Loader 对 DOS 与 Windows NT 进行多重开机

? bootfont.bin ? ? no ? Windows NT 中文版开机时的中文字形

? psxss.exe ? ? ? ?no ? Windows NT Posix 环境子系统

库 :

? pidgen.dll ? ? ? yes ?Windows NT 操作系统重要的模块,用于管理产品序列号。


由于XP SP1 是已补丁的方式编译,默认的输出目录被指定到D:\svcpack.x86fre\usa,而编译出来的二进制文件保存在D:\D:\binaries.x86fre,会造成制作ISO的时候找不到文件。经研究有几个重要的环境变量需要设置正确:

? 文件名 : razzle.cmd

? ? set SvcPackDir=%_NTDRIVE%\svcpack
? ? 修改为:
? ? set SvcPackDir=%_NTDRIVE%\binaries

? set _NTPOSTBLD=%SvcPackDir%%_ArgSepChar%%_BuildArch%%_ArgEmulDir%%_BuildType%
? ??
? _NTPostBld ?编译出来的目录 ?默认 D:\svcpack.x86fre

? SvcPackDir ?服务包的目录 ? ?默认:D:\svcpack

? _BuildArch ?处理器的类型 ? ?默认:x86

? _BuildType ?编译类型 ? ? ? ?默认:fre

? 文件名 : ntenv.cmd

? ? if "%_NTDRIVE%" == "" set _NTDRIVE=D: 设置默认驱动D盘,在其它盘修改这里即可。


? 文件名 : pbuildenv.pm
??
? ? # ?$ENV{_NTPOSTBLD} .= "\\$ENV{LANG}"; 注释掉这行不需要添加usa目录。

? postbuild.cmd 调用 pbuild.cmd

? pbuild.cmd ? ?根据 pbuild.dat中的顺序调用子程序。
??
? pbuildenv.pm ?设置编译环境


??


??

??

??
??

??
??

??

??
??
??


?

文章来源:https://blog.csdn.net/MYMOTOE6/article/details/135375315
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。