当前位置: 首页 > news >正文

虚拟机中安装Win98

文章目录

  • 一、下载Win98
  • 二、制作可启动光盘
  • 三、VMware中安装Win98
  • 四、Qemu中安装Win98
    • 1. Qemu的安装
    • 2. 安装Win98

Win98是微软于1998年发布的16位与32位混合的操作系统,也是一代经典的操作系统,期间出现了不少经典的软件与游戏,还是值得怀念的。

本文笔者就介绍一下在VMWare中以及Qemu中安装Win98。

一、下载Win98

可以去https://msdn.itellyou.cn/下载,这里把Win98中文版的下载链接复制过来:
ed2k://|file|SC_WIN98SE.exe|278540368|939909E688963174901F822123E55F7E|/

这是一个自解压EXE文件,运行即解压出两个文件夹:WIN98WIN98SE,前者为第一版,后者为第二版。

二、制作可启动光盘

由于下载的不是可启动光盘,所以只适用于硬盘安装,比较麻烦。为了支持光盘安装,需要将之制作为可启动的光盘镜像,ISO文件,方便后面虚拟机中安装使用。

  1. 下载win98.bif

由于前面下载win98文件不包括光盘启动信息,所以需要一个win98的光盘引导文件,网上有资源,可以去网上搜索win98.bif,也可以去下载笔者使用过的win98.bif

  1. 制作光盘

在另一个目录新建一个目录win98se,然后将之前解压出来的WIN98SE复制到新建的目录中,并将之改名为WIN98。然后打开UltraISO,使用添加目录win98se目录添加进来,或者在win98se目录右键,在UltraISO菜单中执行添加到win98se.iso

在这里插入图片描述

使用UltraISO打开ISO可以看到光盘是不可引导的光盘:

在这里插入图片描述

在启动中执行加载引导文件...

在这里插入图片描述

把之前下载的win98.bif文件添加进来,此时变为“可引导光盘”了,最后记得保存,Win98的可启动光盘镜像就制作好了。

在这里插入图片描述

三、VMware中安装Win98

在新建虚拟机时一定要选择自定义配置,不能使用推荐配置,因为推荐配置中硬盘是使用的IDE接口,在VMWare虚拟机中需要使用SATA接口,否则会报错:

在这里插入图片描述
在这里插入图片描述

由于前面已经制作好了Win98的可启动光盘镜像,这里直接使用,VMWare可以识别到是Windows 98系统。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果宿主机的内存充裕,可以选择512M的内存,但不能选择太大的内存,Win98支持不了。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

注意:这里一定要选择SATA类型的虚拟磁盘:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

设置好虚拟硬件后,就可以启动虚拟机,安装Win98了:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安装程序会默认配置使用整个未分配的磁盘空间:
在这里插入图片描述

启用大磁盘支持:

在这里插入图片描述
在这里插入图片描述

安装程序会自动格式化C盘:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

安装程序自动填充好产品密钥,可以不用修改:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这里需要设置计算机名工作组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安装完成后,第一次进入系统:

在这里插入图片描述

为了更好的体验,需要安装VMWare Tools

在这里插入图片描述
在这里插入图片描述

安装好VMWare Tools后,就可以设置更高的分辨率和色彩了:

在这里插入图片描述

此时还有一些设备没有安装好驱动,比如声卡与USB设备,这需要使用之前笔者上传的windows 98驱动.7z,它也是一个ISO文件,使用VMWare虚拟机加载光盘为该ISO文件即可。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

安装好驱动后,重启就可以看到音量图标和AudioPCI Mixer图标了:

在这里插入图片描述

至于USB,将硬件设置USB兼容性设置为USB 1.1即可:

在这里插入图片描述

在这里插入图片描述

强烈建议安装一下chip目录中setup安装程序,可以安装不少驱动:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

至此,就可以怀念一下Win98的风采了。

Win98下可以安装的Firefox版本最高为2.0

在这里插入图片描述

可以安装Qt 4.4.3:

在这里插入图片描述

还可以安装C++ Builder 6以及Delphi 7,说到它们,可是当年风光无限的开发软件,想必如今还有不少使用它们开发的软件还在运行吧,或者还有公司在使用它们开发或者维护软件吧,可即便如此,还是挡不住Borland的没落,着实可惜了。

笔者也使用过C++ Builder 6以及Delphi 7,确实好用,为此笔者特意尝试了一下在Win98下使用C++ Builder 6编译一个程序然后在Win10下来运行:

在这里插入图片描述

可以看到运行得非常好,而且依赖是相当少,仅依赖3个文件,这三个文件还只有3.33M。

四、Qemu中安装Win98

VMWare对Win98的支持还是不错的,安装过程还是非常顺利的(唯一注意的点就是硬盘类型要选择SATA),各种驱动程序也比较容易找到,但是随着VMWare版本的提升,发现Win98在使用过程中会卡死,显示画面不同步等等情况。于是笔者想尝试使用Qemu来安装一下Win98。

1. Qemu的安装

可以去Qemu官网查看Windows的安装方法,可以直接下载编译好的安装包,也可以在MSYS2中安装:

在这里插入图片描述

由于笔者是安装了MSYS2,所以这里笔者选择在MSYS2中安装Qemu的最版本8.2.1

在这里插入图片描述

2. 安装Win98

由于Qemu是使用命令行的方式来执行的,就没VMWare简单、直观,上手难度还是非常大的,需要熟悉各参数的用法及意义。

首先,创建磁盘:

qemu-img create -f qcow2 win98 5G

-f qcow2是表示创建qcow2格式的磁盘,它支持创建的磁盘格式有:

  • raw
  • qcow2
  • vmdk
  • vdi
  • vhd(vpc)
  • vhdx
  • qcow1
  • QED

等等,可以使用qemu-img --help查看:

Supported formats: blkdebug blklogwrites blkverify bochs cloop compress copy-before-write copy-on-read dmg file ftp ft
ps host_device http https luks nbd nfs null-aio null-co parallels preallocate qcow qcow2 qed quorum raw replication sn
apshot-access ssh throttle vdi vhdx vmdk vpc vvfat

这里选择qcow2 可以尽量减少宿主的磁盘占用。

创建好磁盘后就可以使用前面的ISO安装镜像进行安装了:

qemu-system-i386 -m 512 -smp 1 -boot c -k -rtc base=localtime,clock=host --accel tcg,thread=multi -cpu pentium3 -device sb16 -vga std -hda "win98" -cdrom "vmware_win98.iso" -drive file="win98se.iso",if=ide,media=cdrom

全部是命令行参数,这里做一个简单说明:

  • -m 512 设定内存大小为512M
  • smp 1 设置SMP的CPU个数为1
  • -boot c 设置设备启动顺序:a为软件;c为硬盘;d为光盘;n为网络
  • -rtc base=localtime,clock=host 设置虚拟机使用宿主机器的本地时间
  • –accel tcg,thread=multi 设置加速方式,这里是设置多线程TCG的方式。可以使用qemu-system-i386 -accel help查看可使用的加速方式,笔者的为tcgwhpx,前者为默认;后者为Win10的Hyper-V。Hyper-V需要在Win10中安装启用,但是与VMWare有冲突,启用后,会导致VMWare中的虚拟机很卡,很慢。
  • -cpu pentium3 设置cpu为奔腾3,可以使用qemu-system-i386 -cpu help查看可用的CPU列表。
  • -device sb16 设置声卡设备,sb16为Creative Sound Blaster 16声卡,win98有相应的驱动程序。想要添加更多设备,可以使用qemu-system-i386 -device help查看各种支持的设备列表。
  • -vga std 设置显卡为标准显卡。
  • -hda “win98” 设置硬盘,可以设置4个硬盘分别为hda,hdb,hdc,hdd,分别代表0、1、2、3号硬盘。fda、fdb代表0、1号软盘。
  • -drive file=“win98se.iso”,if=ide,media=cdrom 设置驱动器,包括镜像文件,驱动接口类型以及驱动媒介类型,该方式的挂载优先级高于使用-cdrom的方式。
  • -cdrom “vmware_win98.iso” 设置光驱镜像文件。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

后面就与VMWare中安装一样了。
使用Qemu安装要比VMWare慢得多,需要耐心等待。由于前面直接设置了声卡为SB16,Win98在安装时自动安装好了驱动,第一次启动进入系统即可听到声音,看到音量图标:

在这里插入图片描述

安装好系统后就是安装驱动程序了,最主要的是显卡的驱动程序,不然只有16色的640*480分辨率。

-vga选项支持:std|cirrus|vmware|qxl|xenfb|tcx|cg3|virtio|none,可以看到支持vmware,是不是可以使用VMWare中的显卡驱动呢?笔者尝试了一下,不行。Win98原生支持cirrus显卡,有显卡驱动,但是分辨率与颜色最高只能是16位色的800*600了,再高就不支持了。

为了支持更高的色彩与分辨率,笔者从WIKI上查到一个非商业许可的VBE兼容的显卡驱动。可以下载:
140131.zip
140214.zip

然后把它解压出来使用UltraISO制作成ISO文件,启动时加载成光驱:

qemu-system-i386 -m 512 -smp 1 -boot c -k pci-ohci -rtc base=localtime,clock=host --accel tcg,thread=multi -cpu athlon -device sb16 -vga std -hda "win98" -cdrom "vmware_win98.iso" -drive file="win98se.iso",if=ide,media=cdrom -drive file="140131.iso",if=ide,media=cdrom

这里-vga选项可以选择所有支持VBE兼容的显卡,然后安装前面下载的驱动。

进入系统后按如下设置:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
重启后就可以选择32位色,并且最高可达1920*1080的分辨率了,但不能再高,否则Win98支持不了:
在这里插入图片描述

在这里插入图片描述

在Qemu中如果不全屏的话,经常会出现鼠标不同步的情况。还有就是目前没有合适的网卡及驱动程序。

希望能在你怀念Win98的过程中帮助到你,欢迎点赞收藏!

相关文章:

虚拟机中安装Win98

文章目录 一、下载Win98二、制作可启动光盘三、VMware中安装Win98四、Qemu中安装Win981. Qemu的安装2. 安装Win98 Win98是微软于1998年发布的16位与32位混合的操作系统,也是一代经典的操作系统,期间出现了不少经典的软件与游戏,还是值得怀念的…...

《C++游戏编程入门》第4章 标准模板库: Hangman

《C游戏编程入门》第4章 标准模板库: Hangman 4.1 标准模板库4.2 vector04.heros_inventory2.cpp 4.3 使用迭代器04.heros_inventory3.cpp 4.4 使用算法04.high_scores.cpp 4.5 理解向量性能4.6 其他STL容器4.7 Hangman简介04.hangman.cpp 4.1 标准模板库 Standard Template L…...

Linux最小系统安装无法查看IP地址

1,出现原因 服务器重启完成之后,我们可以通过linux的指令 ip addr 来查询Linux系统的IP地址,具体信息如下: 从图中我们可以看到,并没有获取到linux系统的IP地址,这是为什么呢?这是由于启动服务器时未加载网…...

分享个好用的GPT网站

目录 一、背景 二、功能描述 1、写代码 2、联网查询 3、AI绘图 一、背景 我现在的开发工作都依靠ChatGPT,效率提升了好几倍。这样一来,我有更多时间来摸鱼,真是嘎嘎香~ ⭐⭐⭐点击直达 ⭐⭐⭐ 二、功能描述 1、写代码 import java.ut…...

hyperf 二十六 数据迁移 二

教程:Hyperf 参考文章hyperf 二十五 数据迁移 一-CSDN博客 根据之前写的数据迁移的文章,已经说明Hyperf\Database\Schema\Schema::create()实际运行Hyperf\Database\Schema\Grammars\MySqlGrammar::compileCreate()生成的sql字符串。 文档所谓"在…...

linux下如何hook第三方播放器的视频数据?

背景 作为显卡生产商,当用户使用我们的显卡硬解码播放视频时,如果出现比如花屏等问题,为了快速确定问题原因,我们需要一个工具来帮助判断出问题是出在原始视频端,亦或者是应用程序端,亦或者是显卡端。因此我们需要一种方法,来对目标播放器程序进行监控,并捕获到视频源的…...

如何通过Python代码连接OceanBase Oracle租户

背景 目前,连接数据库的Oracle租户,只能通过Java和C的驱动程序,无法通过其他语言的驱动程序。为了满足社区中用户希望在Python代码中连接Oracle租户的需求,这里提供一种替代方案。通过结合使用JayDeBeApi和JDBC,我们可…...

2 月 Web3 游戏行业动态

作者:stellafootprint.network 数据来源:区块链游戏研究页面 - Footprint Analytics 2024 年 2 月,区块链游戏领域在加密货币价格上涨和活跃用户激增的推动下,实现了显著增长。然而,行业在维持用户参与度和留存率方面…...

普发Pfeiffer Prisma QMS200四极质谱计内部电路图装配3D图电路板接口详细注解

普发Pfeiffer Prisma QMS200四极质谱计内部电路图装配3D图电路板接口详细注解...

2024.03.04——2024.03.10 力扣练习总结及专项巩固(二)

1. (22. 括号生成&#xff09;这里只讨论第二种做法回溯法。在回溯法的函数void backtrack(vector<string>& ans, string& current, int open, int close, int n); 中&#xff0c;可分为三个if条件判断&#xff0c;分别判断当current.size() 2*n&#xff0c;ope…...

前端NodeJs笔记之包结构到进程和线程到命令行到Node模块化讲解

包结构 包实际上是一个压缩文件&#xff0c;解压以后还原为目录&#xff0c;符合规范的目录应该包含如下文件&#xff1a; ​ -package.json 描述文件 ​ -bin 可执行二进制文件 ​ -lib js代码 ​ -doc …...

【Java】获取手机文件名称补充

本地的 ADB 工具路径指的是你电脑上安装的 Android Debug Bridge&#xff08;ADB&#xff09;工具的路径。ADB 是 Android SDK 中的一个工具&#xff0c;用于与连接到计算机上的 Android 设备进行通信。你需要确保 ADB 已正确安装&#xff0c;并知道其在你计算机上的位置。 通…...

YoloV8改进策略:BackBone改进|TransNeXt:ViT的鲁棒Foveal视觉感知

文章目录 摘要论文:《TransNeXt:ViT的鲁棒Foveal视觉感知》1、引言2、相关工作3、方法3.1、聚合像素焦点注意力3.1.1、像素焦点注意力3.1.2、在单个混合器中聚合不同的注意力3.1.3、克服多尺度图像输入3.1.4、特征分析3.2、卷积门控单元(Convolutional GLU)3.2.1、动机3.2.…...

三维的旋转平移矩阵形式

在三维空间中&#xff0c;一个物体或坐标系的旋转和平移可以通过一个4x4的变换矩阵来表示。这个矩阵通常被称为仿射变换矩阵或齐次变换矩阵。它结合了旋转矩阵和平移向量的功能&#xff0c;能够同时表示旋转和平移操作。 一个4x4的旋转平移矩阵通常具有以下形式&#xff1a; 复…...

ChatGPT+MATLAB应用

MatGPT是一个由chatGPT类支持的MATLAB应用程序&#xff0c;由官方Toshiaki Takeuchi开发&#xff0c;允许您轻松访问OpenAI提供的chatGPT API。作为官方发布的内容&#xff0c;可靠性较高&#xff0c;而且也是完全免费开源的&#xff0c;全程自己配置&#xff0c;无需注册码或用…...

C语言—冒泡排序

C语言—冒泡排序 原理过程讲解代码1、直接在主函数里面实现2、编写函数进行实现 原理 冒泡排序的原理是&#xff1a;从左到右&#xff0c;相邻元素进行比较。每次比较一轮&#xff0c;就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。 以从小到大排序…...

Discord OAuth2授权以及机器人监听群事件

下面文章讲解获取OAuth2授权整个流程&#xff0c;创建机器人&#xff0c;使用机器人监听工会&#xff08;工会就是创建的服务器&#xff09;成员变化等等&#xff0c;对接国外的都是需要VPN的哦&#xff0c;对接的时候记得提前准备。 创建应用 点击 此页面添加应用,&#xff…...

微信小程序返回上一页刷新组件数据

在父页面的onShow和onHide里面添加一个标志 onShow() {this.setData({show:true})},onHide() {this.setData({show:false})}, 把这个值传给子组件 <importantList slot"importantConcern" flag"{{barSelect}}" flag2"{{show}}" /> 在子组…...

Aging Cell:匈牙利学者发现肠道微生物组的变化和衰老密切相关

基于DNA甲基化衰老时钟的开发可以准确用来测量生物年龄&#xff0c;生物年龄在很大程度上受生活方式、环境和遗传等因素的影响&#xff0c;大量证据也表明健康生活方式可以延缓衰老并延长寿命。 先前大规模微生物组分析表明&#xff0c;随着年龄的增长&#xff0c;微生物组菌群…...

837. 连通块中点的数量(acwing)

文章目录 837. 连通块中点的数量题目描述维护size的并查集 837. 连通块中点的数量 题目描述 给定一个包含 n 个点&#xff08;编号为 1&#xff5e;n&#xff09;的无向图&#xff0c;初始时图中没有边。 现在要进行 m 个操作&#xff0c;操作共有三种&#xff1a; C a b&a…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...