Windows XP SP1源代码编译方法(笔记)
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 ?设置编译环境
??
??
??
??
??
??
??
??
??
??
??
?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!