BilinSun 要想由给定的安装光盘制作启动软盘,我们首先需要知道需要知道应有多少个软盘、向每个软盘复制什么文件。 我们首先想到的是查看dosnet.inf。即使winn32不再主动读取它,我们可否自己来读取它? 但是,不幸的是,dosnet当中的软盘文件列表从某时开始不再获得更新。下图是我随便找的一个36xx的build,应该没有争议它至少该有6张软盘(不少于XP)。可以找到与第一张软盘对应的占位符disk101文件,但是找不到第五张的。
BilinSun 到哪里去找文件列表呢? 根据我以前跟软盘打交道的经验,dosnet这个文件并不被复制到软盘里。换言之,如果dosnet是存储文件列表的唯一信息的话,那么我们仅用软盘启动的时候,它可能甚至不知道它自己有什么文件! 或许在其它哪里还有一个文件列表。 提到文件列表,最容易想到的就是……没错!txtsetup.sif。这个文件承载了几乎整个Windows Installation的文件列表,此外还附有不少其它信息。再加上几张软盘的文件应该是不成问题的。 (下面用的都是3683) 打开txtsetup,最开头的一堆东西就比较引人注意。1到7这一串数字,看上去就像是对应(与Server 2003同样多的)七张软盘。
BilinSun 显然,_1等都是变量,应该要用来标记哪些文件来源于哪些软盘。直接搜索一下可以找到一些行: biosinfo.inf = 1,,,,,,_1,20,0,0,,1,1 ntdetect.com = 1,,,,,,_1,1,3,,,1,1 …… 这正是软盘当中能见到的文件!!
BilinSun 我有点气,所以看了一下有什么文件特别大 这个setupreg.hiv没有压缩啊。另外几个NLS文件占了不少空间。 (背景知识:NLS文件主要用于提供多语言支持。像936、949、950提供中日韩编码支持,对于一个英文启动软盘其实没什么用。) 于是我用makecab把setupreg给压缩了一下。然后邪念一起……
BilinSun 根据我和软盘打交道的经验,我发现这样复制的还少一些东西。 占位文件disk10*没了。如果读不到这个文件,那么安装程序就认为没有插入正确的安装软盘。幸好这个文件的内容是不重要的,所以随便凑出来就好。 txtsetup.sif、setupldr.bin(一般在第一张软盘下)、spcmdcon.sys(一般在最后一张软盘下)还有smss.exe(一般在最后一张软盘的system32文件夹下)在txtsetup里面是没有记载的,不能忘记加。