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


  


  

  

  
  

  
  

  

  
  
  


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/594944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

myysql的正则表达式

上周遇见一个需求,有这样一棵树: 点击上级,展现所有子集,点击集团,显示所有产线(例子) 这个时候有两种方式: 添加产线时,将集团、事业部、公司、车间的id存起来。 然后…

人脸关键点检测dlib安装

dlib 库是一个用来人脸关键点检测的 python 库,但因为其是 C 编写(或需要 C编译?),使得我们在安装时遇到各种各样问题。笔者在不同电脑上安装遇到的问题都不同,但最后经过搜索,都解决了&#xf…

数据结构【查找篇】

数据结构【查找篇】 文章目录 数据结构【查找篇】前言为什么突然想学算法了?为什么选择码蹄集作为刷题软件? 目录一、顺序查找二、折半查找三、 二叉排序树的查找四、红黑树 结语 前言 为什么突然想学算法了? > 用较为“官方”的语言讲&am…

Git | tag相关命令

语法命令 git tag -h usage: git tag [-a | -s | -u <key-id>] [-f] [-m <msg> | -F <file>]<tagname> [<head>]or: git tag -d <tagname>...or: git tag -l [-n[<num>]] [--contains <commit>] [--no-contains <commit&g…

普中STM32-PZ6806L开发板(HAL库函数实现-读取内部温度)

简介 主芯片STM32F103ZET6&#xff0c;读取内部温度其他知识 内部温度所在ADC通道 温度计算公式 V25跟Avg_Slope值 参考文档 stm32f103ze.pdf 电压计算公式 Vout Vref * (D / 2^n) 其中Vref代表参考电压&#xff0c; n为ADC的位数&#xff0c; D为ADC输入的数字信号。 实现…

人工智能在银行运营中的运用

机器学习在金融领域的运用&#xff1a;银行如何以最优的方式抓住 AI 机会&#xff1f; 大型企业若想获得超越竞争对手的优势&#xff0c;那么采用 AI 作为其业务战略是他们的重要任务&#xff0c;而在这方面&#xff0c;大型银行走在了前面。银行开始将 AI 和机器学习应用于前…

201.【2023年华为OD机试真题(C卷)】最长子字符串的长度(一)(滑动窗口算法-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解…

了解并使用django-rest-framework-jwt

一 JWT认证 在用户注册或登录后&#xff0c;我们想记录用户的登录状态&#xff0c;或者为用户创建身份认证的凭证。我们不再使用Session认证机制&#xff0c;而使用Json Web Token&#xff08;本质就是token&#xff09;认证机制。 Json web token (JWT), 是为了在网络应用环…

什么是跨域以及怎么处理跨域问题

文章目录 什么是跨域&#xff1f;跨域问题常见场景怎么处理跨域1、配置代理2、CORS&#xff08;跨域资源共享&#xff09;3、JSONP&#xff08;仅限 GET 请求&#xff09;4、使用 WebSocket 注意事项&#xff1a; 什么是跨域&#xff1f; 跨域&#xff08;Cross-Origin&#x…

专题一_双指针(一)

文章目录 283.移动零题目解析讲解算法原理扩展编写代码 1089.复习零题目解析讲解算法原理编写代码 202.快乐数题目解析讲解算法原理证明编写代码 11.盛最多水的容器题目解析讲解算法原理暴力解法优秀的解法时间复杂度分析 编写代码 283.移动零 题目链接 题目解析 题目还是比较…

ThinkPHP6.0任意文件上传 PHPSESSION 已亲自复现

ThinkPHP6.0任意文件上传 PHPSESSION 已亲自复现 漏洞名称漏洞描述影响版本 漏洞复现环境搭建安装thinkphp6漏洞信息配置 漏洞利用 修复建议 漏洞名称 漏洞描述 2020年1月10日&#xff0c;ThinkPHP团队发布一个补丁更新&#xff0c;修复了一处由不安全的SessionId导致的任意文…

【GlobalMapper精品教程】069:中文属性表乱码问题及解决方法

参考阅读:【ArcGIS Pro微课1000例】0012:ArcGIS Pro属性表中文乱码完美解决办法汇总 文章目录 一、Globalmapper默认字符集设置二、shp属性表乱码三、转出的kmz乱码一、Globalmapper默认字符集设置 中文字体乱码通常是由字符编码不匹配造成的。 打开Globalmapper软件,点击工…

【动态规划】【字符串】扰乱字符串

作者推荐 视频算法专题 涉及知识点 动态规划 字符串 LeetCode87扰乱字符串 使用下面描述的算法可以扰乱字符串 s 得到字符串 t &#xff1a; 如果字符串的长度为 1 &#xff0c;算法停止 如果字符串的长度 > 1 &#xff0c;执行下述步骤&#xff1a; 在一个随机下标处将…

[设计模式 Go实现] 行为型~备忘录模式

备忘录模式用于保存程序内部状态到外部&#xff0c;又不希望暴露内部状态的情形。 程序内部状态使用窄接口船体给外部进行存储&#xff0c;从而不暴露程序实现细节。 备忘录模式同时可以离线保存内部状态&#xff0c;如保存到数据库&#xff0c;文件等。 memento.go packag…

java struts2教务管理系统Myeclipse开发mysql数据库struts2结构java编程计算机网页项目

一、源码特点 java struts2 教务管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助 struts2 框架开发&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境 为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库…

作用域和作用域链(js的问题)

• 全局作用域&#xff0c;函数作用域 • 作用域链 • 作用域scope: 一个变量的可用范围 • 作用域链scope chain&#xff1a;以当前作用域的scope属性为起点&#xff0c;依次引用每个AO,直到window结束&#xff0c;行成多级引用关系 js作用域ES5 …

常用日志查看方法 log | journalctl | messages

一、【说在前面】 写之前吐槽一下&#xff0c;我在从业中发现&#xff0c;很多人喜欢鼓吹XXX比较吃经验&#xff0c;我早期也比较信奉这一点&#xff0c;感觉各行各业应该都有自己的玄学解决问题的方式。 但是笔者也发现很多做了很多年的员工&#xff0c;遇到了问题就是在常用…

向爬虫而生---Redis 基石篇5 <拓展Zset>

前言: 基础操作篇最后一环节,就是这个了! reids里面的有序集合... 向爬虫而生---Redis 基石篇4 &#xff1c;拓展Set&#xff1e;-CSDN博客 向爬虫而生---Redis 基石篇3 &#xff1c;拓展List&#xff1e;-CSDN博客 向爬虫而生---Redis 基石篇2 &#xff1c;拓展Hash&#x…

【ikbp】数据可视化DataV

天天查询一些数据&#xff0c;希望来一个托拉拽的展示&#xff0c;部署体验一下可视化大屏 快速搭建快速查询实时更新简单易用 启动服务 数据可视化 静态查询 配置数据 过滤数据 分享

系列七、Ribbon

一、Ribbon 1.1、概述 Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具&#xff0c;是Netflix发布的一款开源项目&#xff0c;其主要功能是提供客户端的软件负载均衡算法和服务调用&#xff0c;Ribbon客户端组件提供一系列完善的配置项&#xff0c;例如&#xff1a…