微信号:frontshow

介绍:InfoQ大前端技术社群:囊括前端、移动、Node全栈一线技术,紧跟业界发展步伐。

JS可以写操作系统?Windows 95被装进Electron App

2018-09-07 16:32 前端之巅
译者|无明
编辑|覃云
Windows 95 是微软的那个操作系统吗?可以说是,也可以说不是。顾名思义,Windows 95 就是指微软在 1995 年 8 月 24 日推出的操作系统,然而,也许是为了庆祝它 23 岁的生日,有开发者竟然将 Windows 95 打包成了一个 App,并开源在 GitHub 上,一天内 Star 数就超过了 4k,目前已经突破 11k 了。

它实际上是一个基于 Electron 的原生 App,支持 Windows、macOS 和 Linux,也可以在 Docker 中运行,而且还可以运行 Doom 游戏,但建议在 640x480 的分辨率和 256 色模式下运行 DOS 游戏,会有一股很浓的复古怀旧风哦!(DOS 游戏详情请参见:https://github.com/rwv/chinese-dos-games)

请看下面的截图:

  在 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,然后按照以下步骤操作:

  1. 启动 Xming X11 Server

  2. 获取宿主机器的 IP 地址

  3. 将 IP 地址添加到 X0.hosts(这个文件在 Xming 的安装目录)中

  4. 运行下面的命令,并将 替换成第二步获得的 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

Xming:https://sourceforge.net/projects/xming/

  活动推荐

CNUTCon 全球运维技术大会邀请了来自 Twitter、百度、阿里、腾讯、华为、京东、美团、网易、eBay、ThoughtWorks 等公司的技术专家,向你系统阐述在落地 AIOps 等相关技术的实践,目前,大会 8 折限时优惠,立减 720 元,团购更优惠!快点击“阅读原文”了解优惠详情,有任何问题欢迎咨询票务经理 Joy,电话:13269078023(微信同号)。


 
前端之巅 更多文章 JavaScript中Array方法的正确打开方式 GitHub:我们为什么会弃用jQuery? 你所不知道的Visual Studio Code Chrome十周年版更新了,你第一次用它是什么时候? 专访尤雨溪:先别管4.0了,Vue CLI重构了解一下
猜您喜欢 冷漠的人,谢谢你们曾经看轻我,让我不低头,更精彩的活——重生(上) Go编程技巧--Goroutine的优雅控制 GO语言学习笔记 互联网+时代专车出行安全之301大难不死记 唤醒APP的那些事