web js vm list
https://bellard.org/jslinux/index.html
可以在在浏览器中运行 X Window 或 Windows 2000、linux
以下为示例:
JSLinux - News
从2018-08-18开发更新到2021-01-09
… https://bellard.org/jslinux/news.html
faq 常见问题解答
https://bellard.org/jslinux/faq.html
如何上传文件到虚拟机?
点击终端下方的上箭头。文件将被复制到您的主目录。
注意:文件上传仅在Linux虚拟机中有效。
如何从虚拟机导出文件?
使用 export_file filename shell 命令。
注意:文件导出仅在Linux虚拟机中有效。
如何复制和粘贴数据到 Web 终端?
要复制数据,只需用鼠标选择它,然后使用“复制”上下文菜单(右键单击)。要粘贴数据,请右键单击终端光标以显示上下文菜单,然后选择“粘贴”。或者,您可以在导航器全局菜单中使用“粘贴”命令。
注意:不支持文件的复制/粘贴。复制/粘贴仅在控制台 Linux 虚拟机中支持。
如何在移动设备上使用 Web 终端?
触摸终端窗口以显示虚拟键盘。为了使用控制键,您可能需要安装特定的虚拟键盘(如 Android 上的 Hacker’s Keyboard)。
我能从虚拟机访问网络吗?
是的,这是可能的。它使用由 Benjamin Burns 提供的 websocket VPN(请参见他的博客)。带宽被限制为 40 kB/s,并且每个公共 IP 地址最多允许两个连接。请不要滥用该服务。
我能用 TinyEMU 运行虚拟机吗?
是的。使用虚拟机列表中提供的 VM Config URL。然后将其用作独立模拟器的配置文件,例如:
temu https://bellard.org/jslinux/buildroot-x86-xwin.cfg
temu https://bellard.org/jslinux/buildroot-riscv64-xwin.cfg
我能更改 Web 虚拟机的内存量吗?我能更改终端的大小吗?
是的,有许多可以通过向 URL 添加参数来选择的选项。例如:
https://bellard.org/jslinux/vm.html?cpu=x86&url=buildroot-x86.cfg&mem=128&cmdline=TEST%3d1
- url 设置虚拟机文件系统的 URL
- mem 设置内存大小(以 MB 为单位)
- cpu 选择 CPU 类型:x86、riscv64 或 riscv32(默认 = x86)
- cols 终端的列数(默认 = 80)
- rows 终端的行数(默认 = 30)
- font_size 字体大小(以像素为单位,默认 = 15)
- graphic 0=终端 GUI,1=帧缓冲 GUI(默认 = 0)
- w 帧缓冲的宽度(仅在 graphic=1 时有意义)
- h 帧缓冲的高度(仅在 graphic=1 时有意义)
- cmdline 添加到内核命令行的参数(如果内核不使用它们,则可以将它们作为环境变量获取)。使用 URL 转义 %3d 代表 “=” 字符。VM init 脚本可识别以下变量:
- KBMAP 设置 X 窗口或 Linux 帧缓冲控制台的默认键盘映射(例如 fr、us、de 等)。
- net_url 设置 websocket VPN 的 URL。如果该选项不存在,则设置默认 VPN URL。
如何在 X11 GUI 中设置键盘映射?
使用鼠标右键单击可用的菜单。如果您的国家未列出,可以尝试键入以下命令:setxkbmap -layout x
,其中 x 是您的键盘映射的国家代码。
如果您的键盘仍然无法正常工作,则表示您的浏览器未返回用于模拟 PC 键盘所需的 PC 硬件键码。您仍然可以使用虚拟键盘(在右键菜单中可用)。
如何在 Windows 2000 演示中设置键盘映射?
右键单击位于时钟旁边的 EN 图标(屏幕右下角),选择属性,添加所需的键盘并选择它。
如果您的键盘仍然无法正常工作,则表示您的浏览器未返回用于模拟 PC
键盘所需的 PC 硬件键码。
或者,您可以使用屏幕键盘(其图标位于桌面上)。
为什么在 Firefox 中 [Alt] 键的工作方式不如预期?
在较旧的 Firefox 版本中,[Alt] 键总是被浏览器拦截以显示菜单。升级到更高版本的 Firefox 版本以解决此问题。
JSLinux - Technical Notes 技术说明
https://bellard.org/jslinux/tech.html
历史
该模拟器有着悠久的历史。当前版本基于 TinyEMU,并使用 emscripten 编译成 Javascript 或 WASM。
在2011年,我编写了JSLinux的初始版本,这是第一个在Javascript中运行Linux的PC/x86模拟器。我重用了我的另一个模拟器(QEMU)的x86助手和设备部分。
一段时间后(2015年),我对其进行了修改,以使用 asm.js Javascript 子集,以便在支持该子集的浏览器中运行得更快。
2016年,在编写了TinyEMU(最初是RISC-V模拟器)之后,我决定通过使用emscripten从其C代码创建Javascript版本。我添加了一个受Sebastian Macke的jor1k启发的VirtIO 9P文件系统,以便更容易地使用远程文件系统并导入/导出文件。
然后,我发现可以为x86 JS模拟器重用VirtIO设备,因此我将JSLinux asm.js代码转换为C,再用emscripten将其转换回Javascript!通过仔细调整,新版本现在比手工编码的asm.js版本更快。
下一步是运行与Linux不同的操作系统,例如Windows NT。该模拟器的首个版本通过在模拟的Linux系统内部运行QEMU,运行了带有Windows NT的。它仍然可用,因为x86模拟器支持QEMU使用的x86虚拟化扩展(AMD SVM)。
JSLinux的当前版本通过模拟少量缺失的PC设备(PS/2键盘和鼠标、IDE磁盘、虚拟VGA)来运行Windows NT。
x86 CPU 模拟
模拟具有以下功能的x86 CPU:
- 五代Pentium CPU
- 具有精确的80位浮点数的x87
- PAE支持
- CMOV指令
- MMX和SSE2支持
- AMD虚拟机扩展(SVM)具有嵌套页表支持
- RDPMC支持读取指令计数
已知限制: - 访问内存时没有段限制和权限检查
- 没有调试支持(DRx寄存器)
模拟设备
- 8259可编程中断控制器
- 8254可编程中断定时器
- 16450 UART(仅用于调试)
- 实时时钟
- PCI总线
- VirtIO控制台
- VirtIO 9P文件系统
- VirtIO网络
- VirtIO块设备
- VirtIO输入
- 简单帧缓冲区
- IDE控制器(可选)
- PS/2键盘和鼠标(可选)
- 虚拟VGA显示(可选)
RISC-V CPU 模拟
模拟了具有64位FPU和压缩指令的32位或64位RISC-V CPU。
目前仅提供RISC-V 64位Buildroot和Fedora发行版。 RISC-V 32位镜像仍可用,但不再积极维护:
- 具有控制台的buildroot-riscv32。
- 具有X Window的buildroot-riscv32。
性能
在一台典型的桌面PC上(2017年)使用Firefox浏览器,x86模拟器运行约100 MIPS。可以使用集成的vmtime实用程序进行详细的基准测试。
Javascript 终端
这是原始 JSLinux 终端的改进版本。它具有滚动条并支持URL高亮显示。
Linux 发行版
它使用Alpine Linux和Buildroot发行版。为 vfsync、qemacs 和 tcc 添加了自定义软件包。可选的X Window支持可与Fluxbox窗口管理器一起使用。
网络
在模拟器内可以访问互联网。它使用由Benjamin Burns提供的 websocket VPN(请参见他的博客)。带宽被限制为40 kB/s,并且每个公共IP地址最多允许两个连接。请不要滥用该服务。
有什么用途?
我纯粹是为了好玩,只是因为Javascript引擎足够快,可以完成复杂的任务。真正的用途可能包括:
- 对Javascript引擎进行基准测试(您的Javascript引擎启动Linux需要多长时间?)
以及使用新的浏览器技术(asm.js、WASM)。
- 在不离开浏览器的情况下学习使用命令行Unix工具。
- 在浏览器中进行安全文件访问(vfsync)。
- 运行旧的PC软件。
源代码
RISC-V版本的源代码在 TinyEMU 项目中可用。还提供了一个易于安装的预编译演示版本。
类似项目
还有其他几个PC或Linux模拟器可用,特别是:
- jor1k: OpenRISC OR1K CPU 模拟器。
- v86: PC 模拟器。
- angel: RISC-V CPU 模拟器。
https://bellard.org/
这个父网站也是个神奇的资源网站。
Fabrice Bellard 是一位法国计算机科学家和程序员,以其在计算机领域的卓越贡献而闻名。
这个网站似乎是他个人做的产品。