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 设置编译环境

相关推荐
子非衣1 小时前
Windows云主机远程连接提示“出现了内部错误”
服务器·windows
剁椒排骨3 小时前
win11什么都不动之后一段时间黑屏桌面无法显示,但鼠标仍可移动,得要熄屏之后才能进入的四种解决方法
运维·windows·经验分享·计算机外设·win11·win10
李菠菜3 小时前
Windows Terminal 集成 Git Bash 的简洁配置指南
windows·git
大数据魔法师4 小时前
Hadoop生态圈框架部署 - Windows上部署Hadoop
大数据·hadoop·windows
江沉晚呤时5 小时前
深入了解C# List集合及两种常见排序算法:插入排序与堆排序
windows·sql·算法·oracle·c#·排序算法·mybatis
聂 可 以11 小时前
推荐几个可以免费下载视频的软件(Neat Download Manager、蜗牛下载助手、bilidown)
windows·开源软件
菜鸟射手19 小时前
QT creater和vs2017文件路径问题
linux·c++·windows·qt
爱编程的鱼19 小时前
Windows 各版本查找计算机 IP 地址指南
人工智能·windows·网络协议·tcp/ip·tensorflow
sukalot19 小时前
Windows 图形显示驱动开发-WDDM 1.2功能—Windows 8 中的 DirectX 功能改进(九)
windows
simple_whu19 小时前
解决编译pcl时报错‘chrono_literals‘: is not a member of ‘std‘
c++·windows·visual studio