« PlayStation 3 硬件架构 (index)

PlayStation 3 硬件架构

Chapter 7: 操作系统


目录

  1. Cell的权限安全
  2. 概述
  3. 操作系统的安全层次
  4. 存储介质
    1. Cell BootROM
    2. NAND/NOR闪存
    3. 硬盘
    4. eMMC
  5. 启动过程
    1. 修订后的启动程序
  6. Visual Shell
    1. 把你PS3借给我
  7. 多操作系统建议
  8. 可更新性

现在,家用游戏机已经成为功能强大的多媒体中心,因此需要一个更加_错综复杂_的操作系统,以更厚的抽象层为用户提供更多的服务和游戏。 所有这些,都需要在保证安全性和性能的前提下完成。

因此,我们不再使用shellBIOS等术语来描述这一领域,不是因为它们不存在了,而是因为它们只描述了新系统的一小部分。 现在的通用术语是"操作系统",它由许多方面组成(引导加载器、内核、用户界面),并分别进行分析。 像往常一样,我建议先看看PSP的操作系统,因为它的模块化设计是PS3的一大特色。

Cell的权限安全

在我们深入探讨细节之前,我需要提一下Cell的不同运行模式。 我原本打算在"CPU"部分对此进行描述,但由于篇幅过长,我还是在这里介绍一下,你会马上看到它的实际用途。 此外,它的模式也会影响在Cell中运行的任何操作系统的设计,而不仅仅是索尼为这款游戏机开发的操作系统。

尽管如此,为了防止未经授权访问敏感数据和/或资源,Cell实现了一套继承自PowerPC规范的权限级别。 换句话说,Cell在两种模式下执行程序:

此外,SPE还包含一种称为隔离模式的工作方式,它可以屏蔽SPU内的执行进程,因此在SPU完成之前,任何外部单元(PPE或其他SPE)都无法访问该进程。 在向任何SPE上传程序后,都可以激活这种模式,确保处理器在执行敏感代码(如加密例程)时不被篡改。

索尼的操作系统(我将在下面的段落中加以介绍)采用了上述所有模式来处理其安全性问题。

概述

正如我之前所说,这个操作系统相当复杂。 因此,为了能够顺利地跟上本节内容,我们可以将游戏机操作系统中的文件类型分为不同的层次:

操作系统的安全层次

总的来说,PS3的操作系统采用与PSP相同的模块化设计。 回顾前文,操作系统由多个模块组成。 这些模块可以为用户服务(如游戏或应用程序),也可以无限期地驻留在内存中,为其他模块服务(以系统调用和/或驱动程序的形式)。 有些模块比其他模块拥有更多的访问权限(内核模块与用户模块)。

Image
PlayStation 操作系统各组件与 Cell 权限级别的关系图。
有关"其他操作系统"的内容将在接下来的章节中进一步解释。

操作系统在其整个生命周期中会调用许多具有不同权限的模块。 索尼在构建操作系统时,将模块置于Cell的三个权限级别之下:

存储介质

说了这么多,这些数据存储在哪里呢? 从普通用户的角度来看,只有两种可见介质: 存储游戏的蓝光光盘和存储数据的硬盘。 当然,还有其他一些介质,我们现在就来一一介绍!

Cell BootROM

原来,在Cell中隐藏着一个小ROM,制造商可以将"受保护"的bootloader存储在其中。 IBM提供这个空间是为了让任何公司(不仅仅是索尼)不必手动实施定制的混淆方法来保护他们的启动代码,因为现成的组件并不总能满足客户的需求。

由于这部分代码已经受到混淆的物理保护,因此无需加密。 因此,它是第一阶段bootloader(无法加密)的理想选择,PlayStation 3将其早期启动阶段存储在这里。

NAND/NOR闪存

还记得我之前简单提到的256 MB NAND闪存吗? 大部分操作系统都在这里。 直到索尼在2007年底发布了_CECHH_机型,将256 MB NAND闪存替换为缩小的16 MB NOR闪存。 因此,一些文件不得不转移到其他地方。 为简单起见,我们先来看看这些芯片存储了什么:

由于NAND闪存体积较大,采用NAND闪存的机型还存储操作系统的剩余部分(称为GameOSdevflash)。 这包括:

如果这还不够,NAND游戏机还存储了其他数据,如xRegistry(收集网络设置、PlayStation网络账户和蓝牙配对设备列表)、更多撤销记录和其他操作系统的加载器(一个非常有趣的部分,我们将在接下来的段落中详细讨论)。

硬盘

首次亮相的2.5英寸硬盘容量从20 GB到500 GB不等(随着更多版本的推出),可为以下方面提供持久的数据存储空间:

不过,用NOR闪存的机子也会将GameOS储存在硬盘中。 因此,每当用户更换硬盘时,游戏机都会请求更新文件,以便将GameOS重新安装到硬盘中。 尽管如此,没有硬盘,NOR和NAND机子都无法启动。

某些用户数据可以使用U盘备份,然后在需要时转移到另一个游戏机上,不过这个过程会在复制旧数据之前重新格式化新的游戏机。

eMMC

2012年,索尼推出了重新设计的改版游戏机"超薄机"("SuperSlim")(代号 CECH-4xxx)。 这些产品有三种配置: 一种是250 GB硬盘,另一种是500 GB硬盘,还有一种只有12 GB eMMC内置闪存。 前两种选择沿用了NOR型号的文件系统布局,而第三种选择则将所有内容(包括用户数据)存储在eMMC中,并沿用NAND布局来存储系统文件。

不过,eMMC机型有一个缺陷。 根据PS3 Dev Wiki,索尼在NOR芯片上安装了松下的MN66840芯片,似乎将NOR总线重定向到了eMMC。 我认为这只是为了节约成本而采取的一种技巧,因为它再利用了其他变体机型的相同南桥。

奇怪的是,如果用户决定在eMMC机型上安装硬盘,游戏机就会将所有用户数据从eMMC移到新硬盘上。 因此,用户可以充分利用硬盘,尽管eMMC中的空白空间现在被浪费了。

启动过程

好了,利用前面所有的知识,你现在要学习系统是如何启动的——让我告诉你,这相当复杂。 原因很简单: 索尼不希望你在他们的硬件或软件上做手脚,所以他们做了很多层混淆和加密,以防止你闯入并侧载你自己的代码(希望你_放弃并继续购买他们的游戏/电影/什么的_),但历史会告诉你,事实恰恰相反。

在下面的章节中,我将介绍一旦你按下电源按钮,这台游戏机会做什么。 请注意,这个过程只发生过一次重大变化(在黑客破解之后)。 因此,为了简单起见,我们将从"初版"启动过程(在系统3.60版之前实施)开始 :

  1. 主板上的一个独立芯片(称为Syscon)启动并执行其内部ROM中的指令。 然后,它通过SPI(串行连接)向Cell发送"配置环"(Configuration Ring),初始化Cell并停用第八SPU。 最后,它锁存电源线,赋予Cell生命。
  2. Cell的PPU复位向量指向隐藏的ROM,其中存储了从闪存中定位和解密bootldr的例程。 解密后的程序由处于隔离模式的第一个SPU加载。
  3. 现在被隔离的SPU加载bootldr后,初始化部分硬件(XDR内存和I/O接口),解密名为lv0的二进制文件,并指示PPU运行。
  4. PPU 现在执行lv0,解密metldr(游戏机专用加载程序)并将其发送给第三个SPU,同样处于隔离模式。
  5. 现在执行metldr的SPU2依次执行另外五个加载程序:
    1. lv1ldr解密并加载lv1,其中包含接管第一级权限的管理程序。 此外,lv1还设置了硬盘、蓝光光驱和RSX。
    2. lv2ldr解密并加载lv2,它包含内核并在管理程序之上运行。 它还能完成RSX、PS2仿真、蓝牙、USB控制器和多卡读写器的初始化。
    3. appldr解密并加载vsh可视化Shell)和其他依赖项。 vsh稍后将允许用户加载游戏。
    4. isoldr解密并加载将在第三个SPU隔离模块中运行的模块。 这些模块对安全性至关重要,在整个游戏机生命周期中执行许多加密功能。 因此,第三个SPU被保留用于安全功能,游戏无法使用(游戏只能使用六个SPE)。

加载vsh后,PPU通过图形用户界面授予用户控制权,图形用户界面会发出标志性的_管弦乐启动音效_,随后出现_XMB_菜单。

修订后的启动程序

2011年3月,一个名为"GeoHot"的黑客破坏了metldr的安全性,从而损害了后续Loader的真实性。 因此,索尼通过发布硬件和软件安全更新进行报复。 本文的"反盗版"部分将进一步讨论这些修复措施。

Visual Shell

你是否已经厌倦了这些理论? 让我来谈谈大家都能看到的东西: 可视化Shell

XrossMediaBar(XMB)两年前在国际上获得认可的新用户界面,现在已稍作调整,使其可以在沙发上进行交互(即所谓的"10英尺用户界面"),并扩展到"全高清"分辨率(FHD,1920x1080像素)。

Image
PSP版XMB界面(2004)
480x272像素下渲染

Image
PS3版XMB界面(2006)
1920x1080像素下渲染

虽然PSP用户会发现许多熟悉的功能,但索尼还增加了一套新的应用程序,利用Cell、RSX和蓝光光驱的潜力。 其中许多与多媒体(如视频播放器和图片幻灯片)、电视(如点播电视应用程序,如BBC的iPlayer)、社交(在线头像)和在线购买(PlayStation Now和PlayStation Store,仅举几例)有关。

此外,由于这是一台可能由多个成员共享的家用游戏机,XMB支持多用户,每个用户可以使用不同的PlayStation Network账户,并存储独立的用户数据(已购买的游戏和保存)。

Image
就像在PSP中一样,选中一个游戏可能会使背景风格化,以引起你的注意!

Image
XMB 提供了大量的设置功能,尤其是当你需要为闪亮的1080p新电视设置3.1环绕声时,它能帮上忙。

Image
各种各样的多媒体设置

Image
XMB可以使用本地软件包安装程序安装游戏及其更新和扩展(DLC)。

PlayStation 3 的 XrossMediaBar (XMB) 界面

最后,硬盘的加入让老手们松了一口气,因为过去只要空间不够,他们就不得不购买昂贵的专有存储设备(Memory Stick Pro Duo)。

把你PS3借给我

令人印象深刻的是,并不是每一个与这款游戏机捆绑的应用程序都是以_自身利益_为目标的。 随着分布式计算的出现以及Cell在数据科学项目中的功能,斯坦福大学与索尼联手,让PlayStation 3的用户为医学研究做出贡献。 这就是Folding@home(读作 "在家折叠")。

Folding@home是一个安装在每台PlayStation 3上的应用程序,用户打开后即可连接到中央服务器并运行蛋白质模拟。 此外,该应用程序还可以在非高峰时段在后台运行。

Image
Folding@Home显示用户启动应用后完成的工作。

在其整个生命周期中,全球1500万PS3用户的联合计算能力协助Folding@home开展了治疗阿尔茨海默病的研究。 最后,Folding@home和索尼于2012年退役了该应用,而前者则在其他平台上继续使用。

这是我的个人观点,但我喜欢阅读利用分布式计算能力为全球做出贡献的项目,而不是永无止境的关于加密货币挖矿的耸人听闻的文章。 我想我们不应该忘记,每一种新的强大技术,总会有无私的应用被开发出来。

多操作系统建议

IBM在从软件层面描述Cell时提到,由于Cell有很多执行核心,因此能够同时运行多个操作系统。 因此,索尼将这一想法付诸实践,在XMB中添加了一个安装第二操作系统的选项。 这项功能被称为OtherOS,简而言之,它提供了一个分区管理器(XMB只是引导用户调整GameOS分区的大小,并为第二个操作系统分配新的空间)和一个从第二个操作系统启动的按钮(由于OtherOS的启动文件已在Flash中设置)。 因此,用户只需将操作系统填入新分区即可。 因此,许多Linux发行版(如Ubuntu和Fedora)都将 PS3作为另一个可能的安装目标。 你可以将其视为 Linux for PS2 的精神继承者。

Image
Red Ribbon GNU/Linux是PS3/Cell独家发行版,使用PPC64目标机编译。

得益于OtherOS,有经验的用户有机会开发在Cell上运行的自制应用程序,而不受许可限制,这对于研究/科学用途尤其有趣 ,因为这种游戏机的价格比大型机更实惠。 在多媒体方面,蓝光驱动器和多卡读写器也可以通过其他操作系统访问。

另一方面,虽然OtherOS的权限可能超过GameOS(在内核层面),但它们并没有超过管理程序,后者仍驻留在内存中。 因此,OtherOS的任何硬件访问仍然取决于索尼管理程序的意愿,而后者恰好阻止了对RSX命令缓冲区的访问(阻止使用着色器单元和其他用于加速图形操作的组件)。 因此,Linux发行版只能使用软件渲染(所有图形都由Cell绘制),然后将帧缓冲区流式传输到RSX显示。 虽然OtherOS无法充分利用该游戏机的全部功能令人失望,但这样做可能是为了减少攻击面。 具有讽刺意味的是,OtherOS对Cell的使用类似于IBM/东芝/索尼最初对PS3的设想!

与Folding@home的命运相同,OtherOS最终在后续更新中被移除,但原因不同(主要与安全有关)。 不久之后,由于软件漏洞和逆向工程的努力,OtherOS被_非官方地_恢复了。 目前,如果用户安装了_定制固件_,就可以使用OtherOS。 我将在"反盗版和自制软件"部分对此作进一步解释。

在撰写本文时,开发人员René Rebe正在实施适当的xf86驱动程序,以利用RSX及其256 MB内存提供的加速功能。 他的工作与其他开发工作相结合,消除了管理程序施加的限制(最初得益于软件漏洞的发现,后来使用了_定制固件_,后者在"反盗版和自制软件"部分有进一步解释)。 Rebe先生在他的Youtube频道上发布他的研究进展,并依靠自愿捐款继续他的工作。

可更新性

最后,我们来谈谈GameOS的更新能力。

简而言之,与PSP一样,索尼也分发了PS3UPDAT.PUP文件,其中打包了所有新的操作系统二进制文件。 由于游戏机的安全系统,只有那些未使用唯一的游戏机密钥保护并存储在可重写存储器(闪存、硬盘、eMMC)中的文件才可更新,其他文件必须保持原样。

PUP文件通过索尼官方网站、XMB更新助手或游戏光盘中的内容发布(所有游戏都嵌入了PUP文件,反映了为其开发的SDK版本)。 由于使用NAND闪存的机型仅有256 MB的空间,并将整个操作系统存储在其中,因此索尼从未发布过大小超过256 MB的更新文件。


Previous: 6. I/O 和向后兼容性

Next: 8. 游戏


Rodrigo Copetti © 2026 RSS Feed

切换至现代版

主页 · 文章 · 支持 · 关于作者 · 关于此网站