Windows NT 4.0 安装秘诀
Windows NT 4.0 是微软公司 1996 年出品的操作系统。Windows NT 4.0 有两个版本,一个是 Windows NT 4.0 Workstation,另一个是 Windows NT 4.0 Server。作为 Windows NT 系列的一员,Windows NT 4.0 体现了纯 32-bit 的工作特性以及较高的稳定性。用过 Windows 95 的计算机用户大都遇到过计算机死机的事情。在 Microsoft 公布的统计数字中,Windows 95 平均连续工作一个月就会出一次死机之类的问题,而 Windows NT 4.0 连续工作三个月一般也不会出这类问题。这体现了 Windows NT 4.0 的优秀性能。另外,Windows NT 4.0 由于是出自与 Windows 9x(包括 Windows Me)不同的 NT 家族,所以 Windows NT 4.0 对内存的利用比 Windows 9x 版本要好很多,特别是没有 Windows 9x 系统那个致命的 User Resource(用户资源,所有采用 Windows 对话框或窗口的程序都要占用这个资源,Windows 一共才提供 6MB,其中 4MB 给 32-bit 程序,2MB 给 16-bit 程序,你装再多的内存也没有用)。当然,Microsoft 公司公布的关于 Windows 2000 运行稳定性的数字更是比 Windows NT 4.0 要高:平均使用 12 个月才会出一次死机一类的问题(微软公司的操作系统总不是最好的,Linux 一年到头基本上都不会因为软件的可靠性而出问题)。不过,不管 Windows 2000 究竟性能怎么样,Windows NT 4.0 已经很不错了,毕竟 Windows NT 4.0 是 Windows 2000 的前身。而且,Windows NT 4.0 小巧玲珑,安装以后才 130MB 左右(比 Windows 98 还小,Windows 2000 要 600MB)。“资源管理器”的速度又比 Windows 2000 快不少。当然 Windows NT 4.0 也有缺点,就是作为服务器的性能不如 Windows 2000(毕竟 Windows 2000 在内存管理等部分性能针对大内存系统有所优化),再加上微软公司对 Windows NT 4.0 没有像他们对 Windows 2000 那样关心,以致其安全性没有 Windows 2000 高。不过,Windows NT 4.0 已经采用了“微内核技术”,这项技术使得 NT 4.0 更稳定。而纯 32 位特性使得在 Windows NT 4.0 上运行 32-bit 程序的速度比 Windows 9x 快。同时,Windows NT 4.0 也通过采用 NTVDM(Windows NT Virtual DOS Machine,Windows NT 的 DOS 虚拟机)兼容大部分的 16-bit 程序,以及用 WOW(Windows on Windows)来兼容大部分的 16 位 Windows 程序(有时候你会看见 wowexec,就是这个了)。另外,Windows 2000 就是从 Windows NT 4.0 上升级而来的,因为 Windows 2000 原来的名称是 Windows NT 5.0,而且,Windows 2000 中的大部分核心代码都照搬或者模仿 Windows NT 4.0。毕竟 Windows NT 4.0 也是微软公司推出的第一个广泛使用于服务器的操作系统。Windows NT 中的 NT 指 new technology,新技术的意思。
Windows NT 4.0 看起来和 Windows 95 有不少相像之处,但是,其安装过程与 Windows 95 就大不相同了。我曾经安装 Windows NT 4.0 失败过许多次。到现在,我总结出了一些经验,供大家安装 Windows NT 4.0 时参考。
秘诀一共有两条。第一条:一定要安装在主分区表中第一项所指的分区上面(如果存在),至少,那个分区不应该隐藏,以便 Windows NT 4.0 的 boot loader 能被安装。而且,一旦安装成功,那个分区也必须可见,以用来引导 Windows NT 4.0。我曾经试图在主分区表的第二个分区上安装 Windows NT 4.0,结果失败了,在重新启动的时候,无法正常进入安装程序,也无法进入原来的 Windows。我当时用 Power Quest Partition Magic 把第一个分区隐藏起来。第二个分区是可引导的。我后来发现,被隐藏起来的分区的内容被改变了。当然,这只是一种特殊的情况。我认为,Windows NT 4.0 安装程序会自动扫描各个分区(不论是否隐藏)。如果它发现第一个主分区,它就往上面装。而它的 BOOT LOADER 就被安装到那个被发现的第一个主分区上面。但是,它的其余部分却被安装到你所指定的安装分区上面。这样就导致了不一致。在 2004 年 2 月我又试图这样安装,结果导致第一个分区上的 Windows 2000 无法正常启动。而后我把 NT 4 的目标分区在分区表中的位置调整到第一项,结果安装是显示成功了,但是实际的系统无法启动(可能是因为这个分区在物理上的位置在后面,而在分区表中的位置在前面,结果就无法启动)。PQMAGIC 倒是提示 DOS 和 Windows NT 可能无法启动第二个主分区上的操作系统。后来我用 Windows 2000 安装程序重新安装了一下(不只是装 BOOT LOADER),才把无法启动的 Windows 2000 给修复。
第二条:所有在安装过程中牵涉到的分区,必须在硬盘的最前面 8GB 以内。这是由于老的 LBA 硬盘标记法则中,扇区数〈= 63,柱面数〈= 1024,磁头数〈= 256。这样一来,硬盘能被访问的空间范围最大不超过 63 * 1024 * 256 * 512 = 8455716864 字节。MS-DOS,Windows 95, Windows NT 4.0(在没有打过补丁之前)都这样。如果你发现安装的时候,第一次重新启动,发现 Windows NT 4.0 蓝屏而且显示“INACCESSIBLE_BOOT_DEVICE”,那就很可能是遇到这个问题了。那么万一你没有这条件怎么办?如果这样的话,你就必须想办法把硬盘前 8GB 的数据移动一部分到后面去,只要保证前 8GB 有大约 1GB 的空间剩余就可以。另外,如果引导分区的尾部超过前 8GB 的范围,那么就需要把引导分区缩小甚至移动。这也需要你自己想办法。完了以后,如果还有数据在前 8GB 之外(一般是必然的),那么就把整个扩展分区隐藏掉。Power Quest Partition Magic 不支持隐藏整个扩展分区。要解决这问题,又要想办法了。我用的方法是 DEBUG,三下两下就搞定了。DEBUG 一个简单的用法如下:把主引导扇区的内容存入文件 mbr.dat。注意,要在 DOS 或 Windows 9x 环境下执行。
-a 100
mov ax, 0201
mov bx, 0300
mov cx, 0001
mov dx, 0080
int 13
int 3
-g = 100
-d 4be
-r cx
:200
-r bx
:0
-n mbr.dat
-w 300
-q
不过下面将会讲到,用软盘做一张 NT4 SP4 ATAPI 驱动程序盘,可以在安装过程中不受 8GB 的影响。但是 NTFS5 还是要打 SP4 或更高版本的 SP 之后才能访问的。
最近,我在重新安装 Windows NT 4.0 Workstation 的时候,又发现了一个问题。当时的情况是这样的:安装系统之前,我把所有超过 8GB 的分区都隐藏起来,包括扩展分区。我安装完系统之后,先安装了 Service Pack 4,然后再安装 Internet Explorer 4.01 SP1,再安装显示器与调制解调器驱动程序,接着装 Office 2000,最后装 Internet Explorer 5.5。奇怪的是,看上去这些安装都遵循了“先装老的,在装新的”的规则,但是每次启动电脑,总是接收到“服务器空间不足,无法启动‘server(服务器)’服务”。我想,不可能空间不足啊,C: 有 3GB 还多的剩余空间呢。我先查看了 Internet Explorer 的 readme.txt,没有看见相关信息。后来我想起了 MSDN 里面的知识库(Knowledge Base),在里面,我翻看了很多文章,终于找到一篇,里面是这样说的:Service Pack 的安装程序(update.exe)在运行时只会更新已经安装的部件。而在安装完 Service Pack 以后,安装网络适配器(或者调制解调器),会让 Windows NT 安装新的组件,这些组件没有被 Service Pack 更新,所以可能导致不兼容。如果遇到这种问题,可以重新安装 Service Pack。回想我的安装过程,的确调制解调器是在 Service Pack 安装后安装的。于是,我就按照文章说的去做了。途中又遇到了一个小问题:由于我安装了 Internet Explorer 5.5,所以加密系统被更新了,Service Pack 4 的安装程序警告说“在系统上发现了 128 位加密系统,是否要继续?如果继续,将用 40 位加密系统取代 128 位加密系统”。这个时候,我选择了“是”,安装完成以后,我重新启动了计算机,再运行“Internet Explorer 修复程序”,最后,系统工作完全正常。
NT 4 另类安装:2004 年 2 月 17 日,我试图安装 NT 4 到我的第二个主分区上去。第二个分区我把它格式化成 FAT 文件系统,这样 98 的引导和 NT 4 的安装都可以用。我使用软盘-光盘安装方式。用的是 Verbatim 的优质软盘,而且软驱也已经用过多次了,这样可以放心。安装的时候用了微软提供的 ATAPI 更新驱动程序(SP4 的版本),以识别我的 40G 硬盘。结果,光盘安装过程看上去很顺利,但是在第一部分安装完成之后,它报告说 C 盘损坏,无法安装。结果我重新启动了系统,发现已经无法从第二个主分区引导了(就停在 BIOS 信息画面那里)。然后我想到以前的一次在第二个分区上安装的经历(那个时候是将 NT 4 和 Win 97 一起装的),那次安装 NT 4 的安装程序把第一个主分区的引导部分修改掉了。我就在想是不是这次安装也是这样,于是就开始担心起我的第一个主分区起来,因为那个分区上面的系统是我正式使用的 Windows 2000,要是被搞坏了就不好了。结果,果然那个启动菜单没有问题,显示的是 Starting Windows 2000。但是进去之后却出现了 NT 4 的启动画面。随之就出现了 NT 4 的蓝屏。这样的情况下,我就在想怎样恢复原来的系统。怎样恢复呢?我想 NT 4 的安装程序可能修改了启动部分的一些程序。但是这些程序并不都是在根目录下的。找起来就麻烦了。我又没有可以直接访问 NTFS 的系统(第一个分区是 NTFS 文件系统)。我试了用 NTFSDOS,结果在 DIR 的时候我发现,无论什么情况下都是按文件名排序,无法让它按日期时间排序。这样也就无法找出要改回来的文件。最后我就先不去管它了。我就想先把 NT 4 安装好再说,也许这样也能访问 NTFS 分区而找到要改回的文件。
但是怎么装呢?我就想了一个办法:既然 NT 4 无法被安装到第二个主分区上,我把分区表中的表项换一换,把第二个分区的表项换到第一个不就可以了吗?结果我就做了这件事。做这件事的时候我先试着用了 Norton Utilities 里面的 DiskEdit。但是发现 DiskEdit 里面没有剪贴板,做这事要先找一个全零的地方,来临时存放一下。而且操作也不方便。不过我还是做了这件事,然后让 PQMagic 来查一下。看上去一切正常,然后就开始安装了。安装过程也没有什么异常,第一遍安装完之后也没有报告任何错误。但是重新启动之后还是无法引导(也是停在 BIOS 信息画面那里)。
关于以上信息的注意:NT 4 安装一般可以有两种方法。一种是运行 WINNT 命令,制作三张启动软盘,然后再进行安装。还有一种是运行 WINNT /B 命令,这样可以不用软盘。但是这种方法在安装到第二个主分区的时候就不管用了。如果这样做,你会发现,就算用 Windows 2000 的引导程序还是无法引导(现象是反复地弹出引导画面)。一定要等软盘启动的第二步安装程序完成以后才有用。另外,如果第一步里面你从光盘运行安装程序,那么软盘启动以后就会要求你插入光盘。如果第一步你从硬盘运行安装程序,那么它就自动从硬盘上读取文件。不过,如果你的安装软盘已经做好了,你可以在退出安装程序以后,运行 WINNT /B 进行第一步的安装。不过第二步还是得用软盘启动。
然后我就想恢复 Windows 2000 了。我先用 DEBUG 把分区表里面表项的顺序换回来。这个顺序本来是对的,物理位置在前的分区占用靠前的表项。后来改过之后就反过来了。现在我把它改回来。不高兴用 DiskEdit 了就用 DEBUG,操作也不简单,但是保证安全(因为有额外的内存可以存放数据)。改回来之前先把分区表在软盘上备份了一下。改好之后再用 PQMagic 和 DiskEdit 都看了一下。没有发现什么问题,就重新启动了。重新启动好了以后,我先试用了 Windows 2000 的 Boot Loader 安装部分(这是从 Windows 2000 安装目录中抽出来的几个文件组成的)试图恢复,结果不行。我想,还可以覆盖安装 Windows 2000。最多再打一下补丁罢了。然后我就开始做这事。结果,DOS 部分的安装完成之后,我发现可以进系统了。我很开心。然后我就把 DOS 部分安装的临时文件删除了。
第二天,2004 年 2 月 18 日,我突然有了一个主意:既然昨天 NT 4 的最后一次安装是成功的,那么可以用 Windows 2000 的 Boot Loader 来引导 NT 4 系统,这样也许就可以继续安装了。结果先用了那个仅 Boot Loader 的安装部分安装了一下,发现第二个分区就可以引导了,但是发现里面的内容第一个分区上的 boot.ini 文件。我查看了第二个分区上的 boot.ini 文件,发现并不一样。另外第二个分区上的 boot.ini 里面的 NT 4 的启动项指向第一个分区,那大概是因为我在安装 NT 4 时把分区表里的分区顺序交换过了,这样我就把它改成第二个分区。然后我比较了第二个分区上的 NTLDR 文件和 Windows 2000 的 NTLDR 文件,发现不一样。我就用 Windows 2000 的那个代替。结果就可以了。然后我就顺利安装了 NT 4 系统。回想起当时的安装情况,这是在将分区表项位置对换过了之后才行的。不知道不通过这种对换是不是也可以这样做。当然这是题外话。之后我就打补丁、装驱动,还装了 USB 的驱动程序(据说是 DELL 发布的,不过不是 DELL 做的)。NT 4 也可以支持 USB 了,呵呵。NT 4 因为微软早就认为是古董了,所以 SP6a 和 2001 年 6 月的 SRP 之后的补丁都是一个一个的,我想这样一个一个装,总不见得都要重启吧,我就一个一个连着装。然后又为了防止它自动重启,我把 Administrators 组的关闭系统权限都给剥夺了,呵呵。然后就这样装着。
另外,昨天晚上我用了 NTFSFlp 这个工具来体验了一下 NTFS 文件系统的软盘。软盘刚格式化好就有 600 多 KB 空间被占用了。后来我就加了一些文件进去,发现 NTFS 的特性被完全支持了:压缩、加密、权限。另外,CHKDSK 是把软盘当 NTFS 来查的。FORMAT 则说在软盘上不支持 NTFS 而无法格式化。还有一个很有趣的现象:当写入软盘的时候,写入的操作不是一次完成的,而是分了几次,而且文件系统的更新操作中有一个要等到几分钟之后才执行。这样一来,软盘如果拿出去,过一会儿操作系统可能会试图写入软盘然后说延迟写入错误。最后发现可能是磁盘缓存把软盘当成硬盘了。还有就是在磁盘管理器里面,加载一个卷到一个 NTFS 卷上的一个目录位置,这个功能还是只对硬盘有效。否则的话,就会发现软盘上面的一个目录连着一个硬盘了(呵呵,只是好玩而已)。
最近,用 NT 4 的时候遇到一件比较难办的事:本来我装的是 SP6a,然后安装了 IE 5.5,后来又安装了调制解调器的驱动程序,再安装了拔号网络服务。我想这样安装好之后应该是要把 SP6a 再安装一遍的。因为安装了新组件,之前安装 SP6a 的时候,这些组件是不会被自动更新的,所以现在应该再安装一遍,可是发现一个不爽的问题:SP6a 看见我装了 IE 5.5,它说机器上已经有高加密(128 位加密)了,它只带 40 位加密,无法安装,于是就不分青红皂白就退出了。它说微软网站上有 128 位高加密的 SP6a,但是我以前是上过微软网站找过的,只有英文版没有中文版,而使用中文版 NT 4 的话是无法安装英文版 SP6a 的,所以我想,这下难道只有先卸载 IE 5.5 才能安装 SP6a 吗?这样也在太麻烦了吧。然后我就去微软网站上查有没有什么可以帮助解决这个问题的。可惜,查了半天,一无所获。本来我想就此偃旗息鼓的。后来,在上网的时候,无意间想起用百度搜索引擎查一查,结果一查就查到了:我查“SP6a 高加密”,第一篇就是有关这个内容的:
发信人: qzhaihai(haihai)
整理人: ipaq(2001-05-28 15:55:25), 站内信件
经常有人在问我,中文NT4到哪里下载128位高加密版本的SP6a。今天,我很高兴碰到了这样一台机子,发现是因为装了IE5.5以后,系统变成加密版的了,再打以前的SP6和SP6a系统就会告诉你要下载高加密版的SP6了。但是,如果你的系统在安装了一些新的服务,或者某个组件、服务删掉重装,你就必须得再打上servive pack,否则,就像我这台域服务,打印时会告诉你打印句柄出错等。于是,我先卸掉了罪魁祸首IE5.5,重起后打SP6,结果被系统告知,你要安装一个低加密版的在一个高加密版的系统上,这将可能引起系统不能正常启动,惨呀!事实上,系统也不会把低加密版的SP6安装上去。而到M$下载,他说只提供英文高加密版的SP6A,用于美国及北美地区。
系统是如何判断你安装了高加密版呢?于是笔者去M$的站点去查找了相关信息,M$说是:NT是查找系统\winnt\system32下的一个文件:schannel.dll,右键点击,在它的版本信息里发现是US AND CANADA USE ONLY,就说明你安装的是高加密版的!关键就在这里了,如果我们把这个DLL给改个名字,是不是系统就不认为它是高加密版的了呢?呵,于是,我小心小心翼翼地把它改成了schannel000.dll,然后就运行SP6i386.exe,哈,系统开始备份以前的文件了,OK!这样,系统又恢复正常了!但是它已经不是高加密版的了!
可能大多数人碰到这种问题,最简单的办法就是把系统格掉重装,可是如果一个系统上装了很多的软件,以及做了很多特殊的设置,重装的工作量将是惊人的。
打完SP6A后,打印子系统恢复正常!
笔者的经常引用一句名言:不到最后绝不轻言牺牲!呵
Windows 2000 默认是自动打开硬盘的 DMA 功能的。那么 Windows NT 4.0 如何做呢?我查了 MSDN,发现是这样的:打开注册表,找到 HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\ScsiPort x ,其中“x”是 IDE 通道的号码。比如说你的硬盘是接在第一个 IDE 接口上的,也就是所谓“Primary Master/Slave”(这个可以看你主板的说明书,以及你主板到硬盘的连线),那么 x 就是 0。看看里面的 DMAEnabled 是不是 0。如果是 0 就是没有打开。然后找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\atapi\Parameters\ 这个注册表键,里面增加一个子键 DeviceX,这个“X”就是对应那个 Scsi x 的那个 x 的数字,比如 Device0,在这个键里面加一个字符串 DriverParameter,内容是 DMADetectionLevel = 0x1。重新启动计算机,看看 Scsi x 键的 DMAEnabled,是不是 1。如果是 1 就表示打开了。
NT 4 里面没有“我的文档”这个桌面图标,在一定程度上不是很方便。于是我想是不是可以通过把 Windows 98 或者 Windows 2000 的这个功能嫁接到 NT 4 上面。我先试了 98 的那个,方法是将 CLSID 和 HKLM\Microsoft\Windows\CurrentVersion\Explorer\Desktop\Namespace 里面的注册表键导出,在 NT 4 里面导入,然后将 mydocs.dll 复制给 NT 4。结果一登录就出错。后来我试了 Windows 2000 的那个,结果登录不出错了,但是双击没有用。最后只能放弃。