什么是 Windows 95?
这个 Windows 95 是微软的那个操作系统吗?可以说是,也可以说不是。它实际上是一个 Electron app,可以运行在 Windows、macOS 和 Linux 上。请看下面的截图:
Windows 95 是一个原生 app 吗?
是的,绝对是的。
它可以运行 Doom 游戏吗?
当然可以了,但建议在 640x480 的分辨率和 256 色模式下运行 DOS 游戏——一股很浓的复古怀旧风啊!
它可以在 Docker 中运行吗?
当然可以了。
Linux:
Linux 系统需要运行 X-Server Display 并安装了 Docker,然后启动 Docker:
docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY --device /dev/snd --name windows95 toolboc/windows95
Windows:
要求系统安装 Xming 和 Docker,然后按照以下步骤操作:
- 启动 Xming X11 Server
- 获取宿主机器的 IP 地址
- 将 IP 地址添加到 X0.hosts(这个文件在 Xming 的安装目录)中
- 运行下面的命令,并将 <XmingServerHostIp> 替换成第二步获得的 IP 地址:
docker run -it -e DISPLAY=<XmingServerHostIp> --name windows95 toolboc/windows95
Windows 95 的工作原理是什么?
Windows 95 重度依赖了 v86 这个开源的 JavaScript 虚拟环境,所以,想要了解 Windows 95,了解 v86 就够了。
什么是 v86?
v86 是一个基于 JavaScript 的虚拟环境,可以运行在浏览器和 NodeJS 中运行。在浏览器打开这个链接( https://copy.sh/v86/?profile=linux26 )就可以看到你的浏览器变成了一个 Linux 操作系统。当然,它也可以加载 Windows 98 和其他 Linux 发行版。
怎样自己启动一个这样的操作系统?
很简单,创建一个 HTML 文件,把下面的代码帖进去,保存,用浏览器打开就可以了。这是一个最基本的操作系统。不过,前提是要把相关的 JavaScript 库和镜像文件下载到本地。
<!doctype html> <title>Basic Emulator</title><!-- not BASIC! --> <script src="../build/libv86.js"></script> <script> "use strict"; window.onload = function() { var emulator = window.emulator = new V86Starter({ memory_size: 32 * 1024 * 1024, vga_memory_size: 2 * 1024 * 1024, screen_container: document.getElementById("screen_container"), bios: { url: "../bios/seabios.bin", }, vga_bios: { url: "../bios/vgabios.bin", }, cdrom: { url: "../images/linux.iso", }, autostart: true, }); } </script> <!-- A minimal structure for the ScreenAdapter defined in browser/screen.js --> <div id="screen_container"> <div style="white-space: pre; font: 14px monospace; line-height: 14px"></div> <canvas style="display: none"></canvas> </div>
v86 的原理又是什么?
v86 模拟了与 x86 兼容的 CPU 和硬件,以下是 v86 模拟的硬件清单:
- 与 x86 兼容的 CPU,相当于奔腾 1 的指令集,主要包括:
- 任务门、在保护模式下进行远距调用
- 16 位的保护模式
- 单步
- MMX、SSE
- 一系列 FPU 指令
- 异常
- 一个浮点数单元(FPU),使用 JavaScript 的双精度(64 位)执行运算,所以精确度不如真实的 FPU(80 位)。
- 软盘控制器(8272A)。
- 8042 键盘控制器、PS2,支持鼠标。
- 8254 可编程间隔定时器(PIT)。
- 8259 可编程中断控制器(PIC)。
- CMOS 实时时钟(RTC)。
- 通用 VGA 显卡,支持 SVGA 和 Bochs VBE 扩展。
- PCI 总线,这个模拟的硬件并不完整,毕竟不是所有设备都会用到。
- IDE 磁盘控制器。
- NE2000(8390)PCI 网络接口卡。
- virtio 文件系统。
- SoundBlaster 16 声卡。
v86 可以用来运行哪些操作系统?
可以通过 v86 运行的操作系统清单:
- Tinycore(3.16,4.8 内核)
- Nanolinux
- Archlinux(会出现一些警告)
- ReactOS
- FreeDOS、Windows 1.01 和 MS-DOS
- KolibriOS(某些应用需要依赖 SSE)
- Haiku boots(启动很慢,可能需要 30 分钟)
- Windows 1、3、95、98
- Windows XP(不稳定)
- FreeBSD
相关链接:
Windows95 二进制包下载地址: https://github.com/felixrieseberg/windows95
v86: https://github.com/copy/v86/
v86 操作系统镜像下载: https://github.com/copy/images
评论