From: "Su99" <netsu@263.net>
Subject: 自已做WIN2000的"N合一"光盘
Date: 2000年8月23日 14:42
这段时间流行了一阵"N合一"风,最早是WIN2000的PRO,SERVER和ADVSERVER三个版本做成一张光盘,刚开始我还以为是简单的把三个系统的安装盘刻在一张上面,后来大概算了一下,少说也有900M-1G的数据,不太可能。下了一张来看看,发现做法非常新鲜:
其实WIN2000的三个版本的安装盘中,有大量的文件是相同的,特别是语言包/字库(I386\LANG目录)以及写字板等自带应用程序,以及那个50M的driver.cab。不同的只是相对少数的系统文件。这种N合一光盘将ISO映象经过特殊处理,重复的文件,实际数据在光盘上只有一份,通过类似于修改光盘目录表的办法,让不同的目录/文件指向相同的数据区。完成ISO修改后再刻成光盘。这样,既省了空间,又让每个目录看起来仍然独立、完整。
那么到底有多少相同呢?我自己做了个实验,我有一个WIN2K PRO安装目录和一个ADV SERVER安装目录,分别是260M和280M左右。(为了省空间,我去掉了除简/繁体中文外的其它语言包,象韩文日文阿拉伯文,我这辈子都用不到)。两个目录如果简单的刻在一张盘上,将占540M左右的空间。而用N合一的方法,"相同文件只处理一次",合并下来只有340M左右。照这个数字看来,二者有70-75%是相同的!不同部分只占各自的25%-30%!依此数字估算,就算将SERVER也加进去,最后的大小也应该只有400-450M,相对于简单相加的800M,几乎少了一半。如果你不想将三个差不多的WIN2000分别用三张CDR保存的话,可以考虑自己做个N合一光盘。
说到这里不仅要提一下DOS/WIN文件系统的落后。UNIX/LINUX从最开始就提供了符号连接的功能,一个简单的ln命令就可以完成上面的工作,而在DOS/WIN下,这种操作必须借助专门的软件通过修改ISO进行,而且这种结构还不能存在于硬盘上,因为它在所有针对DOS/WIN的磁盘检查软件看来,都是"交叉连接",会被"自动更正"。
好了,别扯远了。话说回来,理解这种方式很容易,实际做起来呢?关键是"相同文件"是怎么判断。靠人工是很麻烦的。实际上微软内部提供了一个工具,叫CDIMAGE,专门干这个。加上一个-o参数,就可以实现"自动优化"的功能。MS很多内部发行版本,都是用这个办法"挤"在一张盘上。这个小工具解压只有70K,此贴的附件就是。
当然它不光是用来做WIN2000的N合一。对所有"大量文件重复"的情况,用它都可以发挥极大作用。不过……好象这种情况不多……大家举点例子?
具体做法:
1、建一个目录,把它看成是你要做的光盘的根目录,把所有要放上去的内容全弄进去,比如,这个目录叫c:\ewin3in1,里面分别有
c:\ewin3in1\pro
c:\ewin3in1\server
c:\ewin3in1\advserver
目录,分别对应三个WIN2000版本。现在查看目录属性,应该在800M或更多,无法放在一张光盘上。
2、现在用CDIMAGE程序,在另一目录(你想产生ISO文件的目录)中运行:
cdimage -lWin2K3IN1 -t08/22/00,00:00:00 -h -n -o -m c:\ewin2k My3IN1.ISO
直接运行CDIMAGE将显示参数说明。下面简单解释一下常用参数意义:
-l : (是JKL的L,不是IBM的I)这是光盘的卷标
-t : 将所有文件设成指定的时间,看起来很专业
-h : 包括隐藏文件
-n : 允许长文件名
-o : 这是最重要的,CDIMAGE的精华就是它。自动判断重复文件,对重复文件只处理一次,并自动修改相关的文件指向。默认是使用文件大小和MD5算法进行比较(我也不太懂,大概是和CHECKSUM差
不多概念的方法吧)从概率角度来看准确性相当高,但并不是"逐字节对比"。如果你要求逐字节对比,用-oc参数。不过速度极慢。
-m : 不加这个参数的话,将不能产生大于650M的ISO映象
c:\ewin2k : 这是光盘的根目录。CDIMAGE将以此目录开始构造光盘目录结构,硬盘上的c:\ewin2k\pro将变成光盘的x:\pro
My3IN1.ISO : 这是最后生成的ISO文件的名字。它已经是优化后的了。
在制作过程中CDIMAGE会告诉你优化前/后的大小。最后只需用烧录软件(如EASY CD CREATOR的CREATE DISK FROM IMAGE)将ISO刻成光盘即可。
至此我们的N合一就做完了。当然这张盘只是简单的将三个安装目录放在一起,而且不能启动。比较理想的情况是,将光盘做成象2000正
版那样自动启动并开始安装的(这个已经有人做到了),更理想的情况是开机出现菜单,可以选择安装PRO/SERVER或ADVSERVER,然后
自动调用相应的安装程序。目前还不知道有没有人做出来。如果你知道,或是做出来了,一定告诉我。
要做成可启动的安装光盘,有很多要注意的地方,这个贴子可以参考:
http://210.73.66.95:82/wayne/jprjxzubb/Forum2/HTML/011844.html
主要有两点:一是把CDROM_xx.5这些文件放到光盘根目录,让安装程序认为这是原版。另外需要做一个启动软盘的映象文件如boot.bin然后做CDIMAGE的时候用-bc:\boot.bin来让ISO可启动。至于多启动光盘这类东西,大家参考这里,有点旧,但还是有用:
http://nikko.simplenet.com/goldentime/
这种盘当然也有缺点,而且是显而易见的:
1、如果光盘有某个地方损坏,刚好又是大家"共享"的系统文件,那么可能3个WIN2000都将报废,无法安装。普通光盘只是损坏那个文件所属的那一个版本。
2、最好要有光盘刻录机,这种ISO镜象,用WINIMAGE解是没有意义的,WINIMAGE并不懂得这种修改过的结构,它将按目录表把所有文件解到硬盘,相同文件被复制了若干份。相当于还原成优化之前的状态。象那个EWIN 6合一,解开后好象有1.9G左右。
不过相对来说这些缺点都不重要。
感谢 software.cn99.com 论坛的 Jackeroo 寄给我的CDIMAGE。别小看这些小东西,很难找