社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 2107阅读
  • 8回复

定制自己的全logo GHOSTXP系统关键技术攻略!!!

楼层直达
级别: 管理员
发帖
3549
飞翔币
5005
威望
64392
飞扬币
51613
信誉值
815
写在开始之前:
曾在深度发表了一篇“打造自己的全logo光盘+虚拟机测试截图” http://bbs.deepin.org/read.php?tid=87399的文章,好多群里的朋友问我怎样做的,要求写个教程。做Ghost系统已经有段时间了,写教程还不敢当,只想把自己在制作中的心得体会写出来,供大家互相学习借鉴,以下会引用一些前辈写的资料教程,方法也不是本人原创的,只是写一下自己的成功经验,让有相同需求的朋友少走弯路。如有不足之处,请广大网友指正。
就当起个抛砖引玉的作用。

定制自己的全longo ghostxp系统,所谓全logo是指在系统安装过程中能够看到的logo除了微软的就是自己的,这样我们才能定制属于自己风格的系统。在这里要提的一点是,如果使用S&R&S封装系统会在系统第一次重启动时显示龙帝国的注册页面(最短3秒),当然可以让S&R&S不显示logo,这是我用下面的方法在实践中,偶然发现的,这里不做说明原因有三(1.自己跟龙帝国学了不少东西,不想这么做,如果你免费用人家东西露人家logo于情于理怎么都说的过去2.此方法可以不显示logo但会另启动菜单变为英文,这一点也变相证明了S&R&S的封装原理也是基于如下方法的。3.如果大家能够深入研究下面的方法,你自己就会找到答案)


所以本文讲下如何使用微软自带的封装工具sysprep.exe以及进行SYSPREP后计算机硬件抽象层HAL(电源模式)的完美解决方案(为了简短我自定义为dohal)。

所需工具:

1.sysprep相关文件(这里就不列举怎样提取了)
2.dohal相关文件(下文中有详细描述)
3.xplode(4.0以前的版本叫xpinstall)
4.普通驱动包、sata scsi驱动包(可以从光盘中直接提取)
5.NSIS文件夹压缩器
 
我们一直在努力!
级别: 管理员
发帖
3549
飞翔币
5005
威望
64392
飞扬币
51613
信誉值
815
只看该作者 1 发表于: 2007-01-28
现在开始:

安装xp系统、升级补丁、安装软件、减肥、优化等这些我就不再这里废话了,好多前辈的教程都有提到,如果你是实在做的不满意推荐你用nLite精简的xp系统,比如“深度”的,这样还可以省去DllcacheManager备份环节,(nLite精简的xp系统要备份的文件基本为个位数)所以这个软件我没有列入必备工具。(我也是比较懒的^_^)

我们讲重点:封装系统

之前引用一下“计算机硬件抽象层HAL(电源模式)的完美解决方案”
原文如下:

微软官方背景资料:
如何通过Sysprep准备磁盘复制所需的映像
Windows 如何确定 ACPI 兼容性
安装 Windows XP 或 Windows Server 2003 之后的 HAL 选项
众所周知,微软自带系统封装工具SYSPREP,可以方便快捷地进行企业产品部署,
但是在WINDOWS LONGHORN之前,运用SYSPREP有一个限制,
就是仅适用于用于封装的源计算机和目标计算机必须具有相同硬件抽象层 (HAL)
因此,不同的网友均提出了不用的HAL检测解决方案,如ACPI封包、死性不改的电源模式等等,
这些解决方案不同程度存在几个缺点:
1、检测的兼容性无法达到100%;
2、检测需要额外的文件,并且可能需要重新启动计算机,耗费了时间
有没有一个最完美的解决方案呢?答案其实就在微软未公开的技术。
笔者通过对于WINDOWS LONGHORN各内测版本进行分析,现在公开微软部分未公开的技术:

1、微软自WINDOWS LONGHORN后,改写了NTLDR的部分代码,提供了/detecthal 接口
2、BOOT.INI支持/detecthal参数,以实现与NTLDR的结合,
并实现开机启动即自动检测 HAL
3、\INF\dtecthal.inf是一个关键性文件,提供各种HAL类型检测的参数说明
以下为进行SYSPREP封装后的自动完美检测HAL具体实现方案:

1、从系统中提取相应的HAL文件包:

(WIN2000在SP4.CAB/WINDOWS XP SP2在SP2.CAB/WINDOWS 2003在SP1.CAB)

halacpi.dll
halapic.dll
halmps.dll
halaacpi.dll
halmacpi.dll
hal.dll---->并更名为halstnd.dll
ntkrnlmp.exe
ntkrnlpa.exe
ntkrpamp.exe
ntoskrnl.exe---->并更名为ntkrnlup.exe

2、将上述相应的HAL文件包拷贝到系统\WINDOWS\SYSTEM32\(WINDOWS 2000为\WIN
NT\SYSTEM32\)

3、将以下代码保存为dtecthal.inf并拷贝到\WINDOWS\INF\(WINDOWS 2000为\WINNT\INF\)
如果不可见,可在文件夹选项里在“显示所有的文件和文件夹”打上勾和“隐藏受保护的系统文件”去掉勾。


[Version]
signature="$Windows NT$"
DriverVer=07/01/2001,5.1.2600.2180

[hal]
acpipic_up = halacpi.dll
e_isa_up = halstnd.dll
mps_up = halapic.dll
mps_mp = halmps.dll
acpiapic_up = halaacpi.dll
acpiapic_mp = halmacpi.dll

;
;
;-------------------------------------------------------------------------
; Auto detecd Computer HAL with BIOS information
;-------------------------------------------------------------------------
; Copyright(R)1980-2005 Microsoft Crack Center MCC(1980-2005)
;
; tesk work by mstest@MCC 20050515
;
; mstested@hotmail.com
;-------------------------------------------------------------------------
;
;
; [ACPIOptions]
; This section lists options that affect the installation of ACPI on x86
;
; ACPIEnable
; 0 - ACPI will be disabled at install time regardless of the BIOS
; 1 - ACPI will be enabled at install time if an ACPI BIOS is present
; 2 - ACPI will be enabled based on the GoodACPIBios list, the NWACL
; and ACPIBiosDate
;
; ACPIBiosDate = mm,dd,yyyy
; Supplies the date that a BIOS must have to be considered good if it is
; not in the GoodACPIBios list. If a BIOS has a date greater than this and
; is not in the NWACL list, then it will be used unless ACPIEnable = 0
;
[ACPIOptions]
ACPIEnable = 2
ACPIBiosDate = 01,01,1999

4、修改BOOT.INI
在准备封装的系统后面加上 /DETECTHAL参数
如:

[boot loader]
timeout=0
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /detecthal

5、将LONGHORN版本的NTLDR拷贝到从C:\,覆盖原有的NTLDR

各位也可以参考上传附件中的文件包(包含NTLDR、DTECTHAL.INF、BOOT.INI示例)

补充:
只要在在SYSPREP完成后,删除的注册表里面的旧HAL信息就可以自动识别了。
没有成功的朋友可以试试.
HAL的信息的注册表的位置:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI_HAL
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\ACPI_HAL
先修改权限,然后删除就可以了
只要在SYSPREP后删除键值重启就可以自动识别了

下面为进行SYSPREP的操作步骤:
1:用mcc的方法覆盖文件
2:修改Boot.ini
3:更改电源管理为Standard PC
4:更改IDE控制器为标准双通道 PCI IDE 控制器
5:Sysprep封装,选退出
6:删除XXX.HAL:
7:重新启动做GHO
注意:本机恢复会无法识别的,只是Standard PC,
但我觉得没什么影响,可以正常开关机的

2000本人没有测试,具体详情大家可以一起探讨

引用完毕。
级别: 管理员
发帖
3549
飞翔币
5005
威望
64392
飞扬币
51613
信誉值
815
只看该作者 2 发表于: 2007-01-28
此方法说到底是微软的原创,于05年被一些精英前辈们写成教程,到现在用的人不多,也不知道为什么^_^
这片文章非常详细讲明了如何来做dohal,这里有几个操作的环节提醒大家:
一、LONGHORN版本的NTLDR是英文的,如果直接使用对电源判断没有影响,但之后的启动菜单会是英文。
解决办法:
1. 用mcc的方法覆盖文件,即批处理调用的方法将系统原来的NTLDR和boot.ini覆盖
将系统原来的NTLDR和boot.ini重命名为NTLDRxp和bootxp.ini
建立批处理run.bat 命令如下:
@echo off
cd\

attrib ntldr -h -s -r
del ntldr
attrib ntldrXP -h -s -r
ren ntldrXP ntldr
attrib ntldr +h +s +r

attrib boot.ini -h -s -r
del boot.ini
attrib bootXP.ini -h -s -r
ren bootXP.ini boot.ini
attrib boot.ini +h +s +r

del %SystemRoot%\run.bat
exit
将run.bat放于c:\windows,并在sysprep.inf中[GuiRunOnce]字段下添加Command0=run.bat使之可以被调用
2.将系统原来的NTLDR和boot.ini做成自解压程序*.exe在xplode中调用即可,自动进行两个文件的覆盖。
二、注册表修改
上文中提到删除ACPI_HAL项,大家不要限制于上文列举的注册表项,最好手动搜索一下,我的经验是ACPI_HAL共有四项。因你使用的系统版本不同或是否集成sata scsi 等原因(这个不确定的),ACPI_HAL在注册表中的实际位置不同,一定要删除干净才能做的100%电源判断。
三、其他环节
(1)集成驱动并压缩在xplode中调用
1.建立Drivers文件夹,放入你的驱动,用NSIS文件夹压缩器压缩Drivers文件夹,压缩模式Zlib, 选择“安静解压”最后编译生成Drivers.exe,至于解压缩目录与导入注册表项相对应即可。2.sata scsi驱动,如果没有现成的可以使用木鸟ASR1.3驱动包,这里注意:我们只安装纯驱动部分,第一项和最后一项不要选,安装前卸载“处理器”“scsi和raid控制器”“ide ata/atapi控制器”,之后再安装。最后导入注册表在普通目录后加上 c:\windows\system32\bird(卸载“ide ata/atapi控制器”之前先将驱动更新为标准双通道)
注册表导入:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
下建个字符串名称叫DevicePath数据填入你的驱动路径

(2)压缩program files 文件夹并在xplode中调用
压缩可以获得更大的空间,同样用NSIS文件夹压缩器来压缩,得到program files.exe,这里要提到的是,在系统封装完成后,重新启动到pe环境下,进行program files 文件夹和Drivers文件夹的删除再做ghost,避免有些文件在系统中删除不掉。
四、关于xplode调用
如下实现:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce]
"xplode"="c:\\sysprep\\xplode\\xplode.exe"
之所以使用xplode是因为可以支持文字的同时支持自定义图片,比用批处理调用驱动或其他方式要好看的多,并且支持多种文件的调用,简单易用。为了大家对XPlode有个充分认识特此引用文章“XPlode使用详解”,原文如下:
级别: 管理员
发帖
3549
飞翔币
5005
威望
64392
飞扬币
51613
信誉值
815
只看该作者 3 发表于: 2007-01-28
XPlode使用详解
XPlode是安装系统补丁的方式(以前名叫XPinstall),它是在系统安装剩余12分钟时执行的,通过读取XPlode.XML来调用的.
官方下载:http://www.voidfx.com/FX/XPlode/Download
目前最新版本是XPlode Unrestricted 4.3.51210.1523

.简介
系统安装的剩余12分钟时执行的(如安全补丁),或者系统安装完成重新启动安装在进入桌面前,完成通过读取XPlode.XML来调用的.
2.选择安装界面
XPlodeOriginalInstall.x4d就是调用IMAGES目录下的图片文件来做背景图.
XPlodeSilentInstall.x4d就是无截面安装.
XPlodeGFXInstall.x4d就是背景透明安装.
XPlodeSelectInstall.x4d就是可选择安装 .
例如:

(自由选择)
2-1图片做背景图安装(XPlodeOriginalInstall.x4d):
即用XPlodeOriginalInstall.x4d控件来做的话就把以下的代码替换一下就可以了!要是需要修改颜色的话就修改项里的fore的属性就可以了!

引用:



Windows 安装补丁
completed
Adding user: #1#
Deleting user: #1#
Adding group: #1#
Deleting group: #1#
Executing: #1#
Disabling Windows File Protection
Enabling Windows File Protection
Reading from registry
Writing to registry














2-2无截面安装(XPlodeSilentInstall.x4d):
用XPlodeSilentInstall.x4d控件来做的话就把以下的代码替换一下就可以了!

引用:


Adding user: #1#
Deleting user: #1#
Adding group: #1#
Deleting group: #1#
Executing: #1#
Disabling Windows File Protection
Enabling Windows File Protection
Reading from registry
Writing to registry



2-3背景透明安装(XPlodeGFXInstall.x4d):
用XPlodeGFXInstall.x4d控件来做的话就把以下的代码替换以下就可以了!要是需要修改颜色的话就修改项里的fore的属性就可以了!

引用:


XPlode Installation
completed
Adding user: #1#
Deleting user: #1#
Adding group: #1#
Deleting group: #1#
Executing: #1#
Disabling Windows File Protection
Enabling Windows File Protection
Starting #1#
Stopping #1#
Reading from registry
Writing to registry














2-4可选择安装(XPlodeSelectInstall.x4d)
用XPlodeSelectInstall.x4d控件来做的话就把以下的代码替换以下,并在xplode.exe的所在目录下建立一个selection文件夹,在selection目录中建立一个select-frameset.html
(这个控件一般用与在XP状态下制作软件安装管理的,不推荐在系统集成安装中使用)
需要用哪个控件就保留该控件,并把其他控件删除在集成在光盘上就可以了!
注意的是:安装过程中使用中文的话就把XPlode.xml的保存为unicode编码即可,而默认的保存方式为ansi方式的.

3.安装界面和字体颜色
安装界面分无截面安装或背景透明安装和背景安装,主要的调节在这段内!
说明一:
与中的字体颜色)image='#XPLODE#\images\head.png(顶部图片)' />
说明二:

或者
(底部无图)
说明三:

说明四:

代码因选择的界面安装方式的不同而变化.
4.安装界面大小及在屏幕上位置
说明:
config为安装时窗体的显示设置
window width='420' height='180'(可略省) position='6' 这一行它的意思如下:
1:window width='420' height='180' 代表了显示界面的大小:宽420,高180
2:position='6'代表了显示界面是放在那个地方.如图所示:
0 1 2
3 4 5
6 7 8 (9或9以上的数字,那它都是在界面的左上角)
5.items为安装命令的设置部分
在items里面的item为在安装时在窗体中的主分支部分,其中语句中包含的安装语句可以为一个或多个!
在安装的语句中的''是显示的信息,


#XPLODE#\APP\XX.EXE
/S


6. 静态安装参数(每个软件或每中类型的软件都有所不同)
指的是段内的参数
例子:

#XPLODE#\APP\KB885626.EXE
/Q /N /Z

例子:

regedit
/S "#XPLODE#\APP\XP.REG"

例子:

#XPLODE#\APP\MSJAVX86.EXE
/Q:A /R:N

例子:

#XPLODE#\APP\FLASH8.MSI
/Q

例子:


#XPLODE#\Updata\UPHClean.msi
/quiet /norestart /n



下表标识了 Update.exe 程序支持的命令行选项(或开关):
开关 说明
-----------------

引用:
/f 强制其他应用程序在关机时关闭.
/n 在删除修复程序之前不备份文件.
/z 安装完成后不重新启动计算机.
/q 使用"安静"模式,无需用户交互.
/m 使用"无人参与"安装模式 (Windows 2000).
/u 使用"无人参与"安装模式 (Windows XP).
/l 列出已安装的修复程序.

7软件静态安装参数

8:XPlode全部放置在$OEM$\$1\Install目录下使用说明
------------------------------------
1.$OEM$\($1\)Install目录(复制到硬盘安装)
2.$OEM$\Install目录(在光盘上直接安装)
------------------------------------
$OEM$文件夹的用途是,你放在该文件夹中的所有文件都会被自动复制到你安装Windows的目标分区.一旦复制操作结束,你就可以用预先创建的批处理文件配合%systemdrive%变量安装其中的软件或执行其它任务.例如,如果Windows被安装到D盘,环境变量“%systemdrive%”就代表 D:\ .
你可能会问,“为什么不直接从光盘上安装那些软件?”,那是因为光驱盘符在每台电脑上都是不同的,这也就说明了为什么没有“%CDROM%”这样的环境变量.然而你可以创建并运行脚本来检查光盘上某个特定文件的存在,这样就可以把当前的光驱盘符映射为%CDROM%变量.
(更详细可以参考http://www.cctips.com/Unattended/oemfolders.htm)
注意:
如果你想在安装的系统中应用$OEM$要修改WINNT.SIF中
[Unattended]
OemPreinsatll=Yes
这样就安装会发布其他程序而预先把相应的文件复制到要硬盘中.
1.$OEM$\$1\Install目录(复制到硬盘安装)
当光盘中\$OEM$\$1\Install文件夹在安装系统过程中被复制到硬盘后,文件夹结构变成了这样如:C:\Install\
引导执行XPLOAD.EXE方式:
A.Winnt.sif 在WIN安装完成启动进入桌面前运行
[GUIRunOnce]
”%Systemdrive%\Install\XPlode.exe”
%Systemdrive%——Windows所在的分区跟目录
$OEM$\$1 $1 子文件夹映射到%Systemdrive%,一般是C:
B.Winnt.sif 如果想在剩余9分钟运行[GUIRunOnce]
UserExecute=”%Systemdrive%\Install\XPlode.exe”
C.CMDLines.txt 在剩余13分钟时运行
[Commands]
"%SYSTEMDRIVE%\Install\XPlode.exe"
去掉WINNT.SIF中加的相关字段.
2.$OEM$\Install目录(在光盘上直接安装)
没有指定复制到硬盘上
CMDLines.txt中加入以下字段:在剩余13分钟时运行
[Commands]
".\Install\XPlode.exe"
去掉WINNT.SIF中加的相关字段.
此方法容易出问题,特别是在光驱不能确定的时候,比如有两个以上时.
3.微软官方介绍的一种比较接近于XP1和XP4集成补丁的方式
它将会在系统安装剩余13分钟执行!面的静默安装方式!注意:
如果您使用此过程集成更新,则系统会在“添加或删除程序”控制面板中为每个更新添加一个条目.但是,没有“删除”按钮可供使用,原因是如果删除更新,则更新的文件没有以前的版本可供还原.
I386 \ SVCPACK.INF

引用:
Signature="$Windows NT$"
MajorVersion=5
MinorVersion=1
BuildNumber=2600
[SetupData]
CatalogSubDir="\i386\SVCPACK"
[ProductCatalogsToInstall]
[SetupHotfixesToRun]
XPLODE.EXE
[CatalogHeader]
I386 \ DOSNET.inf ,然后添加如下命令: SVCPACK
提示:如果你的母盘中文件是DOSNET.in_ ,解压后修改完成应该压回DOSNET.in_

引用:
如何将文件压缩成 .xx_ 格式?
A. 最简单的, 系统自带的 makecab.exe
B. 使用 CompressionBin, 这个使用非常简单, 可以一次拖放多个文件,
批量生成 .xx_ 文件. 它是通过调用 makecab.exe 实现压缩文件的,
所以请确保系统目录下有 makecab.exe. 另外, 想要运行它就需要先
安装 .Net.
4.nLite 1.0 RC5 的出现使得运行xplode更方便.
在RunOnce框中输入:
%systemdrive%\SVCPACK\XPLODE.EXE
引用完毕。
级别: 管理员
发帖
3549
飞翔币
5005
威望
64392
飞扬币
51613
信誉值
815
只看该作者 4 发表于: 2007-01-28
五、最后总结,总体步骤如下:
1.将Drivers.exe和program files.exe,放入xplode文件夹的soft(自己定义名字,取决于你的脚本文件)中,使之可以被调用,将xplode文件夹及其他想安装完系统自动删掉的东西放入Sysprep文件夹。
2.dohal文件操作
3.驱动导入注册表+ XPLODE导入注册表
4.运行sysprep进行系统封装
5.注册表修改
6.pe下删除program files和Drivers文件夹
7.ghost –z9制作镜像

到这里就写完了,希望对大家有所帮助,快过年了,也算是给大家的新年礼物了。
还是那句话,如果觉得好,请顶一个,支持一下,如果觉得问题多,欢迎来拍砖。
但是,蓝宝提醒一下,用这个方法做的盘目前在电脑城实机测试不下500台,笔记本有十几台,没有出现电源判断不准或驱动不可以被正确调用的问题,所以建议大家动手去试一下,而不是靠主观去判断,如果你动手做了有问题,请来群里找我。
级别: *
发帖
*
飞翔币
*
威望
*
飞扬币
0
信誉值
0
只看该作者 5 发表于: 2007-01-30
收下老大的新年礼物
谢谢了!!
级别: 光盘新手
发帖
48
飞翔币
335
威望
37
飞扬币
2327
信誉值
0
只看该作者 6 发表于: 2007-01-31
:)Y137 老大的强贴呀。~:)Y11
级别: 光盘初级
发帖
1123
飞翔币
335
威望
39
飞扬币
8460
信誉值
0
只看该作者 7 发表于: 2007-02-05
学习了.呵呵.真的没本事学完啦..:)Y16
级别: 光盘高级
发帖
906
飞翔币
335
威望
1459
飞扬币
351
信誉值
0
只看该作者 8 发表于: 2007-02-05
收藏了,慢慢去品尝,呵呵