拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

VMware 虚拟机安装 Windows 98 SE:全流程配置、驱动与避坑指南

VMware 虚拟机安装 Windows 98 SE:全流程配置、驱动与避坑指南

上个月有位做设备维护的老哥找到我,说他手上有一套 2000 年前后的工控组态软件,只能在 Windows 98 SE 上跑,装到新系统上连安装程序都点不开,厂家早就停止维护了,重买一套授权要六位数。他的诉求很简单:能不能在一台新电脑上把这套老软件完整跑起来,顺便把当年的说明书、驱动盘、加密狗都接上。这类需求这几年其实越来越多——老游戏、老课件、老财务软件、老设备的调试工具,都卡在那个年代的操作系统上。折腾了大概三个晚上,我把整套流程跑通了,中间踩的坑比想象中多得多:SATA 磁盘装不上、重启后又被软盘引导回 DOS、装完驱动分辨率还是 640x480、宿主机死活访问不到虚拟机里的页面。

这篇文章就把这次VMware 虚拟机安装 Windows 98 SE的完整过程拆开讲清楚。里面涉及的不只是点几下"下一步",更多是每一项虚拟机参数背后的取舍——为什么磁盘必须是 IDE、为什么内存给多了反而进不去系统、为什么新版 VMware Tools 根本装不上。适合三类人看:手上有只认 98 的老软件不得不救的、想重温当年单机游戏但不想留旧电脑的、以及需要给老设备做兼容性验证的技术人员。哪怕你完全没碰过虚拟机,跟着走也能自己搭一台出来。

1. 先把用途想清楚:Windows 98 SE 虚拟机到底解决什么问题

动手之前先回答一个问题:这台虚拟机将来干什么用?这个问题决定了后面一大半配置。很多人一上来就装,装完发现分辨率上不去、传不了文件、网络不通,回头又得重装一遍,白折腾。

1.1 三类典型需求,配置重点完全不同

我把这些年见过的需求归成三类,你可以对号入座:

  • 老软件运行环境:财务、进销存、工控组态、医疗设备调试工具。这类软件通常要求 98 SE 加特定的运行库,很多还带并口或串口的硬件加密狗。重点在于外设直通和稳定性,网络反而次要。
  • 老游戏怀旧:98 到 2002 年之间的单机游戏,尤其是依赖 DirectX 6/7、依赖 Sound Blaster 音效的那些。重点在于显示驱动、声卡驱动、鼠标手感,以及 CPU 别太快导致游戏跑飞。
  • 兼容性验证:开发或者测试岗位需要确认某个程序在 9x 环境下会不会出问题。重点在快照和快速回滚,因为要反复装删。

我在表弟那台机器上装的第一版就是为了跑老游戏,结果因为分配了 4GB 内存,安装程序直接报内存不足,卡在蓝色文本界面。后来降到 256MB,一切正常。这就是典型的"给多了反而坏事"。

1.2 为什么是 98 SE,而不是 Windows 95 或者 Me

这三个系统在虚拟机里的安装难度差别挺大,值得先说清楚。Windows 95 的内核更老,对现代虚拟硬件的容忍度更低,安装过程中报错的概率明显高于 98;Windows Me 虽然界面新,但它引入了系统还原和更激进的驱动模型,兼容性反而比 98 SE 差,很多老游戏在 Me 上跑起来会有声音问题。

Windows 98 SE 是那个年代的"最终稳定版":USB 支持相对成熟、DirectX 支持到 9.0c、自带驱动覆盖面广、FAT32 支持完善。换句话说,它是兼容性和易装性之间的最佳平衡点。如果你纠结装哪个,直接选 98 SE,不用犹豫。

1.3 联网这件事,最好一开始就定下来

老软件分两种:一种是纯单机的,装上就能用;另一种需要连局域网内的服务器或者校验授权。这决定了你在虚拟机网络那里选桥接还是仅主机,也决定了要不要在 Win98 里折腾协议栈。

我的建议是:第一次安装时把网卡加上,但先设成"仅主机"模式。这样虚拟机只能和宿主机通信,不会往局域网里广播老旧的协议报文,也不会被公司网络里的安全设备当成异常设备处理。等系统装稳了、驱动补齐了,再根据实际需要改成桥接或者 NAT。

提醒:Windows 98 自带的 IE 最高只能到 IE6,TLS 支持停留在 1.0,现在的 HTTPS 网站基本都打不开。别抱着"用虚拟机里的 98 上网"的想法,会非常失望。

2. 开工前的准备:镜像、Workstation 版本、宿主机条件

准备工作没做好,后面全是坑。这一节说的三件事,是安装失败率最高的三个源头。

2.1 安装介质:用原版光盘做 ISO,别碰魔改版

Windows 98 SE 的安装介质分零售版和 OEM 版,两者最大的区别是OEM 版的光盘可以直接引导启动,零售版不行,必须先用启动软盘引导。如果你手上只有零售版镜像,就得额外准备一张 Windows 98 启动盘镜像(通常是 .img 或 .ima 格式,1.44MB)。

具体做法:把原版安装光盘放进光驱,用 ImgBurn 或者系统自带的刻录功能把它读成 ISO 文件保存到宿主机上。这一步别省事去网上找什么"精简版""美化版""集成驱动版",这类镜像被裁掉了组件、改过引导记录,在虚拟机里出问题的概率非常高,而且你根本不知道该往哪个方向排查。

关于安装密钥,我这边不方便提供,请使用你自己手上介质附带的授权信息。Windows 98 SE 的密钥是五组五位字符的格式,输入时注意区分数字 0 和字母 O,这个当年坑过无数人。

启动盘镜像的准备也要提一句:启动盘镜像里包含 CD-ROM 驱动程序,这很关键。DOS 本身不认识光驱,必须靠这张启动盘加载驱动,才能从光盘上运行安装程序。如果你用的是 OEM 可引导光盘,这一步可以跳过。

2.2 Workstation 版本怎么选:新版不一定顺手

这是很多人忽略的一点。VMware Workstation 新版本对 9x 系列的支持是在逐步退化的:客户机操作系统列表里的 Windows 98 条目,在不同版本里时有时无;随安装包附带的 VMware Tools 早就不再提供 9x 版本的安装程序了。

我的实测结论是:Workstation 15 到 17 都能装成 Win98 SE,但都需要手动补驱动。如果你手头正好有更老的版本(比如 12、14),装起来反而更省事,因为那个时期的 Tools 包里还留着面向 9x 的组件。没必要为了这个专门去装老版本,新版本配合手动装驱动一样能跑得很好,只是多花二十分钟。

另外提醒一句:Workstation 和 Player 的区别在于 Player 不能新建虚拟机和修改大部分硬件配置。你要装老系统,必须用 Workstation,Player 会让你在"改磁盘类型"这一步直接卡死。

2.3 宿主机这边要预留什么

宿主机是 Windows 10 或者 Windows 11,都能跑,问题不大。需要注意几个细节:

  • 硬盘空间:虚拟磁盘按 4GB 算,加上快照和安装文件,至少要留 20GB。快照是空间杀手,后面会专门讲。
  • BIOS 里的虚拟化开关:Intel 平台叫 VT-x,AMD 平台叫 SVM,必须在 BIOS 里打开,否则虚拟机启动会报错或者性能奇差。
  • 杀毒软件的实时防护:有些安全软件会拦截 VMware 的驱动加载,表现为虚拟机启动黑屏或者报"无法打开虚拟机配置"。如果遇到,把虚拟机的存储目录加入白名单。
  • Hyper-V 冲突:Windows 10/11 专业版如果开了 Hyper-V 或者"虚拟机平台"功能,会和 VMware 抢底层虚拟化,表现是虚拟机跑起来异常慢。真要装 Win98 这种老系统,把 Hyper-V 相关的功能关掉会更稳。

还有个小细节:如果你的宿主机用了高分辨率屏幕(比如 4K),虚拟机窗口里的 640x480 会小得看不清。这个不是故障,是 Win98 没装显示驱动时的正常表现,后面装完驱动就好了。

3. 新建虚拟机的每一项设置,为什么要这么填

到了最关键的部分。我在这一页向导上停留的时间,比后面装系统的时间还长,因为每一个选项填错了,都可能在安装过程中或者安装完成后才暴露出来,那时候改就要重来。

3.1 客户机类型与磁盘:IDE 是唯一稳妥的选择

客户机操作系统这一栏,先选 Microsoft Windows,然后在版本下拉里找。不同版本的工作站软件里,98 的条目位置不太一样,有的还有独立的 Windows 98,有的只剩合并项,还有的干脆被归到"其他"里。找不到就直接选"其他",影响不大,因为这个选项主要影响的是推荐配置,真正的兼容性靠后面的硬件类型决定。

真正要命的是磁盘类型。默认给你的是 SCSI 或者 NVMe,必须改成 IDE。原因是 Windows 98 的内核里根本没有内置 SCSI 和 NVMe 的控制器驱动,安装程序启动后会在"检测硬盘"那一步直接告诉你找不到可用的磁盘。IDE 是 9x 原生支持的接口,不需要额外驱动。

虚拟磁盘容量的选择有个权衡:

容量文件系统适用场景注意点
2GBFAT16极老软件、需要 FAT16 兼容浪费空间少,但装几个游戏就满
4GBFAT32大多数场景,推荐分区时要在 FDISK 里启用大硬盘支持
8GB 及以上FAT32要装大量老游戏首次格式化和碎片整理耗时明显变长

磁盘文件的存放方式选"将虚拟磁盘存储为单个文件",性能比拆分成多个文件略好一点,拷贝的时候也干净。如果你以后要用移动硬盘搬运,而移动硬盘是 FAT32 格式,那就得选拆分,否则拷不进去。这一点很多教程不提,但实际搬运时特别容易踩。

还有一个选项是"立即分配所有磁盘空间"。勾上之后,虚拟机在创建时就把 4GB 实际占满,好处是运行时的磁盘碎片少、写入性能稳定;不勾则是按需增长,省空间但性能略打折。我的建议是勾上,毕竟 4GB 在今天不算什么。

3.2 内存、CPU、显存:给多了反而出事

内存这一栏是最容易想当然的地方。我见过太多人觉得"宿主机有 32GB,给虚拟机分 4GB 不过分吧",结果安装程序跑起来就报错。

Windows 98 系列有一个著名的问题:物理内存超过 512MB 后,启动时可能提示内存不足或者直接无法进入系统。原因是 9x 的 VCache 管理机制在计算缓存大小时会溢出,导致初始化失败。所以虚拟机内存给128MB 到 256MB 最合适,跑老游戏和老软件完全够用。真需要更多,后面可以在系统内用 msconfig 里的内存限制选项处理,但没必要一开始就把自己逼到墙角。

CPU 数量设成1。Windows 98 是单处理器内核,不支持多处理器,给它两个核心只会让虚拟机在启动时多绕一圈,没有任何性能收益。

显存给 8MB 就够,最多 16MB。给再多,没有驱动也发挥不出来,装上驱动之后 8MB 也足够跑 1024x768 的 32 位色。

3.3 光驱、软驱与启动顺序

光驱选 IDE 接口,并且一定要勾上"启动时连接"。软驱需要挂载前面准备好的启动盘镜像文件,格式支持 .img 和 .flo。

启动顺序上,虚拟机的固件默认是"软驱优先还是硬盘优先"取决于配置。这里有个很多人栽跟头的地方:

装系统时你需要从软驱或者光盘引导,所以要把软驱/光驱排在硬盘前面。但是安装程序第一次重启之后,如果你不改回来,它会再次从软盘引导,又回到 DOS 提示符。你会看到屏幕上光秃秃一个A:\>,然后把软盘抽掉再重启,一切正常——但第一次遇到的时候真的会以为自己装崩了。

我的做法比较干脆:安装过程中用软盘引导进入 DOS 开始装,等安装程序第一次自动重启、屏幕变黑的那一瞬间,立刻在虚拟机设置里把软驱断开(或者把启动顺序改成硬盘优先)。后面的几次重启就都正常了。

3.4 网卡、声卡、USB:三个最容易被忽略的选项

网卡的型号选择是个关键点。虚拟机的高级设置里,网卡类型能选 e1000、e1000e、vmxnet3 等等。对 Windows 98 来说,要选 AMD PCnet 兼容的那个(vlance)。原因很直接:这个虚拟网卡在 Windows 98 SE 的驱动库里是有内置驱动的,系统安装时就能自动识别;而 e1000 系列需要额外的驱动文件,vmxnet3 更是必须配合 VMware Tools,而 9x 版的 Tools 早就找不到了。

声卡选Sound Blaster 16。这是当年 9x 时代的事实标准,Win98 自带的驱动就能驱动它,装完系统基本直接有声音。另一个选项是 ES1371,也能用,但对老游戏的兼容性略逊一筹,尤其是那些直接调用 SB16 端口的老游戏。

USB 控制器保留默认的就行,但别指望用它传文件。Windows 98 SE 的 USB 支持很不完整,加上虚拟机里缺少对应的增强驱动,插 U 盘大概率是识别不出来或者识别出来但读取失败。传文件的事走后面第六节的办法。

最后还有一个容易被忽略的:打印机端口和串口。如果你的老软件需要硬件加密狗,先确认加密狗是并口、串口还是 USB 的。并口和串口可以尝试在虚拟机里添加对应端口,宿主机如果没有物理端口就用不了;USB 加密狗在 Win98 虚拟机里基本没戏。这个必须在动手前确认,否则装完发现激活不了,全白干。

4. 从 FDISK 到第一次进桌面:安装过程实录

配置填完,点开机,真正的重头戏开始。这一段我把实际操作的顺序和中间的关键节点都记下来,你可以对照着走。

4.1 用启动盘分区与格式化

虚拟机从软盘启动后,会出现一个菜单,通常有几个选项:启动时不加载光驱驱动、启动时加载光驱驱动、查看帮助。一定要选加载光驱驱动的那一项,否则后面的安装程序从哪儿来?

进入 DOS 提示符后,先分区:

fdisk

第一个问题是"是否启用大硬盘支持",选 Y,这样后面才能用 FAT32。然后在主菜单里选"创建 DOS 分区或逻辑驱动器",再选"创建主 DOS 分区",把整块盘分给主分区。分完后回到主菜单,选"设置活动分区",把 1 号分区激活——这一步千万别漏,不激活的话重启后会提示没有可引导的操作系统。

分完区必须重启,让分区表生效。重启后再进入 DOS,格式化:

format c: /s

/s参数是写入系统文件,让这个分区可引导。4GB 的盘格式化大概要十几秒,如果卡住不动超过两分钟,说明磁盘类型可能设错了,回去检查是不是 IDE。

格式化完成后,切到光驱盘符。启动盘通常会把光驱分配成 D 或者 E,屏幕上会打印出实际盘符,注意看:

d: setup.exe

4.2 SETUP 的几个命令行参数

setup.exe后面可以带参数,能省掉不少麻烦:

  • /is:跳过安装前的磁盘扫描。磁盘刚格式化过,扫描纯属浪费时间。
  • /im:跳过内存检查。在虚拟机里内存是固定的,不需要检查。
  • /ie:跳过创建启动盘。你都已经有一张启动盘镜像了,没必要再制作。

所以直接敲:

setup.exe /is /im /ie

安装程序启动后会先复制一部分文件到硬盘,然后第一次重启。就在这次重启的黑屏瞬间,去虚拟机设置里把软驱断开,或者改成硬盘优先启动。这一步做对了,后面就顺了。

接下来是图形界面的安装过程:选择目录、输入密钥、选择安装类型(选"典型")、输入用户名和组织名、选择时区,然后它会问你是否安装网络组件。这里建议先跳过或者只选最基本的,等系统装完、驱动补齐之后再回头配置网络,会清晰得多。

4.3 首次进桌面必做的三件事

第一次看到 98 的桌面那一刻挺有成就感的,但先别急着装软件。有三件事必须立刻做,按顺序来:

第一,装或者调显示驱动。如果桌面是 640x480、16 色,图标大得像砖头,说明系统用的是标准 VGA 驱动。这时候右键桌面空白处,进"设置",你会发现颜色深度最高只有 16 色,分辨率也调不上去。这是正常的,解决方式在下一节。

第二,检查设备管理器。右键"我的电脑"进属性,看设备管理器里有没有带黄色感叹号的设备,尤其是显示适配器、声音设备、网络适配器这三类。有感叹号就记下来,后面针对性处理。

第三,关掉几个没用的东西。Win98 默认会跑"计划任务"和一堆后台服务,在虚拟机里纯属浪费资源。另外把屏幕保护程序和电源管理都关掉,不然虚拟机锁屏后唤醒容易出问题。

4.4 装完后的第一份快照

系统装好、驱动补齐之前,先在宿主机上打一个快照(菜单里叫"快照"或者"拍摄快照"),名字写"基础系统-未装驱动"。

这个快照的价值在于:万一后面装驱动把系统搞崩了,你能一键回到干净状态,不用再花二十分钟走一遍 FDISK 和 SETUP。快照是这台虚拟机最值钱的东西,具体怎么规划在第八节展开。

5. 驱动补齐:没有现成 VMware Tools 时怎么办

这是整个流程里最需要耐心的一段,也是很多教程语焉不详的地方。新版 VMware Workstation 里点"安装 VMware Tools",虚拟机里挂载的那个 ISO 里面根本没有面向 9x 的安装程序,你会被卡在这里。

5.1 9x 版的 VMware Tools 为什么找不到了

VMware Tools 对客户机操作系统的支持是跟着主线版本走的。较老的工作站版本(大致 6.x 及更早)附带的 Windows 版 Tools 安装包,里面还包含面向 Windows 95/98 的组件;从某个版本开始,这部分被彻底移除,只保留 NT 内核及以上的支持。

所以你点"安装 VMware Tools"之后,挂载的 ISO 里只有面向现代系统的 MSI 包,跑到 Win98 上当然装不了。这个报错和热词里那个"继续运行脚本未能在虚拟机中成功运行"是同一类问题——Tools 和客户机系统对不上,不是你的操作有问题。

那怎么办?两条路:一是从你自己手上老版本 Workstation 的安装介质里把那个 ISO 提取出来;二是放弃完整的 Tools,只手动补最关键的三个驱动。我走的是第二条路,因为完整版 Tools 在 9x 上能提供的额外功能(共享文件夹、拖放、无缝模式)本来也用不了。

5.2 显示驱动:从 16 色 640x480 解脱出来

最关键的就是显示驱动。没有它,分辨率锁死在 640x480、16 色,装个窗口大一点的软件就直接超出屏幕。

在 Windows 98 里手动指定驱动的流程是这样的:右键桌面进属性,切到"设置",点"高级",在"适配器"选项卡里点"更改",然后选择"从列表中选择"或者"从磁盘安装",把路径指向驱动所在的位置。

如果你从老版本的 Tools ISO 里提取,驱动文件通常在一个 video 或者 display 之类的子目录里,包含一个 INF 文件。指定 INF 文件所在的目录,系统会列出"VMware SVGA II"之类的设备,选中安装即可。

装完重启,再进显示设置,你会发现颜色深度可以选到真彩色 32 位,分辨率能上到 1024x768 甚至更高。这里有个细节:分辨率别贪高。Win98 时代的软件界面都是按 800x600 或 1024x768 设计的,开到 1920x1080 会让很多老软件界面里的按钮和文字小到没法点。1024x768 是最舒服的档位。

另外一个容易忽略的点:安装显示驱动后,如果宿主机是全屏模式运行的虚拟机,鼠标指针的形状可能会变得很奇怪。这是 VMware 的指针优化和 9x 的鼠标驱动配合问题,不是故障,切回窗口模式一般就正常了。

5.3 声卡驱动:SB16 优先

如果虚拟机的声卡设成了 Sound Blaster 16,那基本上不需要你操心,Win98 安装时会自动识别并加载驱动。装完进"控制面板 → 系统 → 设备管理器",展开"声音、视频和游戏控制器",看到 Creative Sound Blaster 16 之类的条目而且没有感叹号,就说明成了。

如果没声音,按这个顺序排查:

  1. 虚拟机设置里确认声卡是勾选状态、类型是 Sound Blaster 16。
  2. 虚拟机右下角或者设置里确认"已连接"。
  3. 宿主机本身的音量不为静音。
  4. 设备管理器里有没有"其他设备"下的未知设备,那可能就是声卡没识别出来,手动添加。

ES1371 也行,但遇到老游戏没声音的情况,我个人经验是先换回 SB16 试试,成功率明显更高。原因在于那个年代的很多游戏是直接操作声卡端口的,SB16 的端口和 IRQ 配置最标准。

5.4 鼠标、时间同步和其他增强组件

鼠标这一项其实不用太担心。虚拟机的虚拟鼠标是 PS/2 兼容设备,Windows 98 自带 PS/2 鼠标驱动,不装任何额外组件也能正常移动和点击。如果你遇到指针漂移、位置对不上的情况,通常在虚拟机设置里关掉鼠标优化选项就能缓解。

时间同步是个长期存在的小麻烦。Windows 98 的时钟精度本来就一般,在虚拟机里跑起来误差会更明显。装了完整 Tools 的系统可以启用主机时间同步,但咱们这种情况没有。我的处理方式是:每次启动虚拟机后手动校一次时间,用命令行:

date 2026-01-15 time 09:30:00

听起来土,但比起在 9x 上折腾 NTP 客户端要省事得多。如果你确实需要精确时间,可以找找当年流行的小型对时工具,但注意这类工具大多只能走老式的时间协议,能不能连上取决于你的网络环境。

6. 宿主机和 Win98 之间怎么传文件

这是使用阶段最频繁的操作,也是新手最容易卡住的地方。Win98 里想装个驱动、拷个游戏,文件得先进得去。

6.1 共享文件夹为什么在 9x 上不可用

VMware 的共享文件夹功能依赖客户机里的一个组件,而这个组件只有面向 NT 及以上系统的版本。也就是说,在 Windows 98 虚拟机里,你没有"共享文件夹"这个选项可用。同理,从宿主机直接拖拽文件到虚拟机窗口、复制粘贴文本,这些便利功能在 9x 上统统无效。

所以必须换思路,用那个年代本来就存在的传输方式。

6.2 三个最省事的土办法

办法一:做成 ISO 挂载。这是我最常用的。把要传的文件用 ImgBurn 或者类似的工具做成一个数据 ISO,然后在虚拟机设置里把光驱指向这个 ISO,Win98 里就能像读光盘一样读它。优点是速度快、不需要网络、读写都不会出错。缺点是要传新文件就得重新做一个 ISO,适合批量传一次性的东西。

办法二:软盘镜像。用 WinImage 之类的工具做一个 1.44MB 的 .img 文件,把文件塞进去,虚拟机里挂载软驱。优点是简单,缺点是容量只有 1.44MB,装驱动勉强够,装游戏想都别想。

办法三:加第二块虚拟磁盘。给虚拟机加一块 IDE 磁盘作为从盘,进 Win98 分区格式化之后,关机。然后在宿主机上用 Workstation 的"映射虚拟磁盘"功能,把这块带 Win98 文件系统的虚拟磁盘挂到宿主机的一个盘符上,直接往里拖文件。用完解除映射,再启动虚拟机。这个办法最适合需要长期双向传文件的场景,尤其是文件比较大、要来回改的时候。

6.3 走网络:HTTP 服务器比文件共享省心

如果你想让传输自动化一点,走网络是最舒服的。但这里有个现实问题:现在的 Windows 10/11 默认关闭了 SMB1 协议,而 Windows 98 只会用 SMB1 和 NetBEUI。你要让 98 访问宿主机共享,就得在宿主机上把 SMB1 重新打开——这是有安全代价的,我不建议在办公电脑上这么干。

更省心的办法是在宿主机上跑一个简单的 HTTP 文件服务器。如果你装了 Python,一行命令就够了:

cd /d D:\share python -m http.server 8000 --bind 192.168.1.100

把192.168.1.100换成宿主机在虚拟机网络里对应的那个地址(如果用的是仅主机模式,就是 VMnet1 的地址;NAT 模式则是 VMnet8 的地址)。然后在 Win98 里打开 IE,地址栏输入http://192.168.1.100:8000/,就能看到文件列表,点一下直接下载。

这个方式的好处是零配置、不涉及老旧协议、宿主机不需要开任何共享服务。缺点是不能上传,只能单向下载。要上传的话,在 Win98 里跑一个老版本的 FTP 服务端(比如当年的小型 FTP 工具),宿主机用客户端连上去就行。

注意:Win98 的 IE 对中文文件名和某些编码支持不好,共享目录里的文件名尽量用英文和数字,能省掉一堆乱码问题。

6.4 让宿主机访问虚拟机里的服务

反向操作也常常需要,比如你在 Win98 里装了个老版本的 Web 服务或者数据库服务,想在宿主机上用浏览器看效果。

如果虚拟机用的是桥接模式,那就简单了,虚拟机会从路由器拿一个局域网 IP,宿主机直接用这个 IP 访问,和访问同网段的另一台电脑完全一样。

如果虚拟机用的是NAT 模式,宿主机到虚拟机的方向是被挡住的,需要在 VMware 的"虚拟网络编辑器"里做端口映射:找到 NAT 设置,添加一条转发规则,把宿主机的某个端口映射到虚拟机的目标端口。比如把宿主机的 8080 映射到虚拟机的 80,之后在宿主机浏览器里访问http://localhost:8080就能看到虚拟机里的页面。

如果用的是仅主机模式,虚拟机和宿主机在同一个虚拟网段内,直接访问虚拟机的 IP 就行,不需要端口映射,但虚拟机出不了外网。这也是为什么我在第一节建议第一次装系统时先用仅主机模式——简单、稳定、不惹麻烦。

7. 报错合集:现象、原因和排查顺序

这一节是全文最实用的部分。我把这次以及过去几次折腾中遇到的报错整理成表格,然后是每个问题的详细排查链路。

现象最可能的原因处理方向
安装程序提示找不到硬盘磁盘类型不是 IDE关机改磁盘类型,重新分区
重启后又回到 A 盘提示符软驱还在启动顺序前面断开软驱或改为硬盘优先
提示内存不足无法初始化虚拟机内存超过 512MB降到 256MB
启动时报 Windows 保护错误虚拟 CPU 频率过高见 7.2 的处理
设备管理器里没有网卡网卡类型选了 e1000 或 vmxnet3改成 AMD PCnet
分辨率调不上去显示驱动没装见 5.2
虚拟机占用一个 CPU 核心 100%9x 内核不支持空闲指令属正常现象,见 7.5

7.1 安装阶段卡住或反复重启

安装程序在"正在检测硬件"这一步停留几分钟是正常的,尤其是宿主机性能比较好的时候,反而可能因为时序太快导致安装程序内部循环变慢。如果超过十分钟毫无进展,先看虚拟机的状态栏有没有磁盘读写活动。有活动就继续等,没活动就说明卡死了。

卡死的常见原因有三个:磁盘类型不对、内存超限、安装介质有问题。按这个顺序排查:先看虚拟磁盘是不是 IDE,再看内存是不是 256MB,最后换一个安装源重试。

还有一种情况是安装到一半重启后黑屏,但虚拟机进程还在跑。这种往往是显示模式切换失败,等一两分钟,如果还没画面,强制重启一次,通常能接着往下装——安装程序会在重启后继续未完成的阶段。

7.2 装完进系统报"Windows 保护错误"

这个报错的完整文案大概是"Windows 保护错误,你需要重新启动计算机"。在老系统跑在新硬件上的场景里出现得比较多,根因是 9x 内核里的时序检测机制和实际 CPU 速度不匹配。

我实测下来比较有效的几个处理方向,按操作成本从低到高:

  1. 确认虚拟机只分配了 1 个处理器,内存降到 256MB。多处理器和超大内存在 9x 上都是不稳定因素。
  2. 关闭虚拟机设置里的 3D 加速。这个选项对 9x 毫无意义,只会引入额外的显示层。
  3. 修改虚拟机的配置文件。关闭虚拟机后,用文本编辑器打开虚拟机目录下的 .vmx 文件,追加一行让虚拟机走更保守的执行路径,保存后重新启动:
monitor_control.restrict_backdoor = "TRUE"
  1. 换一个版本的 Workstation。如果前三步都无效,换到较老的 12 或 14 版本重装一遍,成功率会明显提升,因为这个报错和宿主机 CPU 的指令特性有一定关系。

需要说明的是,这个报错不是必然出现的,很多情况下用默认配置就一次装成。遇到的时候按上面顺序试,别一上来就换软件版本。

7.3 内存相关的报错和它的边界

前面反复提到 512MB 这条线,这里说清楚边界在哪。Windows 98 SE 在物理内存超过 512MB 之后,启动时可能提示"内存不足,无法初始化 Windows",或者进系统后资源管理器行为异常。原因是 VCache 在计算缓存大小时用了 32 位算术,超过阈值就溢出。

如果你的宿主机内存很大,虚拟机设置里也没法给一个小数值(现在都允许给 128MB),那就直接在虚拟机里限制。Win98 的"系统配置实用程序"里有个高级选项,可以限制系统识别的内存上限。打开方式是在"运行"里输入msconfig,进"高级",找到内存相关的限制项,勾上并把值填成 512 以内。

给 256MB 是最稳的,也是我一直在用的配置。跑老游戏和老软件绰绰有余,系统本身才占几十兆。

7.4 网卡、声卡、光驱集体失踪

这三个设备的排查思路是一样的:先确认虚拟机有没有给它,再确认系统有没有认出来。

虚拟机侧的检查:设置里对应的设备是不是勾选了"已连接"和"启动时连接"。这个"启动时连接"特别容易漏,比如光驱装完系统后你可能把它断开了,后来想读个 ISO,发现系统里看不到光驱——其实设备在,只是没连接。

系统侧的检查:设备管理器里看有没有"其他设备"下面带问号的未知设备。如果有,说明硬件在,只是缺驱动,手动指定驱动路径即可。

网卡还有一个独有的坑:如果虚拟机设置里网卡类型是 vmxnet3,Win98 里是绝对不会有驱动的,因为它依赖 VMware Tools。改成 AMD PCnet 之后,重新启动,系统通常会自动识别。如果没自动识别,手动添加网卡,厂商选 AMD,型号选 PCnet Family。

关于"没有网络适配器"这个报错,还有一种可能是虚拟机根本没有添加网卡设备。检查一下设置里的"网络适配器"是不是被删掉了,加回去就行。

7.5 时间跑偏和 CPU 占用 100%

虚拟机进程在宿主机任务管理器里长期占用一个核心的 100%,这个现象在老系统虚拟机上非常普遍,不是故障。原因是 Windows 9x 系列的系统空闲处理不执行 CPU 的停机指令,CPU 会一直跑在忙等循环里。

处理方式有三种,看你的接受程度:

  • 不管它。宿主机核心多的话,损失一个核完全可以接受,虚拟机响应也最灵敏。这是我现在的做法。
  • 给虚拟机进程设置处理器亲和性,把它钉在某个核心上,避免影响其他工作。
  • 装第三方空闲驱动。有专门为 9x 和 DOS 设计的工具,能让系统进入低功耗状态。但这类工具在虚拟机里的兼容性不保证,我一般不建议在老软件环境里引入额外的驱动,出问题不好排查。

时间跑偏的应对在 5.4 已经说过,手动校准是最省心的方案。如果只是偶尔用,开机校一次就够;如果长期挂着跑任务,可以在自动启动里放一个批处理,每次开机自动设置时间。

8. 长期使用的调优、快照与备份

系统跑起来只是开始。要让这台虚拟机在未来几年里稳定地给你干活,还需要做几件事。

8.1 磁盘和性能的几个小开关

虚拟磁盘用久了会碎,尤其是反复装删文件之后。Win98 自带的磁盘碎片整理在虚拟机里跑得非常慢,而且容易因为磁盘操作被虚拟机层拦截而出错。我的做法是定期用第三方工具处理,或者干脆通过快照回滚来保持干净——听起来暴力,但在虚拟机里其实是最省时间的。

磁盘性能上还有一个开关值得调:把虚拟磁盘设为"独立-持久"还是保持默认。默认的"依赖快照"模式下,所有写入都要经过快照层,性能有损耗。如果你已经不需要快照了,可以把它改成独立持久,写入会直接落到磁盘文件上。但改了之后就没法回滚了,所以要确认自己能接受。

另一个提升明显的地方是给虚拟机目录放在固态硬盘上,而不是机械硬盘。老系统对随机读写很敏感,SSD 能让开机时间从两分钟压缩到二十秒以内。

8.2 快照树怎么组织才不乱

快照是虚拟机的杀手锏,也是最容易把自己绕晕的地方。我的建议是保持一条清晰的线,不要搞成分叉树:

  • 快照 1:干净系统。系统刚装完、还没装任何驱动。用于最极端的情况回滚。
  • 快照 2:可用系统。驱动全装完、分辨率正常、网络通。这是你日常使用的起点。
  • 快照 3 及以后:按软件划分。装完某套老软件、配置调通之后打一个,名字带日期和用途。

关键原则是:每一层快照都是对上一层的增量,所以快照链越长,磁盘占用越大、回滚越慢。我一般控制在 4 到 6 个,超过就把中间的几个合并或者删掉。删除中间快照的时候要选"合并",不要选"删除",否则会丢掉那一层的数据。

还有个真实经验:打完快照别立刻关机。等系统在快照状态下正常跑过一次、确认没问题,再关机。有些快照和内存状态相关,关机时才能确认状态一致。

8.3 整机备份和迁移

这台虚拟机最让人放心的一点是:它就是一个目录。整个虚拟机目录里包含磁盘文件、配置文件、快照文件、BIOS 状态文件,把它们整体复制到另一个硬盘或者移动硬盘上,就是一次完整备份。

迁移到另一台电脑也很简单,把目录拷过去,用 Workstation 打开目录里的 .vmx 文件就能运行。因为虚拟 CPU 是抽象层,宿主机从 Intel 换到 AMD 也不会有问题——这一点比迁移物理机器省心太多。

如果你要把这台虚拟机交给同事,用"导出为 OVF"功能打包成一个开放格式的虚拟机,对方用 Workstation 或者别的虚拟化软件都能导入。导出的时候注意一点:有快照的虚拟机导出时只会导出当前状态,快照历史会丢失。所以导出之前,先确认当前状态就是你要交付的状态。

提醒:虚拟机目录里可能有. lck 之类的锁定文件夹,复制之前最好先在 Workstation 里把虚拟机关掉并确认没有残留进程,不然拷过去的副本会提示"虚拟机已被占用"。

这台 98 SE 虚拟机我到现在还留着,快照树里躺着"干净系统""驱动齐全""装了那套工控软件"三个节点。老哥那边的问题也解决了——软件能跑、加密狗能认、报表能导。回过头看,整个过程里真正花时间的不是装系统,而是搞清楚每个参数为什么这么填,以及遇到报错时知道往哪个方向查。我的体会是,装老系统这件事,耐心比技巧更重要,别急着点下一步,多花五分钟确认配置,能省掉一晚上的返工。

返回列表