启动光盘制作完全手册:之三

第三章   多重系统启动盘的制作

上回我们讲单系统的启动光盘的制作,现在我们来讲多重启动光盘制作。目前采用这种方法的工具软件主要有3个:Diskemu、ISOLINUX/MEMDISK和Boot Scriptor。实际上,Boot sriptor是Michael K Ter Louw在ISOLINUX的基础上二次开发的产品,但它对ISOLINUX的功能和性能都进行了非常大的扩充,与ISOLINUX的差别较大,特别是从1.2.3b版开始引入了Diskemu,使其兼容性大大提高,所以我们重点是Diskemu和Boot Scriptor。
可以毫不夸张地说,Diskemu是个划时代的经典之作。在Diskemu被开发出来之前,人们要制作1张多重启动CD-ROM真的需要花费九牛二虎之力:按照El Torito规范需要进行繁琐的地址计算,找到地址后再去修改ISO文件,最后辛辛苦苦制作出来的多重启动CD-ROM还不能保证兼容所有的BIOS!后来,Gary Tong为了解决可启动CD-ROM无法浏览CD-ROM上文件的问题而开发了Diskemu(支持单重启动CD-ROM),BIOS模拟法这时才真正诞生。Bart Lagerweij继续这项工作,使Diskemu能够最多支持20个启动磁盘映像!但非常可惜,2001年11月,Bart在写完Diskem1x.bin v1.1 BETA后便停止了对Diskemu的继续开发(参见 [url]http://www.nu2.nu/diskemu[/url],英文)。但不可否认,直到现在,Diskemu仍然是非常优秀的,其兼容性最好。下面是Diskemu的主要特点:
  (1)支持ISO 9660文件系统。
  (2)使用一种简单的类似批处理形式的脚本语言来执行一定的动作,例如:清屏,显示提示信息,等待按键,运行特定磁盘映像,等等。
  (3)可以快速地编写自己定制的启动菜单,并启动相应的磁盘映像。
  (4)为专业人员提供一个命令行调试模式,手工执行一些操作。
  (5)自动检查软盘映像类型。支持多种软盘映像:160 KB,180 KB,320 KB,360 KB,1.2 MB,720 KB,820 KB,1.44 MB,1.68 MB,1.72 MB,2.88 MB。
  (6)使用1张可启动的Diskemu CD-Rom,你甚至可以从另外不能启动的CD-ROM上启动磁盘映像文件。当然需要首先用可启动的Diskemu CD-Rom启动,然后进入命令行模式,再更换光盘,键入“cd \”,再运行光盘上的映像文件(在实际工作中这项功能应用得并不多)。
  (7)它使用一个单独的引导器(loader.bin),将能够正确地加载diskem1x.bin,甚至在BIOS不完全兼容El-Torito规范的主板上,也能保证正确引导。
  Bart还有几个计划没有完成,当然也是Diskemu的主要不足:
  (1)检测第1快硬盘是否看似能够启动。
  (2)让diskem1x直接将信息写入屏幕缓存。
  (3)增加颜色功能。
  (4)键盘映射(以支持其他国家的键盘)。
  (5)增加软盘映像热交换功能。
  (6)加载COM文件(COM文件一定不能用DOS功能)。
“非模拟”式BIOS模拟法要求有1个引导器和1套启动映像/菜单管理器。引导器必须以非模拟方式加载,即启动后不能模拟为软盘或硬盘,这是制作BIOS模拟法多重启动CD-ROM的关键。下面以Diskemu为例简述其运行流程,ISOLINUX与Boot Scriptor的运行流程与此基本类似。
  Diskemu包含3个主要文件:
  loader.bin:启动引导器;
  diskem1x.bin:启动映像/菜单管理器;
  diskemu.cmd:默认的启动菜单配置文件,纯文本文件,需要用户手工创建。
  启动引导器loader.bin是启动目录中默认的启动入口,loader.bin将最先被加载到默认的加载地址0:7c00h。loader.bin被加载后,首先将自己移至地址5000:0h,然后搜索光盘的根目录,查找文件diskem1x.bin。找到后,diskem1x.bin将被加载到地址0:7c00h,Loader.bin的使命完成。diskem1x.bin被加载后,首先也将自己移至地址5000:0h,然后搜索光盘根目录,查找默认的启动菜单配置文件diskemu.cmd,找到后,显示其中的菜单项,并根据用户按键运行相应的启动映像。如果没有在光盘的根目录下找到diskemu.cmd,或者在diskem1x.bin的加载过程中用户按下了Shift键,diskem1x.bin将进入命令行模式(可以进行各种调试)。
  从Diskemu的运行流程来看,其本质是单重启动, diskem1x.bin加载后,它与启动菜单配合,为用户提供多个启动入口,模拟El Torito规范中的多重启动的启动目录,并根据用户的选择,完成多重启动的动作。这也正式“BIOS 模拟法”名称的由来。
制作多重启动CD-ROM一般要经过三个步骤:
  准备所需资料→制作光盘映像ISO文件→将ISO文件烧录到CD-ROM
  烧录软件的作用就是完成后两步操作。
  当然,不制作ISO文件而直接烧录出多重启动CD-ROM也是办得到的,但除非十分有把握,否则最好不要冒险。
  能够制作多重启动CD-ROM映像文件的烧录软件很多。从BIOS模拟法的工作流程即可知道:只要是能够制作单重启动CD-ROM映像文件的烧录软件也应该能够制作多重启动CD-ROM映像文件。但凡事总有例外:ISOLINUX就很特殊,不是所有的烧录软件都适用。
    
我们今天要做的是WINDOWS 6 IN 1。如果再加个DOS 6.22可以来个7IN1了。
是以下6个系统,WIN2KPRO、WIN2KSEVER、WIN2KASEVER、WIN98SE、WINME、WIN97,要说明的是,WIN2K是打了SP3的了,而且包括WIN2K源盘所带的所有程序。WIN98SE、WINME、WIN97则不带任何源盘工具(如PWS等),只是安装文件。当然了,你可以不要这么多的系统,只选几个想要就行了。如做个WIN98SE和XP的合1等等。这个盘有800M左右,用99MIN 870M盘刻还有余量。如果没有800M或870M的盘,请去掉一些系统或WIN2K的一些工具。
1、所用的工具:CDIMAGE、NERO、winimage、上述系统的的源盘,还有VMware Workstation。
2、上述映象引导文件,你可以自已做,但我已打好包了,建义新手采用我的BOOT来引导,省事,不用你配置了。
[url]http://www.yihongtai.com/xjf/boot/boot.rar[/url]
这是DISKMU文件。
[url]http://www.yihongtai.com/xjf/BOOT/diskmu.rar[/url]
3、目录结构
建一个文件夹为在D:\WIN2K\ROOT,保证硬盘上有足够空余空间(假设将文件存放在硬盘d:,全部三个版本的原始文件约占用空间为1.5 GB,生成的镜像文件约为811 MB),建立如下目录结构,并复制文件cdimage.exe到相应位置:
  d:\win2k\cdimage.exe
  d:\win2k\root\boot
  d:\win2k\root\wpro
  d:\win2k\root\wsrv
    d:\win2k\root\asrv
  d:\win2k\root\win98
  d:\win2k\root\winme
    d:\win2k\root\win97
  d:\win2k\root\win2000
  d:\win2k\root\win2000\asvr
  d:\win2k\root\win2000\wsvr
  d:\win2k\root\win2000\wpro
将下下载的boot.RAR解压后用于放到boot文件,把所有引导文件全部放进来,那位看官说了,放在根目录行不行,是可以的,但放进去boot目录比较整洁,而且我已经把路径全设好了,请新手不要改动,否则不能引导。WPRO,WSRV,ASRV分别放WIN2K三个版本的BOOT iMG,下面有详细的说明。
  其中,d:\win2k\root\是Windows 7合1光盘的根目录,d:\win2k\root\win2000\asrv用于存放Windows 2000高级服务器版文件,d:\win2k\root\win2000\wsrv用于存放Windows 2000服务器版文件,d:\win2k\root\win2000\wpro用于存放Windows 2000专业版文件,d:\win2k\root\win98内放WIN98的安装文件,d:\win2k\root\win97内放WIN97的安装文件,d:\win2k\root\winme内放WINme的安装文件.
将d:\win2k\WIN2000\root\asrv目录下的cdrom_ia.5和cdrom_nt.5复制到d:\win2k\root\,将d:\win2k\rootWIN2000\wsrv目录下的cdrom_is.5复制到d:\win2k\root\,将:\win2k\root\win2000\wpro目录下的cdrom_ip.5复制到d:\win2k\root\。
d:\win2k\root\下面必须有cdrom_ia.5、cdrom_is.5、cdrom_ip.5和cdrom_nt.5文件,这是我们欺骗安装程序的标志:这张光盘是Windows2000的原始安装盘。
将下下载的DISKMU.RAR解压后,放到复制到d:\win2k\root\
以上WIN2K下放的是WIN2K的源盘所有文件,WIN9X文件夹下放的是完全安装文件,下面没有什么文件夹。不要放错了,要不然无法安装。
 

图片 1
 
4、给WIN2K打SP3(当然不打也可以)
运行w2ksp3.exe /x将Service Pack 3全部文件提取出来,假设提取到f:\tmp。在f:\tmp\i386\update下分别运行命令行命令:
  update.exe -s:d:\win2k\root\win2000\asrv
  update.exe -s:d:\win2k\root\win2000\wsrv
  update.exe -s:d:\win2k\root\win2000\wpro
  上述命令运行完毕后,Service Pack 3已经集成到Windows 2000各版本中,且d:\win2k\root\win2000\asvr、 d:\win2k\root\win2000\wsvr、d:\win2k\root\win2000\wpro各目录下应有一文件cdromsp3.tst,将其复制到d:\win2k\root\。
d:\win2k\root\下面必须有cdromsp3.tst文件,否则安装程序会要求我们插入Service Pack 3光盘。
5、 跳过输入产品序列号
  查找各个版本i386目录,找到文件setupp.ini,用记事本打开,将其中的“Pid=xxxxx000”修改为“Pid=xxxxx270”,存盘退出。这一步不是必须的,只是图个方便。
6、 配置安装程序
  Windows 2000正版光盘上有个bootdisk子目录,里面包含4张Windows 2000安装软盘镜像的img文件。用WinImg将各个版本bootdisk目录下的4个img文件分别释放到各自的系统文件目录下:
  d:\win2k\root\win2000\wpro\bootdisk的img文件全部释放到d:\win2k\root\wpro\下。
  d:\win2k\root\win2000\wsrv\bootdisk的img文件全部释放到d:\win2k\root\wsrv\下。
  d:\win2k\root\win2000\asrv\bootdisk的img文件全部释放到d:\win2k\root\asrv\下。
 一定要注意,这是我们模拟软盘安装的关键,一定要连带system32目录(里面有两个文件)一起释放。
  从d:\win2k\root\win2000\wpro\i386目录中复制bootfix.bin,将其分别粘贴到d:\win2k\root\asrv、d:\win2k\root\wpro和d:\win2k\root\wsrv。该文件的作用就是光盘启动后显示一条信息“Press any key to boot from CD.”,并等待5秒钟,若没有按键,则从硬盘启动;否则从光盘启动。
  如果觉得5秒的延时太短,可以用UltraEdit编辑该文件,找到“Press any key to boot from CD.”后面的“49 00 12 00”,将“49”改为“AA”延时可达10秒,改为“FF”延时可达15秒。
  如果集成了Service Pack 3,需要将wpro、wsrv、asrv下面的文件用各自i386目录下面的文件替换(实际上只需要替换txtsetup.sif就行了),即将启动软盘组中的文件也替换为集成Service Pack 3后的文件。注意:一定不要替换system32中的文件,否则无法安装。
  要替换这一大堆文件比较繁琐,用下面的方法可以简化:
   xxcopy法。下载xxcopy( [url]http://www.xxcopy.com/[/url]),执行下面的命令:
  xxcopy d:\win2k\root\win2000\wpro\i386 d:\win2k\root\wpro\ /U /E /YY
  xxcopy d:\win2k\root\win2000\wsrv\i386 d:\win2k\root\wsrv\ /U /E /YY
  xxcopy d:\win2k\root\win2000\asrv\i386 d:\win2k\root\asrv\ /U /E /YY
替换完成后删除wpro、wsrv、asrv下面的空目录(xxcopy替换的副产品)即可。
7、 修改setupldr.bin和txtsetup.sif
  用Ultraedit打开d:\win2k\root\asrv\setupldr.bin,用ASCII方式替换“i386”为“asrv”,共3处;
  用Ultraedit打开d:\win2k\root\wsrv\setupldr.bin,用ASCII方式替换“i386”为“wsrv”,共3处;
  用Ultraedit打开d:\win2k\root\wpro\setupldr.bin,用ASCII方式替换“i386”为“wpro”,共3处。
  存盘退出。
  用Ultraedit打开d:\win2k\root\win200\asrv\txtsetup.sif,替换“SetupSourcePath = "\"”为“SetupSourcePath = "\win2000\asrv"”;
  用Ultraedit打开d:\win2k\root\win200\wsrv\txtsetup.sif,替换“SetupSourcePath = "\"”为“SetupSourcePath = "\win2000\wsrv"”;
  用Ultraedit打开d:\win2k\root\win200\wpro\txtsetup.sif,替换“SetupSourcePath = "\"”为“SetupSourcePath = "\win2000\wpro"”。
  存盘退出。
  这两个文件中的路径告诉安装程序从何处复制文件,必须与目录结构相匹配。
8、WIN97.IMG,WIN98.IMG,WINME.IMG中的AUTOEXEC.BAT我已配置好,如这个镜像是你自已做的,可能安装会和我的不一样,具体配置,可以参考我做的这个,因为用系统做的软盘启动盘,做不出正版的效果。关于这个不想写的太多,如果细说,一章都不够。
9、diskemu.cmd的文件我已改好,如你不满意,可以用NOTEPAD改一下。不过不要改文件名和路径。
10、制作ISO
CDImage程序加“-o”参数优化后生成的镜像文件约为811MB,我们假设将它存放在f:盘的根目录下,命令行命令如下:
d:\win2k\cdimage -lWin6in1 -t015/9/2002,12:00:00 -g -h -n -o -m -bd:\win2k\root\loader.bin d:\win2k\root f:\win6in1.iso

 上述命令中各参数含义分别为:
  -l:设置光盘卷标。此处为“Win6in1”。
  -t:设置光盘上所有文件的生成日期。
  -g:转换本地时间与格林威治时间(GMT)。但如果是在Windows XP系统下,该参数似乎不起作用,“-t”参数指定的是GMT时间,而文件的生成时间是“-t”指定的时间加上时区转换后的本地时间。如,上例中的文件生成本地时间是“20:00:00”,即GMT+8=北京时间。
  -h:包含隐藏的目录和文件。
  -n:允许长文件名。
  -o:优化相同的文件,最重要的参数.
  -m:允许生成的ISO文件超过640 MB。
  -b:光盘启动引导程序,此处我们使用了loader.bin。
  d:\win2k\root:源文件路径,将作为光盘的根目录。
  f:\win6in1.iso:最后生成的ISO文件,我们要的就是它。
  cdimage /?可显示所有选项。CDImagegui提供了一个图形界面,使用更直观,功能是一样的。

11、我们可利用VMware Workstation( [url]http://www.vmware.com/[/url])或Virtual PC( [url]http://www.connectix.com[/url])测试其效果。正确无误后,可将iso烧录到光盘。
我上面的用了diskemu做了一个多重启动,大家慢慢体会后,我们再用Boot Scriptor做。

你可能感兴趣的:(职场,制作,休闲,启动光盘)