Atari VCS操作系统的诞生:第1部分

众所周知,Atari很幸运能让Rob Wyatt与我们一起担任Atari VCS的系统架构师。 我们不会在这里重新提起Rob的受人尊敬的凭证,但是已经帮助创建了一些令人惊叹且备受喜爱的游戏和娱乐产品。 Rob对于其中许多产品都有一些非常有趣且丰富多彩的背景故事,而Atari VCS也不例外。

以下是(大部分)Rob Wyatt在过去几个月的开发中给Atari VCS团队的一些内部注释的未经过滤的摘录,这些摘录揭示了有关Atari VCS操作系统起源的一些故事。 我们已删除了任何敏感,令人困惑或其他不适当的共享内容,希望您喜欢在幕后的特殊浏览。

沙盒模式:那是什么?

我们已经讨论过有关VCS的沙箱模式的问题,而多操作系统的想法并不是什么新鲜事:PS3至少可以让您引导Linux一段时间,但是他们的 虚拟机管理程序 完全掩盖了GPU,因此PS3 Linux总是有些瘫痪。 这样做是为了使用户无法在Linux上编写与其软件竞争的内容。 甚至Xbox One都使用多个操作系统。 前端是Windows衍生产品,游戏运行在完全不同的OS(游戏OS)上。

VCS旨在使游戏机民主化。 他们被锁定了太久了。 VCS可以拥有一个“ Atari世界”,该公司拥有一个在线商店,安全可靠的父母控制,启动应用程序和聊天以及执行现代控制台应做的所有工作的能力。

在我们的世界之外,我们将支持用户安装其他 操作系统 非常类似于原始PS3,但没有任何硬件限制。 如果您想安装完整的 Ubuntu ,并随台式机一起 安装 ,那就去做吧-这绝不是标准用例,因为想要这样做的人已经可以了。 99%的用户只想打开盒子并使用它。 想和那些想弄乱盒子的人打交道是一个很大的举措,但这只是一小部分。

运行其他操作系统意味着您必须重新启动计算机,我希望任何操作系统都具有所有资源,而在另一个操作系统中运行一个操作系统不是一个很好的解决方案,也不是很好。 随着虚拟机管理程序更多地成为虚拟机管理程序而不是系统监视器管理程序,它使任何管理程序都非常复杂。 我想使管理程序尽可能简单,管理程序中的代码越多,攻击面就越多。 系统管理程序是确保Atari世界安全的根本。

我希望尽可能简化对其他操作系统的支持,但不以原始格式的Atari盒的用户体验为代价。 遵循以下原则:如果插入可引导的外部USB驱动器,我们的管理程序将从中引导,否则它将引导内部的Atari OS。 这样可以使两个OS完全分开,并且使支持多个OS变得非常容易,并且不存在内部存储被另一个OS损坏的风险。 安装的任何操作系统都需要修改其启动代码,因为我们的管理程序/引导代码将直接以64位保护模式进入操作系统,当前linux从实模式启动。

我们将发布有关如何执行此操作的示例代码。

Linux,应用程序和浏览器

Linux只是内核,其本身就毫无用处。 Atari操作系统基于Linux内核的修改版,我们将其与组件打包在一起,以使其可用作游戏机。 这些组件中有些是自定义的,有些是标准的。 在某些方面,Atari OS是Linux发行版,但这并不能使我们成为Ubuntu,而不同于Android并非Ubuntu。 当然,我们都有很多共同点,但也有很多差异。 这个故事更加令人困惑,因为我们可以将Ubuntu安装为其他操作系统,在这种情况下,它确实是Ubuntu,确实具有窗口系统,并且确实需要鼠标和键盘,但是同时它不是Atari OS。

需要为我们的平台编写应用程序,它们在屏幕上的呈现方式将与普通Linux不同,但这就是所有底层细节和应用程序。 从开发人员的角度来看,它将支持我们尽可能多的标准API,对于图形将支持OpenGL和Vulkan,还将为想要去那里的人支持硬件命令缓冲区渲染。 没有硬件访问权限,就无法拥有控制台!

至于浏览器,例如PlayStation,Xbox,Apple TV和Roku,人们希望获得他们拥有的输入系统的优化体验,典型的浏览器是针对鼠标和键盘或触摸而优化的。 尝试在控制台上浏览网络以查看它有多痛苦。 我们的工作之一是了解市场并为人们提供他们想要的东西。 很多人已经对Atari所做的事情感到怀疑,强迫人们使用浏览器并不能帮助外界将这个盒子放在一起。 如果我们强迫他们使用带有控制器的浏览器,则没人会使用该框。 我想不出更令人沮丧的事情了,没人能成功实现。 没有人愿意输入网址并浏览网页来观看电影。 专用应用程序是唯一的选择,在PlayStation或Xbox上,您只需单击几下即可完成任何操作。 与强迫某人使用传统浏览器相比,这是完全不同且优越的用户体验。 这并不意味着我们不支持浏览器,尽管我个人不希望它支持并将开发工作放在其他地方。 许多控制台通过基于Webkit的浏览器被黑客入侵。

平台与安全

作为平台提供商,您必须拥有平台。 您不能只是将一个盒子放在那里说出来。 在一个豪华的情况下,Linux盒子就是这样,人们已经可以做到这一点,并且可以使用(Raspberry)Pi,Beaglebones或Intel棒进行操作。

为了使平台成功,必须牢记目标。 该平台将用于什么? 软件和硬件以及工业设计和市场营销必须是一体的。 从该用例来看,人们如何使用该平台来干扰或阻止该平台的预期目标? 对于游戏平台,通常会想到黑客,盗版和作弊,它们会破坏平台。

对于游戏平台,需要某种程度的安全性。 如果可以轻松地复制游戏,则没有购买游戏的动机,因此也没有制造游戏的动机。 如果在线游戏容易被骗,那么人们根本就不会在平台上玩游戏。 从数字发行的角度来看,必须有一个可靠的在线商店。 如果前端或后端不安全,人们将不愿提供付款信息。 盗版将销毁任何内容,无论是新内容还是旧的模拟内容。 版权持有人只有在知道内容安全的情况下,才将其放在盒子上。

Atari操作系统还活着! 它在参考板上启动,但仍然非常粗糙。 甚至不用问图形和音频支持,这还有很长的路要走。 目前,我们正在为给定的硬件和初始过程进行干净的内核引导。

我团队的目标是使操作系统和内置应用程序消耗不到几千个存储空间,其余的留给用户使用。 我们的硬件是固定的,因此所有驱动程序都将内置在内核中,如果不加载内核模块,则安全风险将降低,我们的操作系统将完全无法加载它们。 USB / BT可能需要几个外部类驱动程序,具体取决于我们要支持的驱动程序,但是如果不使用它们,我们将直接将其内置并浪费一些内存。

“每个人今天都能打电话给快速团队吗?”

我伤了自己,我在医院里……我会尽力打电话。

现在,我们恢复定期安排的编程。

音频通过alsa工作,图形在vulkan和Open GL中工作,我们有一个全屏图形应用。

Atari OS正在枚举和识别USB2或USB3端口上的USB设备。 它将识别任何USB设备,并且libusb可以从用户模式与所有USB设备进行通讯,因此可以以非常标准的方式来进行诸如定制/游戏专用的USB设备之类的事情。 对于标准设备,我们内置了一些用于HID,大容量存储,UVC /相机等功能的类驱动程序。由于没有意义,我不打算支持每个已知的USB设备,并且我们不支持内核模块。 无论我们支持什么,还是开发者为libusb编写的任何东西。

音频正在工作……我认为ALSA的应用程序太复杂了,我们可能需要创建“ atari音频库”,该库使用相同的内核端后端,但前端要简单得多。 Alsa拥有疯狂的配置选项,对我们而言毫无意义,我们拥有固定的硬件和仅一个输出。 如果我们进行自定义操作,使其看起来像ALSA,将有助于上游代码。 保持标准是好的,但只有在有意义的地方。

图形支持仍然令人生厌。 通常是因为它会杀死屏幕,所以您看不到您正在输入的内容。 我通过串行USB通过远程TTY构建了一个新内核,因此您可以在另一个系统上键入而不需要本地显示。 它有帮助,但我确实需要修复图形。

现在,我们仍在参考硬件上使用“标准的” BIOS。 从实际控制权转移到OS加载程序后,我可以在大约一秒钟半的时间内加载整个OS和一个简单的3D“前端”应用程序,尽管实际速度取决于USB枚举。 上面我说过,我们不支持内核模块,现在我们支持内核模块,因为它便于开发。


谢谢阅读! 还有更多。

下一步是什么? 我们想宣布一个Linux开源项目,并鼓励我们的支持者,支持者和感兴趣的各方帮助我们完成实际上将成为Atari VCS操作系统一部分的某些事情。 很快会有更多。

直到下一次!

Atari VCS团队