|
wuyou是个技术气氛浓厚的论坛。讨论问题,就要把问题的根源挖掘出来。以前总是有人跟踪我,不管我说什么,紧跟的就是骂声一大片。跟踪我的人并没有走开,但我希望不再听到他的骂声,因为我好怕呀!跟踪我可以,但不要再骂了,可以吗?尊敬的跟踪者朋友?
既然那人不再骂了,我就放心地、专注地谈论这个问题。
呵呵,这个问题,说来话长了。两年前,我也遇到了一个笔记本。这个笔记本装的是 XP。但有一次需要装 win98,就把原版的 win98 光盘拿来安装,结果你猜怎么着?98 盘启动死机了!这让我很震惊!不管什么 XP 盘,都能启动,但原装的 98 盘就死掉。我研究为什么死机。结果弄明白了,微软原装的 98 光盘,它在将控制传递给 DOS 之前,先有一段短小的程序要运行,这段程序就是提示用户是否跳过光盘而从硬盘启动。正是在这段程序中死机了。这段程序不长,很容易找到导致死机的指令。就是 int13/ax=4B00h 死机了。这个中断调用就是用来终止 CDROM 仿真的。
后来,用 grub4dos 的 cdrom --init 和 map --hook 来启动 (cd0) 设备,成功启动了这张光盘。由于我们的仿真代码不会故意制造死机(万一死机,就是 bug,一定会解决的,因此说,不会死机的),所以,int13/ax=4B00h 不再死机,这样,98 盘也就顺利启动了。
我那时直觉上就觉得这是微软制造的结果。微软不希望 98 还能运行在大多数机器上,所以,它就像关灯一样,逐步把以前的灯关掉。它应该是收买了硬件厂商,或者干脆就给硬件厂商编写了硬件程序,达到死机的目的。
这次 yjd 所遇到的 DOS 死机,依我看,八成还是微软所为。
有人可能有疑问了。为何不让 FreeDOS 死机?为何不让 dos6.22 死机?为何不让 syslinux 和 grub 死机?我的推测是,dos6.22 不是主流,而 dos7 却是具有主流统治地位的,现今的大多数 dos 程序都以 dos7 为基础。所以,斩掉 dos7 就可以有效地惩治那些基于 dos 的软件。而 freedos,syslinux,grub,都是开源自由的软件,微软先前已经尝试过摧毁开源软件,但证明完全无效。开源软件的最厉害的地方就在于,它是开源的,它很容易通过用户报告和跟踪调试,而找到死机的指令。然后,就躲过了微软设计的圈套和陷阱(假定BIOS 厂家只不过就是傀儡而已,假定它们只是微软的附属品或者代言人)。dos 是微软自己家的产品,微软想让它死,那是很容易的,只要买通 BIOS 厂家便可。让 dos 干净利索地马上死掉,也不符合微软的利益。微软需要的是逐步把它杀死。同时,硬件厂商也需要用 dos 和实模式的软件,彻底杀死 dos 对硬件厂商来说并没有好处。与开源软件的情况不同,微软以这种方式杀死 dos,外界却很难通过调试找到其秘密之所在。因为 dos 的源码没有公开,人们无法利用 dos 的源码编译出一个调试版的 dos来,因此,很难破解其隐藏的秘密。
多说一句,以上只是我的一管之见。是对是错,还要靠你自己的头脑来分析。 |
|