在2025年的实体机上装win98!
まるやま汽修
编辑于 2025年01月05日 16:24

0.效果展示与相关文件

在最开始,先展示一下最终的效果。关联视频:点这里​

所有使用到的驱动和工具:https://pan.baidu.com/s/1eOoKnGDpiICDVQ4cc-ptyw?pwd=e3aq 提取码: e3aq

1. 准备硬件

本次所说的当代实体机,主要是CPU和配套的主板内存“当代”。当然,主板的UEFI固件需要支持CSM,否则连DOS都无法启动。

为了取得3D显示效果,需要英伟达7000系及以下,ATi X系以下——当时还没有被AMD收购——的PCI-E显卡。值得一提的是,英伟达官网的驱动对win98的支持停留在6000系,7000系的只有"ZakMcKracken"修改版82.69驱动支持。但是,这个82.69版驱动至少有两个问题1)虽然作者号称可用于geforce8000系,然而没有人成功过;2)对部分512MB显存的7000系显卡不支持。对于问题2,Rudolph R. Loew(1952-2019)大爷(纪念网站:http://lonecrusader.x10host.com/rloew/rloew.html)提供了两个解决方案,一是修改了以上驱动,限制显存到256MB;二是修改显卡的BIOS使得显存分配模式和win98兼容。如果不在乎3D显示,可以尝试“bearwindows”的通用vbemp驱动(https://bearwindows.zcm.com.au/vbe9x.htm),虽然没有任何3D加速,但至少可以提供高分辨率和高彩色,不挑显卡,但可能会在运行命令行程序时显示崩溃。

硬盘需要SATA接口,并把硬盘挂到其他机器上,以MBR分区表,分出一个小于32G的FAT32主分区并将其置于激活状态。Rudolph大爷也编写了让win98支持LBA甚至1TB以上硬盘的补丁。

键盘鼠标最好是PS/2圆口的。当然,和新平台装xp/win7不同的是,得益于win9x“16/32位混合内核”的特性,没32位驱动?没关系,只要BIOS/CSM/DOS认就可以,win3.x的16位驱动甚至也行。由于UEFI固件/CSM模块能认到USB键盘鼠标,因此win9x也可以。不过,这种兼容模式性能低不稳定,比如鼠标乱跳,卡死,蓝屏等。

声卡方面,正如前面所说,win9x甚至可以利用win3.x的16位驱动,因此可以直接尝试为win3.x编写的HDA驱动——作者比较害羞,readme中找了半天没有找到其网名,根据域名可能叫“turkeys4me”(http://turkeys4me.byethost4.com/programs/)。但兼容模式同样不稳定,在一块b75上这个驱动运行尚可,但在本次测试的平台上只会蓝屏。想要尝试的只能自己试验了。另外,Rudolph大爷写了一个模块可以让win98用起来给xp写的驱动,怹给的示例就是给win98装HDA声卡驱动。还有一种可行的思路是用PCIE转PCI(如ASM1083),去接如CM8738这样在win98下有驱动的PCI声卡,但没测试过。

网卡方面,只能尝试几种PCI-E的网卡,螃蟹家大概只有RTL8111/8111B​,博通家早期BCM57xx系列还有小马家早期yukon 88Exxxx系列。另外,Rudolph大爷写的,可以让win98用起来给xp写的驱动,来让win98试着用一些xp下有驱动的网卡,但我没测试过。也可借助也可以尝试PCIE转PCI再接经典的8139,但也没测试过。

最后,数据转移方面,虽然任何win98都不支持当代电脑的USB3 xHCI控制器,但还是“只要CSM模块能认就没问题”原则,在开机前把格式化成FAT32的MBR分区表U盘插进去,进win98就会识别到,关机后再拔出U盘即可。虽然借用MS-DOS访问U盘速度慢不稳定,但转移些小文件也够用了——下图就是如此转移出来的,可见U盘作为D盘正工作在兼容模式,而且把原来D盘顶成了E盘,导致存在原D盘的壁纸不见了:

本次测试平台如下:

CPU —— 英特尔十一代酷睿i7-11700F,因为赶不上intel7节点于是成为倒吸的一代,八核心十六线程(当然win9x只能用一个线程)和十一代i9比缩了缓存和频率,叫声“i9级”问题不大

主板 —— 带ps2口的某硕H510

显卡 —— ATi X600SE,和Geforce 6200同台的虾兵蟹将

内存 —— 不知名马甲DDR4-2666 8G,但是长鑫颗粒

系统盘 —— 某驰多年前铁甲蘸酱60G,已无铁甲。分了两个20G的主分区,一个装系统,另一个备用。

合影如下:

2. 准备软件

首先,我们需要在硬盘中安装MS-DOS 7.1或8.0操作系统,并使得himem.sys扩展内存驱动被正确加载。此处教程很多不再赘述。

然后我们需要将win98安装文件复制到DOS系统可访问的分区。一个典型的Win98光盘镜像文件结构如图:

我们只需要将“win98”文件夹(红圈所示)拷贝到DOS下可访问的分区即可。如图,其中DOS文件夹是DOS需要的工具和驱动。

另外,我们需要把所用到的驱动,补丁,软件准备好。主要有:

a 不同版本的扩展内存(XMS)管理软件

b 4GB内存补丁Patchmem

c vcache报错补丁cregfix

d cpu过快报错补丁 Patcher9X

e pci总线驱动

f AHCI硬盘控制器驱动

g 对应的显卡驱动

以上是几乎每台机器都必须要有的。其他驱动如声卡驱动网卡驱动有需要可选。

至于USB总线驱动,当代的电脑都是xHCI结构的控制器,而网上形形色色win9x下的USB驱动最多只到EHCI,所以没有意义。

其他常用的软件有:

Microsoft Office——最后支持98的版本是OfficeXP;

Adobe Photoshop——最后支持98的版本是Photoshop7;

Adobe Acrobat Reader——最后支持98的版本是Acrobat Reader6;

Microsoft Internet Explorer——最后支持98的版本是IE6;

DirectX——最后支持98的版本是9.0c,但必须是2006年12月的那个版本,再往后就不支持;

7z——最后支持98的版本是9.22;

Windows Media Player WMP媒体播放器——最后支持98的版本是WMP9;

Firefox——最后支持98的版本是2.0.0.20。

另外,通过著名的KernelEx(https://sourceforge.net/projects/kernelex/)扩展包,可以让win98支持新得多——当然相当于今天也是老掉牙——的软件。

本次用到的驱动和补丁已打包(https://pan.baidu.com/s/1eOoKnGDpiICDVQ4cc-ptyw?pwd=e3aq 提取码: e3aq)(https://pan.baidu.com/s/18HXBmLeZKcBu1Uw0fEgabQ?pwd=2v93,提取码2v93)

3.安装win98——第一阶段

把硬盘装到待安装的机器上,开机,成功进入DOS环境后,切换到放有win98的文件夹,输入“setup”回车,然后就……无法安装,这是怎么回事呢?原因是win98第一阶段安装其实是基于win3.x 的“PE”环境,该环境在当代电脑上非常挑扩展内存管理器。解决方法是多试几种扩展内存管理器,包括不限于win3.2带的himem.sys,dos8.0内嵌的扩展内存管理,freedos的HimemX等等。

在这台电脑上,最终dos8.0内嵌的扩展内存管理生效了,成功地开启了win98第一阶段安装:

重启!

4.安装win98——第二阶段

重启之后是熟悉而古老的蓝天白云winlogo,但等等,怎么这么慢一直是这个界面?

如果您也卡在这个界面不动,恭喜您,这次轮到win9x的保护模式和扩展内存管理不兼容了!解决方案还是换,在这台机器上,源于Freedos的HimemX可用,然后:

不过为什么是“内存不足”?这就是win98经典的1GB限制了,解决方法有四:

其一,在windows安装文件夹下(通常是根目录下的windows)找到一个system.ini的文件,在[386enh]一节下添加"maxphyspage=10000",10000也可以用其他小于4万的数字代替,其中10000代表256MB内存,20000代表512MB内存,40000代表1GB内存:

其二,如果是用HimemX做扩展内存管理,可以添加“/max=xxxxx"选项来现限制内存,其中xxxxx是kb数,如需限制到128MB,就是”/max=131072“。

其三,打4GB内存补丁

其四,只插1GB以下的内存条。

解决了1GB问题,接下来又遇到了困难——vcache错误,从报错信息的乱码可见当时微软把报错信息也汉化了,但可惜出错后无中文字体,只能显示乱码,本地化蓝屏信息直到:(时代才复出:

根据“Something not serious”的研究,当代有的UEFI BIOS的CSM模块并不像传统的BIOS那样清空几个寄存器,导致vcache去写不可写的内存部分,于是报错。这位老哥写了一个小工具替CSM模块清空了这几个寄存器,成功解决了vcache报错。该工具只需在加载windows前运行一次即可——通常的做法是把它添加到autoexec.bat中每次开机自动运行。

解决了扩展内存兼容性,1GB限制以及vcache报错,我们终于得以看到“真正”的win98并进行第二阶段安装:

重启,古老的win98欢迎界面就出现了!

5.安装补丁和驱动

首先,为了彻底解决1GB限制,需要运行4GB补丁修补VMM32.VXD。方法是把补丁文件——patchmem复制到win98安装盘,开机进纯DOS环境,运行该文件即可。重启或直接“win”命令进入win98环境,就可以看到win98突破1GB限制了,同时,可以看到win98把i7识别成大号奔三,加上win98也是个奔三系统,令人忍俊不禁(

虽然在本机上暂时未出现,但是在很多新平台上,由于CPU过快,在登录界面就会报错。JHRobotics老哥开发了Patcher9X(https://github.com/JHRobotics/patcher9x.git)补丁解决了这个问题。这个补丁也是作用在VMM32.VXD文件上,需要在patchmem补丁运行后再执行,顺序相反则patchmem不生效!Patcher9X补丁使用方法很多,本次使用的是把硬盘挂在其他机器上,直接修补的流程:

解决了稳定性问题接着安装驱动。我们知道,显卡,AHCI硬盘控制器,USB总线控制器,网卡等等都是挂在PCI-E总线上的,win98不能识别新主板的PCI-E总线,所以没法安装它们的驱动。好消息是,由于PCI总线和PCI-E总线软件模型上的兼容,可以手动安装PCI总线驱动代替:

坏消息是,win98自带的PCI总线驱动有BUG,遇到第一个无法驱动的设备就停止检索其他挂在PCI-E总线上的设备。这对于如这台机器一样——第一个PCI-E设备就无法驱动——的电脑是致命的,这意味着即使成功驱动了PCI-E总线,我们想安装驱动的设备一个也看不到,还是装不了驱动。

好在PCI总线有相应的新驱动。只需把PCI.VXD和PCIMP.PCI这两个文件事先放在c:\windows\system文件夹下,再手动安装PCI总线驱动,注意在提示“是否保留文件”时选是即可:

PCI总线驱动装好,立刻出现了一大堆新设备。此时win98还用MS-DOS的方式访问磁盘——这也是win9x家族“16/32位混合”的地方,当然上面也提到这种模式稳定性欠佳,因此首先需要装AHCI驱动。该驱动开发者和patchmem是同一个人。

安装方法是,在右键“我的电脑”或控制面板中打开系统属性,win98设备管理器(不同于XP以后是一个单独的MMC控制台)里找没有驱动的“PCI Card”设备,选中(界面1),点属性,属性对话框中点“重新安装驱动程序“(界面2),按提示即可,不要忘了在搜索驱动程序页面中把包含AHCI驱动程序的文件夹包含进去(界面3),接着如果能出现找到合适驱动的界面下一步即可(界面4)。装完后需要重启。如果没出现界面4说明这个“PCI Card”不是AHCI控制器,需要换一个“PCI Card”再试试。

以上的流程也适用于其他硬件的安装。

装好AHCI驱动后,就可以装显卡驱动了。和后来的windows有一点不一样的是,通过BIOS/CSM功能的“标准显示适配器(VGA)”有时会和“Standard PCI Graphics Adapter(VGA)”——能装显卡驱动的“真身”——冲突,需要把“标准显示适配器(VGA)”手动卸载,才不会影响显卡驱动的发挥。

显卡驱动装完,终于可以支持1080P输出:

最后,彩千圣花音是不可分离的!

希望大家在新平台上玩98玩得开心~