现在,家用游戏机已经成为功能强大的多媒体中心,因此需要一个更加_错综复杂_的操作系统,以更厚的抽象层为用户提供更多的服务和游戏。 所有这些,都需要在保证安全性和性能的前提下完成。
因此,我们不再使用shell或BIOS等术语来描述这一领域,不是因为它们不存在了,而是因为它们只描述了新系统的一小部分。 现在的通用术语是"操作系统",它由许多方面组成(引导加载器、内核、用户界面),并分别进行分析。 像往常一样,我建议先看看PSP的操作系统,因为它的模块化设计是PS3的一大特色。
Cell的权限安全
在我们深入探讨细节之前,我需要提一下Cell的不同运行模式。 我原本打算在"CPU"部分对此进行描述,但由于篇幅过长,我还是在这里介绍一下,你会马上看到它的实际用途。 此外,它的模式也会影响在Cell中运行的任何操作系统的设计,而不仅仅是索尼为这款游戏机开发的操作系统。
尽管如此,为了防止未经授权访问敏感数据和/或资源,Cell实现了一套继承自PowerPC规范的权限级别。 换句话说,Cell在两种模式下执行程序:
- 特权模式: Cell允许访问其硬件的每一个角落(寄存器、内存地址、操作码等)。 出于安全考虑,这种模式只能由操作系统的核心(即内核)使用。
- 此外,Cell还可以同时运行多个操作系统,为了在硬件层面上实现这一目标,"特权模式"可以进一步分为"特权1"和 "特权2"。 "特权2"由内核使用,而"特权1"则由管理程序(Hypervisor)使用,后者负责仲裁同时运行的不同内核之间的资源。
- "管理程序"功能也成为IBM总部的一个研究领域 。
- 用户模式: 顾名思义,Cell只授予有限的一组资源,它针对的是运行在操作系统之上的传统应用程序。 如果程序出于某种原因请求访问受保护的位置,执行程序会跳转到内核或管理程序,请求是否允许访问。
此外,SPE还包含一种称为隔离模式的工作方式,它可以屏蔽SPU内的执行进程,因此在SPU完成之前,任何外部单元(PPE或其他SPE)都无法访问该进程。 在向任何SPE上传程序后,都可以激活这种模式,确保处理器在执行敏感代码(如加密例程)时不被篡改。
索尼的操作系统(我将在下面的段落中加以介绍)采用了上述所有模式来处理其安全性问题。
概述
正如我之前所说,这个操作系统相当复杂。 因此,为了能够顺利地跟上本节内容,我们可以将游戏机操作系统中的文件类型分为不同的层次:
- 加载器(Loaders):长话短说,该游戏机中的程序/二进制文件都是系统加密的。 因此,"Loader"是执行"真正的"程序的程序。 换句话说,Loader抓取二进制文件,解密,检查其真实性,最后将其发送到相应的处理器(PPE 或 SPE)执行。 如果这听起来还不够复杂,Loader还会被串联起来,以进一步保护软件。 最后,Loader遍布多种媒介。
- 有些Loader可由索尼公司更新(通过软件更新),而有些Loader则无法更改。 这与它们是否安装在可重写存储器中无关,因为有些Loader是使用游戏机特定密钥加密的,所以在游戏机出厂后就无法更改(至少通过传统方式)。
- 系统文件:这些文件包括低级二进制文件(通过Loader执行)、用于组织硬件的元数据、实用程序和其他资产(如字体、图像)。 与Loader一样,游戏机也有一些无法替换或自动生成的特定系统文件。
- 有些二进制文件借用了自由BSD和NetBSD项目的代码。
- 用户内容: 这些内容包括配置文件(即互联网设置)、游戏使用的数据(即游戏安装文件和保存文件)以及控制台自动生成的数据(即硬盘信息)。
- 与其他层级不同,破坏这些数据不会导致灾难性后果。
操作系统的安全层次
总的来说,PS3的操作系统采用与PSP相同的模块化设计。 回顾前文,操作系统由多个模块组成。 这些模块可以为用户服务(如游戏或应用程序),也可以无限期地驻留在内存中,为其他模块服务(以系统调用和/或驱动程序的形式)。 有些模块比其他模块拥有更多的访问权限(内核模块与用户模块)。

PlayStation 操作系统各组件与 Cell 权限级别的关系图。
有关"其他操作系统"的内容将在接下来的章节中进一步解释。
操作系统在其整个生命周期中会调用许多具有不同权限的模块。 索尼在构建操作系统时,将模块置于Cell的三个权限级别之下:
- 第1级:这里是由索尼编程的管理程序(Hypervisor)所在的位置。 这个程序也被称为
lv1,它是游戏机每一个位的大门,并与MMU触发的异常情况连锁。 也就是说,Hypervisor只接受索尼授权程序(位于下一级权限)的请求。 当管理程序驻留在内存中时,它还提供底层系统调用和FAT16文件系统支持。 - 第2级:自然是为内核(Kernel)保留的,内核是一个特权程序,也称为
lv2或"监控程序"。 内核对管理程序进行抽象,因此第3级程序不会与其直接交互。 内核为PPU和SPU提供多线程功能。 最终,内核引导用户地模块(user-land modules)。 - 第3层:其余程序(称为用户地/用户空间),包括游戏和可视化shell,都在这一层运行。 这些_平民_在内核的意志下与游戏机的硬件进行通信,它们不能单方面催生任何新进程/程序。
存储介质
说了这么多,这些数据存储在哪里呢? 从普通用户的角度来看,只有两种可见介质: 存储游戏的蓝光光盘和存储数据的硬盘。 当然,还有其他一些介质,我们现在就来一一介绍!
Cell BootROM
原来,在Cell中隐藏着一个小ROM,制造商可以将"受保护"的bootloader存储在其中。 IBM提供这个空间是为了让任何公司(不仅仅是索尼)不必手动实施定制的混淆方法来保护他们的启动代码,因为现成的组件并不总能满足客户的需求。
由于这部分代码已经受到混淆的物理保护,因此无需加密。 因此,它是第一阶段bootloader(无法加密)的理想选择,PlayStation 3将其早期启动阶段存储在这里。
NAND/NOR闪存
还记得我之前简单提到的256 MB NAND闪存吗? 大部分操作系统都在这里。 直到索尼在2007年底发布了_CECHH_机型,将256 MB NAND闪存替换为缩小的16 MB NOR闪存。 因此,一些文件不得不转移到其他地方。 为简单起见,我们先来看看这些芯片存储了什么:
- 游戏机专用Loader:特别是两个名为bootldr和metldr的加载程序。 这些文件在制造过程中用刻密钥的方式加密,因此无法替换!
- 尽管如此,索尼的管理程序中有一些隐藏功能可以更新这些文件,不过由于某些原因,这些功能从未被使用过。
- CoreOS:操作系统的前半部分。 它主要由更多的加载器组成,这些加载器将继续启动过程,并最终引导后半部分(GameOS)。 CoreOS还提供恢复菜单(Recovery Menu),这是一个包含维护实用程序的替代外壳,用户可以用它来(尝试)修复游戏机。
- 唯一ID:与PSP的IDStorage类似,这些ID被游戏机用来控制安全硬件(如蓝光光驱);或被索尼用来在其在线服务器上对游戏机进行身份验证(即IDPS密钥)。
- 安全资产:某些程序依赖它们执行安全操作。 例如,带有DRM的蓝光电影会检查称为虚拟表权限管理 (VTRM) 的区块。 索尼还存储了撤销工具和记录,用于将过去被泄露的安全证书列入黑名单。
由于NAND闪存体积较大,采用NAND闪存的机型还存储操作系统的剩余部分(称为GameOS或devflash)。 这包括:
- 可视化Shell(VSH):PSP标志性界面的延续,还捆绑了大量模块(插件)和资产。
- 模拟器:上述程序可让PS3运行PS1、PS2或PSP游戏。 具体加载哪个PS2模拟器取决于游戏机的版本(是否有完整的PS2硬件、部分硬件或完全不使用PS2硬件)。
- 运行库:使用索尼SDK开发的程序与存储在这里的一组库动态链接。
- 蓝光播放器:处理与蓝光驱动器交互和电影解码的程序。
- 系统资产:如二进制文件赖以运行的字体和证书。
如果这还不够,NAND游戏机还存储了其他数据,如xRegistry(收集网络设置、PlayStation网络账户和蓝牙配对设备列表)、更多撤销记录和其他操作系统的加载器(一个非常有趣的部分,我们将在接下来的段落中详细讨论)。
硬盘
首次亮相的2.5英寸硬盘容量从20 GB到500 GB不等(随着更多版本的推出),可为以下方面提供持久的数据存储空间:
- 用户内容:包括游戏保存、奖杯(更多信息请参阅"游戏"部分)和其他用户相关数据。
- 游戏资产:游戏可将文件从光盘复制到硬盘,以缩短加载时间。 操作系统将这些文件视为"游戏数据"。
- 缓存(Cache):游戏可使用一个单独的2 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版之前实施)开始 :
- 主板上的一个独立芯片(称为Syscon)启动并执行其内部ROM中的指令。 然后,它通过SPI(串行连接)向Cell发送"配置环"(Configuration Ring),初始化Cell并停用第八SPU。 最后,它锁存电源线,赋予Cell生命。
- Cell的PPU复位向量指向隐藏的ROM,其中存储了从闪存中定位和解密
bootldr的例程。 解密后的程序由处于隔离模式的第一个SPU加载。 - 现在被隔离的SPU加载
bootldr后,初始化部分硬件(XDR内存和I/O接口),解密名为lv0的二进制文件,并指示PPU运行。 - PPU 现在执行
lv0,解密metldr(游戏机专用加载程序)并将其发送给第三个SPU,同样处于隔离模式。 - 现在执行
metldr的SPU2依次执行另外五个加载程序:lv1ldr解密并加载lv1,其中包含接管第一级权限的管理程序。 此外,lv1还设置了硬盘、蓝光光驱和RSX。lv2ldr解密并加载lv2,它包含内核并在管理程序之上运行。 它还能完成RSX、PS2仿真、蓝牙、USB控制器和多卡读写器的初始化。appldr解密并加载vsh(可视化Shell)和其他依赖项。vsh稍后将允许用户加载游戏。isoldr解密并加载将在第三个SPU隔离模块中运行的模块。 这些模块对安全性至关重要,在整个游戏机生命周期中执行许多加密功能。 因此,第三个SPU被保留用于安全功能,游戏无法使用(游戏只能使用六个SPE)。
加载vsh后,PPU通过图形用户界面授予用户控制权,图形用户界面会发出标志性的_管弦乐启动音效_,随后出现_XMB_菜单。
修订后的启动程序
2011年3月,一个名为"GeoHot"的黑客破坏了metldr的安全性,从而损害了后续Loader的真实性。 因此,索尼通过发布硬件和软件安全更新进行报复。 本文的"反盗版"部分将进一步讨论这些修复措施。
Visual Shell
你是否已经厌倦了这些理论? 让我来谈谈大家都能看到的东西: 可视化Shell。
XrossMediaBar(XMB)是两年前在国际上获得认可的新用户界面,现在已稍作调整,使其可以在沙发上进行交互(即所谓的"10英尺用户界面"),并扩展到"全高清"分辨率(FHD,1920x1080像素)。
虽然PSP用户会发现许多熟悉的功能,但索尼还增加了一套新的应用程序,利用Cell、RSX和蓝光光驱的潜力。 其中许多与多媒体(如视频播放器和图片幻灯片)、电视(如点播电视应用程序,如BBC的iPlayer)、社交(在线头像)和在线购买(PlayStation Now和PlayStation Store,仅举几例)有关。
此外,由于这是一台可能由多个成员共享的家用游戏机,XMB支持多用户,每个用户可以使用不同的PlayStation Network账户,并存储独立的用户数据(已购买的游戏和保存)。

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

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

XMB可以使用本地软件包安装程序安装游戏及其更新和扩展(DLC)。
最后,硬盘的加入让老手们松了一口气,因为过去只要空间不够,他们就不得不购买昂贵的专有存储设备(Memory Stick Pro Duo)。
把你PS3借给我
令人印象深刻的是,并不是每一个与这款游戏机捆绑的应用程序都是以_自身利益_为目标的。 随着分布式计算的出现以及Cell在数据科学项目中的功能,斯坦福大学与索尼联手,让PlayStation 3的用户为医学研究做出贡献。 这就是Folding@home(读作 "在家折叠")。
Folding@home是一个安装在每台PlayStation 3上的应用程序,用户打开后即可连接到中央服务器并运行蛋白质模拟。 此外,该应用程序还可以在非高峰时段在后台运行。
在其整个生命周期中,全球1500万PS3用户的联合计算能力协助Folding@home开展了治疗阿尔茨海默病的研究。 最后,Folding@home和索尼于2012年退役了该应用,而前者则在其他平台上继续使用。
这是我的个人观点,但我喜欢阅读利用分布式计算能力为全球做出贡献的项目,而不是永无止境的关于加密货币挖矿的耸人听闻的文章。 我想我们不应该忘记,每一种新的强大技术,总会有无私的应用被开发出来。
多操作系统建议
IBM在从软件层面描述Cell时提到,由于Cell有很多执行核心,因此能够同时运行多个操作系统。 因此,索尼将这一想法付诸实践,在XMB中添加了一个安装第二操作系统的选项。 这项功能被称为OtherOS,简而言之,它提供了一个分区管理器(XMB只是引导用户调整GameOS分区的大小,并为第二个操作系统分配新的空间)和一个从第二个操作系统启动的按钮(由于OtherOS的启动文件已在Flash中设置)。 因此,用户只需将操作系统填入新分区即可。 因此,许多Linux发行版(如Ubuntu和Fedora)都将 PS3作为另一个可能的安装目标。 你可以将其视为 Linux for PS2 的精神继承者。

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的更新文件。



