发新话题
打印

[4]让你的Ghost XP更加自动化---最后的保护:OOBC

[4]让你的Ghost XP更加自动化---最后的保护:OOBC

[这个贴子最后由benjaminwan在 2004/05/31 12:30pm 第 3 次编辑]

[1]让你的Ghost XP盘更加自动化--自动选择计算机类型原理简述
[2]让你的Ghost XP更加自动化---计算机类型自动检测的实现
[3]让你的Ghost XP更加自动化---dllcache的重建
OOBC就是O&O BlueCon
它的功能比Microsoft的系统修复控制台强大,特别是它还支持注册表的操作。
而实际上OOBC和系统修复控制台十分相似。
XP的系统修复控制台比OOBC多了如下几个文件
KBDAL.DLL<<--这些是键盘布局文件
KBDBE.DLL
KBDBLR.DLL
KBDBR.DLL
KBDBU.DLL
KBDCA.DLL
KBDCR.DLL
KBDCZ.DLL
KBDCZ1.DLL
KBDDA.DLL
KBDDV.DLL
KBDES.DLL
KBDEST.DLL
KBDFC.DLL
KBDFI.DLL
KBDFR.DLL
KBDGKL.DLL
KBDGR.DLL
KBDGR1.DLL
KBDHE.DLL
KBDHE220.DLL
KBDHE319.DLL
KBDHELA2.DLL
KBDHELA3.DLL
KBDHU.DLL
KBDHU1.DLL
KBDIC.DLL
KBDIR.DLL
KBDIT.DLL
KBDIT142.DLL
KBDLA.DLL
KBDLT.DLL
KBDLV.DLL
KBDLV1.DLL
KBDNE.DLL
KBDNO.DLL
KBDPL.DLL
KBDPL1.DLL
KBDPO.DLL
KBDRO.DLL
KBDRU.DLL
KBDRU1.DLL
KBDSF.DLL
KBDSG.DLL
KBDSL.DLL
KBDSL1.DLL
KBDSP.DLL
KBDSW.DLL
KBDTUF.DLL
KBDTUQ.DLL
KBDUK.DLL
KBDUR.DLL
KBDUSL.DLL
KBDUSR.DLL
KBDUSX.DLL
KBDYCC.DLL
KBDYCL.DLL
migrate.inf
除此之外,OOBC和XP的系统修复控制台还有如下几个文件的差别:
smss.exe
OOBC.LIC
OOBCFT.SYS
OOBCTM.DLL
OOBCTM.SYS
winnt.sif
AUTOCONV.EX_
HPT3XX.SY_
所以安装了系统修复控制台后可以修改如上文件,把系统修复控制台改造成OOBC
-----------------------------------------------------------------------
在你系统文件丢失,或测试时不小心把计算机类型安装错导致不能启动时,OOBC就可以派上用场了。
而且OOBC的大小只有7M多,完全可以集成到万能Ghost XP中(可以成为Ghost XP的第二启动项一起放在.gho文件中,也可以放在光盘上)
当然,PE也可以,就是占用空间大了点。
------------------------------------------------------------------------
许多启动盘集成了OOBC,但似乎用的人不多。
========================================================
|接下来稍微介绍一下OOBC下手工检测和更改计算机类型的方法|
========================================================
OOBC下不能expand,所以以下步骤必须在Windows下执行
可以将如下命令存为.cmd文件并执行,用于把当前系统所有的硬件抽象层文件提取到c:\hal
if not exist c:\hal mkdir c:\hal
echo driver.cab>>c:\driver.txt
echo sp1.cab>>c:\driver.txt
echo sp2.cab>>c:\driver.txt
echo sp3.cab>>c:\driver.txt
echo sp4.cab>>c:\driver.txt
FOR /F "usebackq" %%i IN (c:\driver.txt) DO if exist "%systemroot%\Driver Cache\i386\%%i" expand "%systemroot%\Driver Cache\i386\%%i" -f:hal.dll c:\hal
FOR /F "usebackq" %%i IN (c:\driver.txt) DO if exist "%systemroot%\Driver Cache\i386\%%i" expand "%systemroot%\Driver Cache\i386\%%i" -f:halaacpi.dll c:\hal
FOR /F "usebackq" %%i IN (c:\driver.txt) DO if exist "%systemroot%\Driver Cache\i386\%%i" expand "%systemroot%\Driver Cache\i386\%%i" -f:halacpi.dll c:\hal
FOR /F "usebackq" %%i IN (c:\driver.txt) DO if exist "%systemroot%\Driver Cache\i386\%%i" expand "%systemroot%\Driver Cache\i386\%%i" -f:halapic.dll c:\hal
FOR /F "usebackq" %%i IN (c:\driver.txt) DO if exist "%systemroot%\Driver Cache\i386\%%i" expand "%systemroot%\Driver Cache\i386\%%i" -f:halmacpi.dll c:\hal
FOR /F "usebackq" %%i IN (c:\driver.txt) DO if exist "%systemroot%\Driver Cache\i386\%%i" expand "%systemroot%\Driver Cache\i386\%%i" -f:halmps.dll c:\hal
FOR /F "usebackq" %%i IN (c:\driver.txt) DO if exist "%systemroot%\Driver Cache\i386\%%i" expand "%systemroot%\Driver Cache\i386\%%i" -f:halsp.dll c:\hal
FOR /F "usebackq" %%i IN (c:\driver.txt) DO if exist "%systemroot%\Driver Cache\i386\%%i" expand "%systemroot%\Driver Cache\i386\%%i" -f:ntoskrnl.exe c:\hal
FOR /F "usebackq" %%i IN (c:\driver.txt) DO if exist "%systemroot%\Driver Cache\i386\%%i" expand "%systemroot%\Driver Cache\i386\%%i" -f:ntkrnlpa.exe c:\hal
FOR /F "usebackq" %%i IN (c:\driver.txt) DO if exist "%systemroot%\Driver Cache\i386\%%i" expand "%systemroot%\Driver Cache\i386\%%i" -f:ntkrnlmp.exe c:\hal
FOR /F "usebackq" %%i IN (c:\driver.txt) DO if exist "%systemroot%\Driver Cache\i386\%%i" expand "%systemroot%\Driver Cache\i386\%%i" -f:ntkrpamp.exe c:\hal
del c:\driver.txt
-------------------------------------------------------------------------------------------------
以下是HAL硬件ID、硬件抽象层dll文件、计算机类型的对应关系(以及还需要的两个文件)
E_ISA_UP = hal.dll = "Standard PC"(ntoskrnl.exe+ntkrnlpa.exe)
ACPIPIC_UP = halacpi.dll = "Advanced Configuration and Power Interface (ACPI) PC"(ntoskrnl.exe+ntkrnlpa.exe)
ACPIAPIC_UP = halaacpi.dll = "ACPI Uniprocessor PC"(ntoskrnl.exe+ntkrnlpa.exe)
ACPIAPIC_MP = halmacpi.dll = "ACPI Multiprocessor PC"(ntkrnlmp.exe+ntkrpamp.exe)
MPS_UP = halapic.dll = "MPS Uniprocessor PC"(ntoskrnl.exe+ntkrnlpa.exe)
MPS_MP = halmps.dll = "MPS Multiprocessor PC"(ntkrnlmp.exe+ntkrpamp.exe)
SYSPRO_MP = halsp.dll = "Compaq SystemPro Multiprocessor or 100% Compatible"(ntkrnlmp.exe+ntkrpamp.exe)
UP代表单处理器,MP代表多处理器,其中用于多处理器的ntkrnlmp.exe和ntkrpamp.exe,实际安装时会改名成ntoskrnl.exe和ntkrnlpa.exe
-------------------------------------------------------------------------------------------
假设你不知道当前的计算机类型。
登陆OOBC后
执行regedit
选择要登陆的系统
执行:cd machine\system\controlset001\enum\root\acpi_hal\0000
如果此键值不存在,则执行cd machine\system\controlset001\enum\root\pci_hal\0000
执行:rtype hardwareid
(这句的意思是显示当前注册表分支下的hardwareid这个键名的值)
即可得出当前系统正确的HAL硬件ID(因为OOBC每次启动时都会判别计算机类型并存在自己注册表里)
退出注册表操作,执行rexit
之后,就可以通过上面所列出的对应关系,将对应的硬件抽象层dll文件改名复制到%systemroot%\system32\hal.dll
比如:copy c:\hal\halacpi.dll c:\winnt\system32\hal.dll
然后再复制另外两个文件,如果检测到的是多处理器HAL硬件ID,把ntkrnlmp.exe和ntkrpamp.exe名成ntoskrnl.exe和ntkrnlpa.exe复制到%systemroot%\system32
执行reboot重启
------------------------------------------------------------------------------
进入系统后,可以手工删除多余的计算机类型,也可以做成批处理用如下的命令删除(需要有devcon)
devcon.exe remove E_ISA_UP
devcon.exe remove ACPIPIC_UP
devcon.exe remove ACPIAPIC_UP
devcon.exe remove ACPIAPIC_MP
devcon.exe remove MPS_UP
devcon.exe remove MPS_MP
devcon.exe remove SYSPRO_MP
这只会删除多余的,而不会删除当前正在使用中的。
-------------------------------------------------------------------------------------------
以下是各HAL的兼容性:
E_ISA_UP除自身之外可用于以下类型计算机:MPS_UP, MPS_MP,ACPIPIC_UP, ACPIAPIC_UP, ACPIAPIC_MP
ACPIPIC_UP除自身之外可用于以下类型计算机:ACPIAPIC_UP, ACPIAPIC_MP
ACPIAPIC_UP只能用于自身
ACPIAPIC_MP除自身之外可用于以下类型计算机:ACPIAPIC_UP
MPS_UP除自身之外可用于以下类型计算机:ACPIAPIC_UP
MPS_MP除自身之外可用于以下类型计算机:MPS_UP, ACPIAPIC_MP, ACPIAPIC_UP
SYSPRO_MP只能用于自身
--------------------------------------------------------------------------------------
以上内容均来自hal.inf
--------------------------------------------------------------------------------------
那么可以用ACPI Uniprocessor PC或ACPI Multiprocessor PC的计算机却用Advanced Configuration and Power Interface (ACPI) PC或Standard PC,会有什么后果呢?
不会有什么后果,只会有一些影响。
以下引用Microsoft Windows企业部署工具指南中"减少有多个处理器的计算机的主映象数量"这一节中的原文:
APIC 系统的可用中断多于使用处理器中断控制器 (PIC) 的单处理器系统。结果是,带有 APIC HAL 的计算机:

响应时间更快。
能支持更多的硬件设备。
但是我认为CPU主频上G的电脑,使用者可能不会发现速度上有什么差别。
-----------------------------------------------------------------------------------
那么单处理器系统使用多处理器系统的HAL会有什么后果呢?(即把MP用在UP上)
既然这是在兼容性上被允许的,所以我认为也不会有什么严重的后果。
以下引用Microsoft Windows企业部署工具指南中"减少有多个处理器的计算机的主映象数量"这一节中的原文:

不要在目标 UP 计算机上使用包含 UpdateHAL 的 Sysprep.inf 文件,因为 UpdateHAL 将在目标计算机上加载 MP HAL,而不论目标计算机是 UP 计算机还是 MP 计算机。UP 计算机上的 MP 内核将显著降低计算机的性能。

"显著降低计算机的性能"这句话真的有点骇人听闻,
由于我的计算机类型是Advanced Configuration and Power Interface (ACPI) PC
所以我无法验证这句话是否真实,并且"显著降低计算机的性能"是否真的显著到可以让使用者感觉得到?
------------------------------------------------------------------------------------------------
                                                Benjaminwan
                                                2004.5.30

TOP

[4]让你的Ghost XP更加自动化---最后的保护:OOBC

好文章,却没人顶!
作一个可以改变人生的人.

TOP

[4]让你的Ghost XP更加自动化---最后的保护:OOBC

老大真是厉害!~精品不断啊!~
心静如水!~

TOP

[4]让你的Ghost XP更加自动化---最后的保护:OOBC

想问一下楼主,若想让您的ghost中支持raid或者是scsi硬盘,是否需要在minipe和xp系统中都集成那些驱动?如果是,该怎么集成,望您解答……

TOP

[4]让你的Ghost XP更加自动化---最后的保护:OOBC

引用:
下面引用由金雕2004/05/31 11:25pm 发表的内容:
想问一下楼主,若想让您的ghost中支持raid或者是scsi硬盘,是否需要在minipe和xp系统中都集成那些驱动?如果是,该怎么集成,望您解答……
对啊,差点忘了,就算你的GHOST支持串行,也要你的PE支持才行!!
还要加努力啊!
作一个可以改变人生的人.

TOP

[4]让你的Ghost XP更加自动化---最后的保护:OOBC

关于驱动
PE在驱动的加载方式上和XP不一样
对于低级别驱动:PE包含了XP安装光盘里的所有低级别驱动
XP:只把需要的驱动装上,所以XP的drivers文件夹大小比PE的还小,因为XP只在同一台机上运行。
PE:所有驱动都有,每次启动都检测,根据检测的结果加载,因为PE要在不同的机上运行。
关于驱动的级别,请参考《Microsoft Windows 企业部署工具用户指南》中Windows 如何选择特定设备驱动程序
实际上一个安装完成的XP的drivers下的低级别驱动只是PE的drivers的子集。
所以,在没有外加驱动的情况下:
凡是XP可以启动,PE一定可以启动。
反过来
凡是PE不能启动,XP肯定不能启动。
--------------------------------------------------------------------------
关于RAID:
分为IDE RAID、SCSI RAID、SATA RAID,但其原理都是一样的。
但实际上硬件RAID系统工作时,是由RAID卡负责数据的写入和读取。
以下引用http://www.gb.tomshardware.com/storage/00q1/000329/fastrak66-06.html中的原文:
如果你是少数还喜欢使用DOS(Disk Operating System,磁盘操作系统)的人之一,那FastTrak66会很合你的意。在DOS底下你不需要任何的驱动程序来驱动FastTrak的性能或安全性。不过在DOS底下你只能存取阵列的前8 GB(千兆字节)空间。
只要存在IDE、SCSI、SATA控制器驱动,RAID系统就可以正常工作。
------------------------------------------------------------------------
关于SCSI:
要让一个磁盘存储设备可以正常工作,至少需要两种驱动
比如IDE磁盘存储设备,需要IDE控制器驱动和IDE设备驱动。
虽然XP(PE)不是服务器专用操作系统,虽然在XP(PE)下使用SCSI硬盘的人不多,但XP(PE)对SCSI的支持还是很令人满意的。
不要把XP(PE)说成好象不支持SCSI一样。
但更重要的是PE不象XP,PE对驱动的要求很低,PE所使用的都是低级别驱动
先拿IDE控制器驱动来讲吧,下面是PE所支持的IDE控制器驱动:
pciide   = "PCI IDE Bus Driver"
intelide = "Intel IDE BUS Driver"<--凡是intel芯片组,不管是几年前的440系列还是现在的845系列,都用这个。
viaide   = "VIA IDE Bus Driver"
cmdide   = "CMD IDE Bus Driver"
toside   = "Toshiba IDE Bus Driver"
aliide   = "ALI IDE Bus Driver"
下面看看SCSI控制器驱动,反而比IDE控制器驱动多得多。
[SCSI]
sparrow  = "Adaptec AHA-151X/AHA-152X/AIC-6X60 SCSI Adapter"
aha154x  = "Adaptec AHA-154X/AHA-164X SCSI Host Adapter"
aic78xx  = "Adaptec AHA-294X/AHA-394X/AIC-78XX SCSI Controller"
aic78u2  = "Adaptec AHA-294XU2/AIC-7890 SCSI Controller"
adpu160m = "Adaptec AIC-789X/AHA-3960 Ultra160 PCI SCSI Card"
afcnt = "Agilent HHBA-510x PCI Fibre Channel Controller"
dpti2o = "Adaptec 2000S/3000S Ultra160 SCSI RAID Controller"
afc9xxx = "Adaptec AFC-9210G PCI 64-bit/66MHz Fibre Channel 2Gbit Controller"
asc3550  = "Advansys 3550 Ultra Wide SCSI Host Adapter"
asc3350p = "Advansys ABP460 PCMCIA SCSI Host Adapter"
abp480n5 = "Advansys ABP480 CardBus SCSI Host Adapter"
asc      = "Advansys SCSI Host Adapter"
amsint   = "AMD PCI SCSI Controller/Ethernet Adapter"
mraid35x = "AMI MegaRaid RAID Controller"
cpqarray = "Compaq Drive Array"
cpqfcalm = "Compaq Fibre Channel Host Controller"
cpqarry2 = "Compaq Smart Array Controller"
cpqcissm = "Compaq Smart Array 5300 Controller"
lp6nds35 = "Emulex LP6000 Fibre Channel Host Adapters"
cd20xrnt = "IBM Portable PCMCIA CD-ROM Drive"
ipsraidn = "IBM ServeRAID Adapter"
nfrd960     = "IBM ServeRAID Adapter"
i2omp    = "Intelligent I/O Controller"
atapi    = "IDE CD-ROM (ATAPI 1.2)/PCI IDE Controller"
cbidf2k = "CardBus/PCMCIA IDE Miniport Driver"
ini910u  = "Initio Ultra SCSI Host Adapter"
dac2w2k = "Mylex EXR2000,3000/AR160,170,352 Raid Controllers"
dac960nt = "Mylex DAC960/Digital SWXCR-Ex Raid Controller"
ultra  = "Promise Technology Inc. Ultra IDE Controller"
ql1240   = "QLogic ISP 1240 SCSI Host Adapter"
ql10wnt  = "QLogic PCI SCSI Host Adapter"
ql1080   = "Qlogic QLA1080, 64 bit PCI LVD SCSI HBA"
ql1280   = "Qlogic QLA1280, 64 bit PCI LVD SCSI HBA"
ql12160  = "QLogic QLA12160, 64 bit PCI DUAL 160M SCSI HBA"
ql2100   =  "QLogic QLA2000/QLA2100 PCI Fibre Channel Adapter"
ql2200   =  "QLogic QLA2200 PCI Fibre Channel Adapter"
sym_hi   = "LSI Logic C896 PCI SCSI Host Adapter"
sym_u3   = "LSI Logic C1010 PCI SCSI Host Adapter"
symc810  = "LSI Logic C8100 PCI SCSI Host Adapter"
symc8xx  = "LSI Logic C8xx PCI SCSI Host Adapter"
symmpi   = "LSI Logic PCI Fibre Channel Host Adapter"
hpn      = "Hewlett Packard NetRAID-4M RAID Controller"
perc2    = "Dell PERC 2/3 RAID Controller"
perc2gat = "Dell PERC 2/3 RAID Controller (Gatling)"
------------------------------------------------------------------------
最后OOBC、故障恢复控制台、XP的虚拟启动软盘组这三者在驱动的支持和驱动的检测、载入方面和PE完全一样。
XP的虚拟启动软盘组会发生不能启动的情况吗?不会。那么PE也就不会。

TOP

发新话题