发新话题
打印

制作启动光盘可能涉及到的知识和技巧(包括DOS、镜像制作、txtsetup.sif等)

制作启动光盘可能涉及到的知识和技巧(包括DOS、镜像制作、txtsetup.sif等)

转自番茄花园
) [" F9 O  \: `/ ~# s: D0 t作者:Realzxx
4 O9 m" ?$ p! ]5 n' N* L  Y. Y1 a7 z# O. s
制作启动光盘可能涉及到的一些知识和技巧* D% R" J' H& x2 L( o. _
" H3 ~$ L! |5 Z! Z: b9 i
----------------------------------------------------------------------------------------------------------------------------------------------------+ n; D- Q( ~' D  M2 O& j  F6 Y- j
总体步骤:
0 G: h  B- c  j7 y
3 E; |: L" x. k+ W. K1、收集、制作各种工具软件镜像(非Windows下)、系统安装文件(或Ghost镜像)以及一些常用的软件
% ?  e# |4 w$ i2、使用EasyBoot等制作启动菜单,调用相应的镜像或引导文件(安装2000、XP、2003等系统),并生成ISO文件4 D" K. ^, ?2 `; J# b& g* S  O
3、使用VMWare虚拟机测试生成的ISO,有问题则返回步骤1& K1 M: ]; b+ M$ f
4、刻盘(需要的话)) o! c  v4 |/ u- v' _3 i
----------------------------------------------------------------------------------------------------------------------------------------------------
0 Y3 d2 o; C, j( w主要难点基本上都集中在步骤1,因为涉及到了不少知识和技巧(常识与基本操作),下面对其中的一些加以说明:
; `# C# L7 x1 m7 |- z) Z----------------------------------------------------------------------------------------------------------------------------------------------------% _) v) h: Y) U( r

, F& \' H9 ?5 `# G8 U一、DOS
9 _4 \7 x' A" K' ?9 M
% k# [( {9 `8 I. I- E, @- {3 `启动过程:开机->IO.SYS->MSDOS.SYS->CONFIG.SYS->COMMAND.COM->AUTOEXEC.BAT, Y! n0 T6 t' D7 a5 Z: D8 s
一般来说需要修改的是MSDOS.SYS、CONFIG.SYS和AUTOEXEC.BAT(若要破解硬盘逻辑炸弹,则可修改IO.SYS),而涉及到启动光盘制作的则主要是CONFIG.SYS和AUTOEXEC.BAT(使用一些DOS工具)
; i0 s& Z$ f4 ^3 L
7 a# `0 k0 n- y! ~- L( O, O1、CONFIG.SYS! q# k& p0 c, b
CONFIG.SYS是系统启动配置文件,它主要用于加载内存管理程序、设置扩充内存及扩展内存、加载有关硬件驱动程序,设置有关环境变量等,为用户计算机的正常使用创造必要的用户环境。
4 Q4 w1 K1 N! p* I$ j. _" l2 m3 M5 K$ O8 }! E( T# c) o
用法:
0 `- @4 K5 ?! h2 o  w
4 d0 T# b! S/ Y% U[menu]
; Q# x' ?. i/ s- c, s1 [% fmenuitem=CDROM,CDROM------Start computer with CD-ROM support. //菜单选项及说明0 e7 {: ]* z3 Z% c/ f% Y1 `* o, Q
menuitem=CDUSB,CDUSB----With CD-ROM and USB device support., ~7 L+ N6 y2 n" j2 F/ f
menuitem=DOSONLY,DOSONLY----DOS Prompt only.+ p1 S* G: ]) k' w8 ]
menudefault=CDROM,30   //默认菜单选项及等待时间1 C" x1 c9 y9 i
menucolor=7,0   //菜单颜色
( d6 m8 U, r" r7 L' A) o, x* ~8 M6 X$ Q  b8 d7 _! J" }
[COMMON]   //所有选项的共同配置 5 g0 C4 A3 W5 D1 r: n
device=himem.sys   //加载扩展内存管理器
8 C! B5 Q6 @9 e- ]( V) fdevice=emm386.exe noems //管理高端内存并在扩展内存中模拟扩充内存供某些软件使用
0 h! P3 F  s  pfiles=30   //表示可同时打开的文件数,一般可选择20-50,系统默认为8
: {) \: X& J& |# y' s' G& f; [buffers=30   //表示磁盘缓冲区的数目,通常设置为20-30左右,缺省值一般为153 L# f0 k3 p- \; C
dos=high,umb //将DOS的系统文件移入高端内存,空出更多的基本内存给其他软件使用。, B2 Q5 N1 }% d+ w1 Z5 D3 o1 r
devicehigh=ramdrive.sys /E 8192 //将内存虚拟磁盘驱动载入高端内存,并设定磁盘大小为8MB
* }) g- j* ?9 ?) u( ]lastdrive=z( n7 {* ^, o# o  B

7 f' k1 A* X' r. |[CDROM]   //各选项独自的配置,[]中的名字必须和[menu]中的选项相同
! d, Y; y8 i8 V0 a+ ?% D4 [devicehigh=oakcdrom.sys /D:mscd001 //将ATAPI光驱驱动程序加载入高端内存6 i1 U0 m, q+ q/ T! V( ?: c3 p
& C4 z( @6 n2 E" [0 Y8 }
[CDUSB]# x8 o0 L& _7 e+ v3 R
devicehigh=oakcdrom.sys /D:mscd001- k' N+ b! N" ?- j) b/ c  K9 H  |
//将USB驱动程序加载入高端内存
, ?, \+ x$ Z3 E9 bDEVICEHIGH=ECHO.SYS L/o/a/d/i/n/g SCSI//USB /d/r/i/v/e/s /s/u/p/p/o/r/t...- P$ o& s! e- }% N6 u3 k1 g1 [
DEVICEHIGH=DUSE.EXE INT EMU CDW=3 DDW=3 XFER=32 DRIVES=2 CDD=USB-CD
/ U; j6 h+ Z8 {# O3 S: T; Q; VDEVICEHIGH=USBASPI.SYS /R /NORST
! I5 m% S' C) W& aDEVICEHIGH=ASPIOHCI.SYS /INT /ALL! J9 l) F: s- {) h$ x
DEVICEHIGH=ASPIUHCI.SYS /INT /ALL
) `2 C. Z/ R7 p/ L4 G! i  t( p, XDEVICEHIGH=DI1000DD.SYS
% q% Y* i8 n6 @* U; ~DEVICEHIGH=USBCD.SYS /D:USB-CD
. ~+ g' t5 Q# h5 }# s1 W0 HDEVICE=ECHO.SYS* h  u1 |0 p' i) O* n+ F$ J7 ~3 u. G

7 C& M# R6 t7 z# Y: q[DOSONLY]
( n& h# k0 s: c6 m4 B; P# R1 p/ Q- e# _6 x4 o
如果无需使用多种配置,则不用[menu]段,直接写配置就ok了2 |+ ^4 \& G; L) n
0 B8 ?; U4 W( B6 @+ t9 ]2 l
2、AUTOEXEC.BAT& Q0 N2 B& x' `+ [2 m# m
电脑每次启动时都会自动寻找AUTOEXEC.BAT批处理文件,从而可执行一些每次开机都要执行的命令,比如设置路径PATH、加载鼠标驱动MOUSE、磁盘加速SMARTDRV等。0 y4 @8 d6 t% i3 _0 E9 J. Y1 b
$ P9 y# t# H7 H; @- z4 T
与上面的CONFIG.SYS相对应的内容:
3 X' g4 @, _5 b
. a7 u8 c# I$ V2 t$ Q* L3 G' N5 X@ECHO OFF //不显示命令行2 U  r8 S" m- b+ D) R5 P8 R
if %config%==DOSONLY goto DOSONLY
, O$ b: g5 \# G" }& jset EXPAND=YES //set后面的EXPAND相当于一个字符串变量,下同; A' `: M" T* v; S/ B, ~. U
set DIRCMD=/O:N
: _5 b. d8 N5 X4 Iset LglDrv=27 * 26 Z 25 Y 24 X 23 W 22 V 21 U 20 T 19 S 18 R 17 Q 16 P 15; A( c- X: y8 _2 T
set LglDrv=%LglDrv% O 14 N 13 M 12 L 11 K 10 J 9 I 8 H 7 G 6 F 5 E 4 D 3 C
$ M; P- e6 B# m$ G5 }" gset temp=c:\
) c! L9 n* Y. Uset tmp=c:\8 y! J4 S: N' b2 C
call setramd.bat %LglDrv% //call调用另一批处理文件,执行完后返回,相当于函数调用,               //setramd.bat为设置内存虚拟磁盘
- V# l& y  E: S1 }goto %config% //跳转,此处的%config%相当于一个标签,其内容为所选的菜单的名字( }5 n3 O8 o) ?' ?5 F3 l, P& W

6 `2 `8 U7 K" d- Z:CDROM& N3 B! k/ Q% t. i) }
LH A:\MSCDEX.EXE /D:mscd001 /L:%CDROM%   //加载CD-ROM驱动到高端内存,lh即loadhigh& ^: M( v# I% Q% Z
path=A:\;%CDROM%:\Tools;%CDROM%:\Tools\ghost;%CDROM%:\Tools\pq;%CDROM%:\Tools\hd;%CDROM%:\Tools\dm;c:\windows;c:\windows\command   //设置文件查找路径; p+ \8 P0 X" Z1 `) V$ F6 P
IF ERRORLEVEL 1 SET CDPROB=1
- U; D- N' d4 Lsmartdrv.exe   //加载磁盘高速缓存,对硬盘上的文件进行拷贝的话必须加载,否则速度极慢7 b' f7 l( T, d; o' ]5 V
call cramd.bat   //cramd.bat的内容:# J4 }0 t( s7 G: `; b# f
      //@echo off) A! o+ r0 r- }+ T6 ^7 D+ \
      //set comspec=%RAMD%:\command.com
; s" L4 s/ x+ `* I- ^      //copy a:\*.* %RAMD%:\ >nul
9 r/ C1 K: t; I' G( H      //设定COMMAND.com为内存虚拟盘中COMMAND.com,并把软盘镜像中的文件拷到         //内存虚拟盘%RAMD%中; [  k2 R5 Q6 U9 k, g4 g, G5 _/ y
a:\mouse.com >nul
5 n. `% F) b( H( e' l; X%CDROM%:! r  O! D0 H3 s8 U
GOTO QUIT3 P1 v1 X, Z6 W+ i8 K

" v9 L* s2 h* \:CDUSB
; b; ~4 \1 z$ `1 b  r4 R; ggoto quit: z/ o7 r- J- j& ]$ |

; }1 F2 |7 Q. c:DOSONLY: F& u& J7 {: a- M) G) O5 M
goto QUIT
( ?# u8 s- H6 |( e: t7 g
& z1 E, r5 {' ~:QUIT7 ?0 {8 s& C' S1 y1 Q" ~
set CDPROB=
- v2 ~8 D5 n9 t6 ?set LglDrv=
4 b. S% q8 b! r  T1 D+ ~" ]/ p2 V% _TW /np /n3 > nul //TW为天汇中文系统,以便显示中文,需拷到启动镜像中  n5 {) x2 k& b* c+ I  k, H
cls   //清屏
2 F" c" ~- W+ y% Gecho 谢谢使用   //echo后面的是在屏幕上显示的信息
2 x! W9 V! h, x6 e7 X) h" Dpause   //显示Press any key to continue... 等待用户按任意键后继续
% l9 S$ j( Z3 k' x- ccall help.bat) K, c# ]( u+ s
( \( A) [7 A; U0 b$ Z8 c7 ^) f
3、DOS启动盘中的部分文件的说明
6 |3 w; D! b2 Q: G7 I0 D8 Y- F5 K6 h$ {6 U# ?1 d( V( t/ t
Aspi2dos.sys、Aspi4dos.sys、Aspi8dos.sys、Aspi8u2dos.sys和Aspicd.scys:以上五个文件为实模式的Adaptec光驱驱动程序
# u; d+ U* y) a9 U( c# SOakcdrom.sys:ATAPI光驱驱动程序5 R) d  K3 Y, u, Y
Btcdrom.sys、Flashpt.sys和Btdosm.sys: Mylex/BusLogic光盘驱动程序5 N0 |5 K+ L3 [3 s2 T
Config.sys:用于加载设备驱动程序   
7 x/ j  z$ ]' ?Drvspace.bin:DriveSpace压缩驱动程序
" \1 V+ R; e9 E! H' s6 eHimem.sys:扩展内存(XMS)管理器
" z$ M" J2 C+ f5 t3 _5 zIo.sys:实模式操作系统 ) ?( B6 Y% ]) v
Msdos.sys:系统引导选项配置文件
5 [: S5 E8 q2 l: M9 p. Z! ?* s+ VRamdrive.sys:启动创建一个虚拟盘
  h+ Q9 u& x" x5 R4 p2 G1 MAutoexec.bat:含可执行指令的自动批处理文件 1 b, |# X* D8 \" d; l3 d0 @( o: y. k
Setramd.bat:搜索第一个可用于虚拟盘的驱动器盘符 ; }9 W) z/ q- ?+ N5 M" s$ G
Command.com:命令解释程序 % z: m# G% N* D7 F- j* n. z# z8 Z
Sys.com:系统传输工具,用于制作最基本的MS-DOS启动盘   
5 ~! f* l* ^7 q5 w% Q7 y6 pEdb.cab:内含可提取工具的CAB文件   
. x$ D% `9 _/ w. z2 C& p  z; CExtract.exe:从CAB文件提取文件的工具
' m& @+ d, Y, N9 ~8 s# j) gFdisk.exe:磁盘分区工具 # w$ H2 @6 }  \2 S& R+ A' [9 e
chkdsk.exe:磁盘检测工具; v, b- ?# T0 x8 a1 R% V
scandisk.exe:磁盘扫描工具 % R: p: u5 ?, i  T  d& O" I1 w8 U
Findramd.exe:启动时探测虚拟盘的实用程序
' F' a9 y6 v2 P) o8 [$ A, g7 V8 cSmartdrv.exe:启用磁盘高速缓存工具
4 G  f4 l# D: z, g! Y
8 Q" O3 U8 c6 H  e  I# |----------------------------------------------------------------------------------------------------------------------------------------------------
+ R2 x8 t* o" l! B  @$ B
2 j( e3 {% \+ m/ r+ n# G- d! K二、镜像制作9 w, o  b) ?, {) b: R1 G$ t
1 b3 O5 h# j) H0 i9 K! _, F8 J# V
事实上大部分工具软件镜像都可以从网上下载到,不过如果你实在找不到现成的,或想自己做个最新版本的,那么就可能会涉及到下面所讲的东西
4 i- _- h9 d4 x9 @
* P' X2 d" K6 T5 e3 K$ s  o# j; [1、直接修改! G1 s/ x  m% s) g

* z9 R) Y6 s# s/ w# M4 \如果你有旧版本的镜像文件的话,一般来说,只要更新替换里面的文件就可以使镜像处于最新版本了。
1 N+ D5 m9 _; v# `+ \$ v
3 R0 J# ~7 g5 h# P2、制作新的镜像
' M6 g' D4 N* A8 F$ N$ o; H7 ?8 x/ s; u' S" I6 p
有些工具无需特别的运行环境,此时只需对一个98启动盘镜像修改就可以了,像Ghost、PQ、DiskGenius等就属于此。此时注意适时加载SmartDrv.exe等(偶尔会对config.sys中的内存管理设定有些要求)就可以了,某些情况下若要对NTFS系统操作的话,就得加载NTFS For DOS之类的软件了,有了上面的一些DOS基本知识,这些应该不会很难了; G" k7 a' [, J% n4 ^  x

; L& ~( t6 c* t3 {6 @# p相对的,某些工具是需要特别的运行环境的,基本上也就是基于其它DOS或Linux,部分修改起来相当麻烦,所以网上基本上是搜不到相应的镜像下载的,这里也不涉及这些。我们可能用到的可能也就是一些专用的磁盘修复工具,如IBM(日立)的DFT、西部的DLGDIAG等,其中Seagate的较新版本的SeaTools所用的OnTrack系统的独占性要求很高,不用其本身的引导文件开机直接引导的话,似乎都无法运行。, l7 p, b7 T3 }' T4 h
8 Z8 Q8 M  T( c4 a$ X4 Z) w
0 M8 a& X, [' u; _6 L
新镜像制作实例:* \$ @: o, v8 |* w& J" ?

( A$ u/ \2 ?6 y) U2 a下面以江民KV2005的DOS杀毒盘为例,大致介绍一下镜像的制作
) f6 |8 W0 C% @( a4 g7 a" _2 l3 J% ^5 v# z8 P9 n
所需的一些工具:
& b- s+ h1 |& j2 tVMWare(里面的镜像软驱非常好用,而且装软件也不会对当前系统造成影响)
5 n) D: @2 f+ v8 m8 lWinImage(读取VMWare里的软驱的内容,做成IMA镜像文件)" I, [4 Y  g0 l( O
EasyBoot(制作超大的软盘镜像)
" m  i  c4 s% z7 w4 m
: _0 n# D% W) G5 \. K% _具体步骤://①②③④⑤⑥⑦⑧⑨⑩
% Y+ f% M. [+ h$ `( P
- `, E: R6 g% c' |0 C①在新建或已有的VMWare虚拟机中添加软驱(没有的话),并使用镜像(新建文件floppy.flp),当然也可以使用物理软驱,不过还是算了吧,既慢又容易坏且还得找软盘。5 L4 x" u# K' k

( X' t. I' t/ C  Y( r②在VMWare虚拟机中装好操作系统(如xp),安装KV2005
5 _4 ]  T$ H$ h; u! I7 q3 E  M7 E2 A  q
( ]! U3 {/ u3 x4 d9 E/ F③打开KV2005,选择制作DOS杀毒伴侣,提示需要四张软盘(在这不使用U盘或文件夹方式,因为其它工具很少支持这种制作的)。制作好第一张软盘后,打开WinImage,读出软盘中的内容(见附件1),保存为IMA镜像文件,如kvdos1.ima。用同样的方法制作剩下的三张软盘,并得到kvdos2.ima、kvdos3.ima和kvdos4.ima
2 S+ O3 B9 L6 S& J( @3 e6 ^! D
- R6 \6 Z, V4 X1 t0 N④将这四个ima文件从虚拟机中拷到当前系统中(如果虚拟机中有EasyBoot就不用了,不过还是建议在当前系统中装EasyBoot)* x. p9 S+ c, ^3 p

% `# d; t1 Y/ `) _4 J⑤打开EasyBoot,选择工具->生成新的软盘印像(这里印像和镜像都是指同样的东西),种子印像文件选择kvdos1.ima,大小选4320(够了),输出文件取名为KVDOS.img,点击生成(见附件2)- B, k0 ]' p9 |$ ], S  {( V5 j
+ @8 z6 {- E) e
⑥用WinImage将那四个ima文件的内容拖出来,并放入KVDOS.img中就ok了( ]' {- T) h7 W

) N- `) h( U& m; gps:
6 x2 S, s. L' n) N. I0 P1 ]①虚拟机安装了VMWare Tools后,就可以使用映射网络驱动器来用享当前系统的一些资源了,不过还是用鼠标直接拖动比较方便,按着鼠标左键不放拖动文件就可以了,从虚拟机到当前系统或反过来都行(VMWare 5.0),建议使用VMWare 5.0,文件传送速度快了不少3 X1 ?* |9 ^7 K' F6 `) A

  i0 @) s6 J! ]9 g②如果工具软件不超过两张软盘的容量,则无需使用EasyBoot来制作镜像,直接用WinImage,将镜像更改格式为2.88M就可以了;WinImage7.0已经支持生成任意大小(见附件3)
) U- d* W2 x/ N+ X4 ?; y* m3 o# O& j1 G# ^! C
----------------------------------------------------------------------------------------------------------------------------------------------------1 d, W3 O/ f/ u" N

% Z* o/ j# Y9 E, W" O三、系统文件的制作
2 U+ a, h6 f% z& w$ n6 c7 v, e/ c; ?4 y5 l2 {& X- K8 h5 `
关于这方面的内容,本版块的帖子已经相当多,大家可以看看老大的帖子或下载启动光盘制作完全手册看看9 p/ X/ ?9 Y3 z$ ?4 w: j! F

5 P# d& W$ ?* \/ z8 F/ z+ C在这里,以一个举一反三的例子向大家介绍一下其它一些功能的实现
+ R, {$ ^5 x3 a: l8 S) F4 s! k2 B* Q5 A9 `
内容:使用O&O BlueCon XXL Admin Suite制作2000/xp/2003的密码修改镜像,并添加到启动光盘中& M- O' A4 P. {
% m; a% n* f7 }/ d
热身知识:
! _' Z2 H0 ~% n/ p$ }& z+ I2000/xp/2003安装引导过程——先加载光盘引导文件w2ksect.bin(或其它,这个文件在EasyBoot的安装目录的子目录ezboot里)->setupldr.bin->ntdetect.com->再加载驱动程序->读txtsetup.sif->开始光盘安装
  r& s$ f: x* V! O; |& A. ?- h$ q/ g+ f9 s! \8 S9 U, @/ C0 v$ M
所需的一些工具:! D, Q! X6 J* r! f6 |( V& c' I
O&O BlueCon XXL Admin Suite
8 O3 ~! H* t, W+ K* y4 x/ VWinImage% E' `9 j4 ^# @/ P; _" S
UltraEdit' P1 R1 b- A- S, V7 s
EasyBoot
& I2 G" ]( }# l$ I6 e( |% p
4 o1 X! e: \. {) @, W$ ?* n具体步骤:  z2 O. S1 m# o6 Y3 W/ h
- ]7 N# K  p  m& W! b% {3 B6 c
1、安装O&O BlueCon XXL Admin Suite后,使用O&O BootWizard XXL制作ISO镜像(非常简单,也就不废话了)
+ B' |6 `7 h$ U8 b9 @% c) L, c' ]7 r8 Y2 ^
2、将该ISO展开,得到win51*.*(取决于制作ISO时所用的系统文件,可用xp或2003的)和文件夹i386(相当于一个软盘启动组),将win51*.*和i386拷到EasyBoot中指定的光盘文件目录下(这里假设为MyCD),将i386改名为pwcr& A# m& R# r. N/ b% A; M
4 w3 O& `4 r4 R$ l' z& t" j
3、将MyCD\ezboot中的w2ksect.bin改名为pwcr.bin(没有的话自己找一个,多的是),用UltraEdit将pwcr.bin中I386改为PWCR(一处),进入MyCD\pwcr,将setupldr.bin中的i386改为pwcr(四处),即重新指定启动加载的文件的位置
) P; y: p8 Z9 }/ r: K" t) s' y, n% ^/ ~( V: ?" q+ I0 S
4、在EasyBoot的对应命令菜单中执行 run pwcr.bin就ok了9 v: z) g% N) E( u' Q+ ~( Y( F

9 B9 t, s! H3 fps:% v% b" a2 y2 G! R' V
1、只要知道这些原理就可以举一反三了,例如把WinPE集成到光盘中。制作n合1的光盘也就多了修改txtsetup.sif,以重新指定安装文件所在位置罢了
6 O; E* x' `: Q, j5 F2、用EasyBoot制作这样的ISO时,别忘了选上优化光盘文件,这可会省下不少空间(取决文件内容)
% H" F3 G9 a0 P$ {- }1 g1 O$ p6 E: U
$ q' P. _% h, Y% b8 l
  F4 t. q& y; y$ U. R/ }0 a**************************特别说明***************************, _$ j9 E- Q' S) W$ y* o

- |# i1 O# f. {, m! {( U和winnt.sif一样,txtsetup.sif是制作安装光盘中极为重要的一个文件,里面记录了安装文件所在位置以及安装时文件拷贝的目标文件夹% I: N1 Q" ~, H7 ?, w
5 z8 ^( y* r6 B" [: I- Y
txtsetup.sif的实际作用其实就是把指定的文件按要求拷贝到预设好的位置上,最可能用到的是以下几段:6 W5 M: p/ ^3 f( k
2 r% B( U- x  ]8 d
[SourceDisksNames.x86]——用代码表示源文件的位置
. ]3 T; U) z  A[WinntDirectories]——用代码表示文件拷贝的目标文件夹,其根目录为%WinDir%,即安装指定的Windows文件夹& S2 O6 U( O+ Q- z. H
[SourceDisksFiles]——根据前面设定的代码表示文件拷贝的具体细节,见下面的例子1 {! Y# ]  b( a" O$ e4 H9 g6 i# [5 e" F

1 a5 j7 Q6 [- H0 G# N4 I下面3段为集成SATA、SCSI等驱动时所用
: M! V5 q; Y! e+ Q$ A[HardwareIdsDatabase]——硬件标识6 J( X. i$ E& D1 U; }" J
[SCSI.Load]——SCSI驱动加载
+ u, I/ I) b- i4 |1 u. x[SCSI]——SCSI设备说明
* E  U- q$ B, j1 w  F% w7 E: @; {/ O9 h) @! s, X* g! w
[HiveInfs.Fresh]——全新安装时根据指定的inf文件中的字段添加注册表信息(猜的,不过可能性蛮高的,但是实用性不强)
6 p9 Y& t3 O! U; a[HiveInfs.Upgrade]——升级安装时根据指定的inf文件中的字段添加注册表信息(同上括号)
$ I/ c# k- Z: \8 l! J$ R2 _: E7 ~* o( V+ |/ `. @* I

. Z- |- U$ P2 a先看看txtsetup.sif中比较常用一行描述([SourceDisksFiles]中):* M  s% w7 v  E; H6 K$ h
: L- w; \5 K+ I. @. x# |
defragP.chm = 1,,,,,,,21,0,0,defrag.chm
5 e) s5 k. t! g3 ?5 J( s  E" S! s. U! [- c/ f9 R+ E, X5 b' ^
其中:
1 a3 ]7 m$ E5 A. G! w8 g) c8 O: h% s7 T$ a7 ^/ D% p% h) t
第一位,即源文件位置位的1,在[SourceDisksNames.x86]中有说明,表示源文件为原版本且在光盘上i386文件夹(常用的还有100,表示源文件为SP补丁中较新版本的文件)
8 B  @) X& s6 K# T* F# v4 ^2 H5 X4 k$ ]. E2 Q1 `+ Z" `; q! ]
21为文件拷贝目标位置位,指定了该文件拷贝的目标文件夹,在[WinntDirectories]中有说明,表示%WinDir%\help文件夹" `( U  |- c& f" D) `
: m8 g. x( d! I8 W8 ?# e& j
上面第一个0为升级代码位,含义为:(升级时)0-总拷贝文件;1-安装文件夹中有该文件才拷贝;2-安装文件夹中有该文件时不拷贝;3-不拷贝文件
8 K, o! U1 Q! K8 Y, q6 W
; _& n% m, |2 g( Z& k8 Y第二个0为新安装代码位,含义同上(全新安装时),另外据说此代码若不为0,其前面需多加2个逗号2 ]7 @7 l* }$ m  M% e

# M+ s- F6 g% v) N+ X8 O+ adefrag.chm表示将目标文件改名为此$ X: I/ v' \1 }- s0 N

' D! O) U* _) P8 L  s) o因此,这一行表明,不管是升级还是全新安装,都将源文件defragP.chm拷贝到%WinDir%\help文件夹下并改名为defrag.chm
1 |2 ]3 {. z" Q- O+ V
8 S( u% [/ I' {/ R, }  [  I+ X; u; t
再看一个例子:* Z8 b7 e" l9 p% x$ k3 I
7 w6 Q" F4 p' Q+ {" s* o
sp2.cab=100,,,,,,_x,39,0,0* h8 y9 D: E  `6 r* [+ r
6 Z, N. F* Q3 M
其中:) ^- d0 c7 y' ]
2 u9 \6 l7 L# G+ e7 w$ [
_x表示文件没有经过压缩,即不是诸如LOGONUI.EX_之类经过cab压缩的,实际上加不加关系好像不大,虽说涉及到layout.inf中文件设定的大小(初步校验文件是否被修改过)* \+ x1 l7 E+ L: o" i
- ~; y5 g8 b; S5 A% R
: U- F, Q  `, o" B7 O- `! j$ Y3 X6 B8 s
下面举两个实际应用的例子:
) p5 n1 {& l  U6 G4 o& @9 k+ l, x& j- y6 O6 n7 ^

1 r7 h1 I0 a$ {2 O+ F1、集成Royale主题/ e7 p0 }8 T3 }/ v; K' a+ t

" z* t' P& b0 P; Q# L3 @0 V" U首先对该主题涉及到的文件进行处理:
+ d' Z  I( F$ m6 w' S( D- P8 W: [( X; L3 F# `& c  d
将Royale.theme中的"Wallpaper=%WinDir%Resources\Themes\Royale\Energy Bliss.jpg"修改为
3 a; i: P2 l9 b, K"Wallpaper=%WinDir%Resources\Themes\Royale\EnergyBliss.jpg",也就是改一下桌面图片的文件名而已,因为在txtsetup.sif中重命名文件时好像不能有空格符# N$ ?* _5 G5 V3 v
) r$ K6 W! @" @1 l
文件改名(最好符合8.3)
3 k- S* K) x/ IRoyale.theme -> Royale.the) G0 z! S5 h7 l- ^: H8 Z
Royale.msstyles -> Royale.mst4 L/ p3 S' C/ [- s6 R) d
EnergyBliss.jpg -> Royale.jpg5 D- O1 v* L8 p
shellstyle.dll -> Royale.dll
3 j3 ?# e0 U3 Y3 Z! ?
6 h4 x$ C7 F3 D% f) `  G用modifype处理一下Royale.mst文件的校验码,以防文件拷贝时报错(具体哪些文件要处理我也拿不准,修改过的微软的东西可能性比较大,特别是第一位取100而不是1时,是否要处理视具体情况而定)+ l% f) E5 }6 r* o) Q+ Y

* ^" F+ [* Q" U1 R+ Y. p用makecab压缩一下文件(可以不压),并把文件拷贝到i386文件夹中" j" P* H. e. ^; W) r& U  ?; Z- h' f
$ R/ J# _5 V3 U+ ]: _, }
修改txtsetup.sif) x+ V: P/ n  j( [- ]
在[WinntDirectories]中添加/ m: |% L5 {1 n9 t+ I; }5 `' F
250 = Resources\Themes\Royale# x1 i$ l1 e3 G* |- E! M5 C' E
251 = Resources\Themes\Royale\Shell\NormalColor' x2 s8 ?! K) t! b' P9 ^" ^6 v
在[SourceDisksFiles]中添加# I  m3 `/ k" ]5 W: X
Royale.the = 1,,,,,,,129,0,0,Royale.theme
% `+ L( [; j* _3 H; s! bRoyale.mst = 1,,,,,,,250,0,0,Royale.msstyles
. Y4 ~. k7 @4 x: c6 m: o9 @Royale.jpg = 1,,,,,,,250,0,0,EnergyBliss.jpg$ C& H( h0 V9 ?4 N% E
Royale.dll = 1,,,,,,,251,0,0,shellstyle.dll' C, z4 R/ e' T3 [: D4 X1 y

) j8 b' S! G) b# X% L8 E  M2 `( ^* r6 ?, j) L1 \1 P
2、集成安装(以打补丁为例)
1 F5 X" _& u- }! O; g& H  ^$ O: }- K4 x; ]9 `; Z
将补丁以及xpinstall等相关文件准备好(放在同一文件夹下,并配置好xpinstall.xml,用xpinstall来安装补丁比较美观)
3 a$ |, }, F$ e8 `% H5 w. \4 F# H9 c- W8 q* [
用WinRAR将这些文件做成自解压压缩文件xp_patch.exe,并在自解压选项的模式中指定解包到临时文件夹和全部隐藏(这样就神不知鬼不觉了),以及指定xpinstall为解压后运行的程序
  w) u% B+ B% g* x7 h' B+ ^$ u
6 x4 a, I5 Q& [5 X$ C* o用makecab压缩该文件,并把文件拷贝到i386文件夹中
# M0 s. r6 X2 N5 a/ }5 ?% g" K1 C' f( {/ @0 @
在[SourceDisksFiles]中添加9 W' D% O0 _8 i
xp_patch.exe = 1,,,,,,,1,0,0
3 |2 O# }! x0 V! W
, k. A) U- M1 ?2 ~8 w( }* `1 I在winnt.sif中的[GuiRunOnce]添加
1 a+ _, q* b9 x  ?# hCommand0="%WinDir%\xp_patch.exe"4 [4 D6 F2 A/ Y* m; i0 P$ J5 S

* O+ Z' e9 K2 G( A9 @ps:
2 F: O, q! j* B& K
9 U3 e; _/ ]9 _* C1 l5 D1、手动安装(可进修复控制台)时,必须去掉winnt.sif的[Unattended]段,从而导致了OEM的设定无效,对应的文件夹无法自动拷贝系统盘中,但winnt.sif中和该段无关的设置依然是有效的,所以可以设定程序自动运行,剩下的问题也就是程序文件的定位了,利用txtsetup.sif就可以很好地完成这一任务了(当然大部分情况下也可以利用cmdlines.txt来实现,不过某些程序的安装还是建议系统装完后才执行)/ n8 P6 N4 F4 j( @+ b: e
  Y, z; }: K* @6 b1 [' u
2、制作 n in 1 的光盘时,安装程序应该是根据setupldr.bin指定的位置去加载winnt.sif和txtsetup.sif,所以启动组要包含特定的winnt.sif和txtsetup.sif(没试过启动组中不包含txtsetup.sif是否ok,实在没空,抱歉)$ D% d8 ?& h3 M7 F3 o. b

" ~4 j, d6 _& ?/ e( u************************************************************" O8 o8 [/ J& Q5 ^) g  C8 T; i+ Z

: \8 N% q% P6 J8 C& M----------------------------------------------------------------------------------------------------------------------------------------------------
1 J; Z* s$ C2 J  O. w3 o. A) a& W+ o, j% t3 Q& E* \
四、光盘启动菜单
6 b/ L# t7 p- ~
8 V3 X* F" D. ]* P: p$ v* d) x使用EasyBoot做菜单应该说是很简单的了,毕竟EasyBoot本身就非常简单,而且自带的帮助也很详细,要做得漂亮些,菜单条就选用图像文本吧,就像老大的光盘一样  W+ H' i4 O. u: e7 |6 I6 z

% q4 [3 z( ^4 [, k# p/ m下面bcdw 2.0a1为例,简单介绍一下结合EasyBoot用bcdw直接引导ISO的方法5 a/ L/ E" [; a$ ^( w) C
/ I. b& o' p9 ]6 B8 t* t
1、找到bcdw.ini,编辑内容如下:0 N4 u( c4 \- p) f- x
\BootCD1.iso ;My Bootable CDRom1
  a( h  f% W9 g0 B7 b\BootCD2.iso ;My Bootable CDRom1
6 |$ l1 ^2 D  a* b* {("\"表明BootCD1.iso和BootCD2.iso均在光盘根目录下,";"后是菜单显示信息)/ c3 b3 A" X3 b& q6 O) p8 [

+ D4 S  o& u- F; o0 c; ~( G+ i2、将bcdw.bin和bcdw.ini拷到MyCD\bcdw文件夹下,并把bcdw自带loader.bin改名为bcdwload.bin,拷到MyCD\ezboot文件夹下
1 X+ s1 @: d; d$ K" o6 \! b' r6 I0 G3 [
3、制作好BootCD1.iso和BootCD2.iso并拷到MyCD文件夹下
2 t; j# Y/ ~/ c; m2 h( s, h/ o- P' C3 C6 p
4、在EasyBoot中增加菜单项,执行 run bcdwload.bin
8 D3 s1 p2 E. D$ ~/ ?5 \
9 N7 l/ r" i: X* bps:! k; D4 K: f6 [  }( N
事实上,这里直接引导iso的类型是有限制的,像Windows和Linux的启动光盘好像都不行,这点确实很可惜,跟CD Shell一样
2 T! x6 ~. w  ?3 n9 r/ G* y, Y$ i----------------------------------------------------------------------------------------------------------------------------------------------------6 ]& o& z+ [8 b. m8 }8 C' w" v

; B+ B9 u3 w% I五、虚拟机测试$ ]& O4 C$ l. {( j: Z& ]
7 ]6 I! O. i5 K9 x: v
建议使用VMWare 5.0或以上版本,不过已装好4.x的虚拟机系统要upgrade到5.0的话并不十分容易,请认真查看说明帮助,测试时要善用snapshot(5.0之后的版本能建立多个snapshot,非常方便),例如在测试cmdlines.txt的作用时,因为该文件是到了组件安装时才拷贝并加载的(还剩十来分钟时的样子),所以可以在之前做个snapshot,iso中更新了cmdlines.txt的相关内容后,直接还原该snapshot就可以使用新的cmdlines.txt设置了
草根,不是为了草根而草根;
草根,是手段,不是目的,脱颖而出才是目的!

草根站长论坛一定是你脱颖而出的必选的平台!
请帮助宣传/支持草根站长网.草根站长网是一个需要理解的地方,适宜长期居住!

TOP

发新话题