« Xbox 360 架构 (index)

Xbox 360 架构

Chapter 7: 操作系统


目录

  1. 概述
    1. 动荡的进步
    2. 可召回的安全体系设计
  2. 架构
    1. 管理程序
    2. 内核
    3. 用户空间
  3. 向后兼容性
  4. 存储介质
    1. 启动ROM
    2. 内置NAND
    3. 记忆卡和硬盘
    4. 外部USB
  5. 启动过程
    1. 多核混沌 (Multicore chaos)
    2. 启动流程
  6. 可更新性
  7. 交互界面
    1. "Blade"仪表盘(2005)
    2. 新Xbox体验(2008)
    3. "Kinect"更新(2010)
    4. "Metro"风格的全面革新(2011)

Xbox 360与PlayStation 3一样,面临着相似的需求和潮流。 因此,它提供了许多服务,包括在线游戏(通过Xbox Live)、数字市场、媒体播放器、文件系统资源管理器(虽然功能非常基础)以及其他实用工具。

概述

Xbox 360的操作系统是一系列紧密集成的裸机实用程序和用户空间应用程序,被压缩在16 MB的NAND存储空间内。 与PlayStation 3类似,微软设计的操作系统旨在提供多媒体播放、网络(如多人游戏)功能,以及游戏运行和系统安全防护。

这意味着该系统包含一些核心组件,负责处理游戏机的低级功能,如硬件访问、安全防护和资源管理。 除此之外,还包括各种应用程序(例如启动动画、名为'Dashboard'的交互式用户界面以及游戏本身)和用户数据(如游戏存档、用户配置文件和网络设置)。

动荡的进步

在Xbox 360的生命周期中,我注意到了比竞争对手更为混乱的演变,这涉及到了用户界面的不断重新品牌化和彻底重新设计。 我推测微软试图从一群目标受众转向另一群。 因此,为了更好地理解这一部分,我将它的演变组织成以下几个时期:

可召回的安全体系设计

回顾我对PlayStation 3操作系统的分析,该系统被划分为三个主要部分:

这种设计理念与PPU的处理器权限级别(影响Cell和Xenon处理器)紧密相关,能够防止一般应用程序(如游戏)访问敏感资源,例如解密密钥。

IBM采用了三种权限级别(而非传统的两种),以支持同时运行多个操作系统。 按照这一设计,每个操作系统只能在最低的两个权限级别运行,而最高权限级别则专门保留给负责监控所有操作系统的管理程序。 在实际应用中,PlayStation 3和Xbox 360通常仅需要一个操作系统(尽管曾短暂支持OtherOS功能,但很快被取消)。 因此,索尼和微软分别设计了各自的管理程序,以实施各自的安全策略,并执行内存管理任务。 由于Cell和Xenon在架构上的差异,这两种管理程序的实现方式存在显著差异,从而各自拥有独特的优势和潜在弱点。

Image
该图表展示Xbox操作系统的组件如何适应Xenon的权限级别。

Xbox 360和PlayStation 3在安全模型上的主要区别在于,Xbox 360在相同的权限级别(第二级)下同时运行内核和用户空间程序。 因此,所有关键任务都由管理程序承担,它还从硬件方面获得了额外的加速支持(我将在"反盗版"部分详细说明)。

架构

接下来,我们详细分析操作系统的主要组成部分。请注意,这部分内容不包括引导加载程序,关于引导加载程序的内容,我将在单独的部分进行讨论。 现在,让我们关注游戏机启动后驻留在内存中的那些组件。

管理程序

管理程序是一个极其小巧的程序,仅占用128 KB的内存空间。 由于其被赋予了最高的权限级别,它承担着以下关键任务:

管理程序通过系统调用来进行操作。外部程序通过这些系统调用来请求管理程序提供的服务。 然而,管理程序是否会响应这些请求,取决于程序的认证级别。

内核

管理程序主要负责底层硬件服务,因此引入了内核作为额外的抽象层。 内核同样驻留在内存中,但权限级别低于管理程序。 内核的主要职责是提供用户空间程序可以利用的功能,例如:

内核为了正常运行,会从主内存中预留32 MB的空间,用于分配其所需的资源。

用户空间

用户空间程序指的是那些在内核之上运行的可执行文件。 这些程序以Xbox可执行文件(Xbox EXecutable,XEX)的形式存在,其结构与传统Windows系统的EXE文件类似,但专为Xbox 360进行了定制。 最主要的区别在于,XEX文件的可执行代码采用PowerPC ISA二进制格式(而非x86架构),并且需要在加密后才能运行。这些代码使用微软的私钥进行签名,并在文件头和元数据中存储哈希值,以防止被篡改。

从启动动画到游戏本身,所有这些程序都是以独立的XEX文件形式存在的。 有些XEX文件由内核自动加载(如启动动画和交互式shell),而其他文件则由用户通过shell手动加载(如游戏和媒体播放器等)。 当用户或内核请求运行某个XEX文件时,内核会先将该文件复制到主内存中,然后管理程序会对其进行签名验证和重新加密,将相关内存区域标记为可执行状态,并最终指示CPU执行该文件。

尽管Xbox 360在游戏之间并不支持复杂的多任务处理(我认为这对游戏机来说并不是主要功能),但内核仍然需要32 MB的主内存作为其工作空间。 这使得用户能够在游戏中打开Xbox指南(通过按下控制器上的"Xbox"按钮弹出的菜单)或在游戏进行中播放音乐。 为了在全屏应用程序之间进行切换,Xbox指南提供了一个选项,允许用户返回到仪表盘并启动其他程序。

最后,所有用户数据都被集中管理在一个虚拟的个人资料中。 为了管理这些个人资料相关的服务,如成就记录、头像选择和保存游戏数据,内核会运行一个名为"XAM"的程序。 当用户首次启动游戏机时,系统会创建一个新的个人资料,且支持存储多个个人资料。

向后兼容性

一个有趣的现象是,Xbox 360能够运行许多前一代Xbox(我们称之为"经典Xbox")的游戏。 这是通过纯粹的软件仿真实现的,尽管它并不具备与CECHA版PS3相同的兼容性水平,但我认为这些方法更巧妙、更经济、更一致。

该仿真器被称为"FU"(作为xefu.xex文件存在),并且只能安装在硬盘上,与其他操作系统的可选资产并存。 每次用户在Xbox 360上启动经典Xbox游戏时,FU都会加载。 然而,为了确保用户获得良好的体验,FU只有在游戏列在其本地白名单中时才会进行仿真,微软在这个白名单中跟踪哪些游戏被认为是"可玩"的。 随着更多系统更新的发布,更多的游戏被添加到白名单中。

FU的作者之一Michael Brundage将开发过程描述为"可能是我的职业生涯中最艰难的技术挑战",并提到"大多数标准库在效率上都不尽如人意,尤其是在数学方面" 。

存储介质

在了解了操作系统的基本结构之后,接下来我们将探讨信息是如何在Xbox 360上存储和分布的。 您会注意到,游戏机提供了多种存储介质,为了确保系统的安全性,微软开发了多种文件系统和协议来管理这些介质。

启动ROM

这里存储着这个游戏机上最关键且脆弱的程序。 与PlayStation 3类似(再次说明,两者都采用了IBM的技术),Xenon隐藏了32 KB的ROM,其中存储了引导加载程序的第一阶段,以及用于解密和验证后续引导阶段的微软RSA公钥和SHA-1哈希值。

由于该区域的安全系统尚未设置,且CPU只能理解未加密的机器代码,因此这个区域恰好是未加密的。但这并不是微软担心的问题,因为引导ROM被封装在CPU芯片内部,而且公钥不能被用来破解系统。 然而,作为一个"ROM",这也意味着这段代码在离开工厂后无法被修补。

无论如何,引导ROM只在游戏机开机后被执行一次。

内置NAND

Image
NAND芯片

在每台Xbox 360的主板上,您都会发现一个NAND闪存芯片。 微软使用这个芯片来存储以下内容:

所有这些数据都以多种方式加密。 其中大部分使用微软的私钥结合其他密钥进行加密,这在理论上使得篡改它们变得几乎不可能!

与PS3不同,微软成功地将所有这些数据塞进一个16 MB的芯片中,尽管2008年和2009年的一些版本配备了256 MB和512 MB的NAND芯片。 然而,这并不是一个破坏性的改变,因为额外的空间被划分为一个单独的分区,并被视为一个记忆卡。

记忆卡和硬盘

Image
记忆卡。最便宜的存储介质 但它们仅适用于2010年之前的主机版本。

Image
外置硬盘 作为单独的配件销售,并随"高级"版本一起附带。 硬盘外壳内部有一个传统的2.5英寸硬盘,连接到数据线和电源适配器。

Image
内置硬盘,是薄型机(2010)的另一种配置。 硬盘外壳被安装在一个隐藏的插槽中,不需要任何类型的适配器(它的唯一目的是防止晃动)。

当你将游戏机立起放置时,可以看到前面有两个"记忆卡"插槽。 在游戏机的顶部,你会发现一个修改过的SATA接口,用于连接硬盘驱动器(只适合那些由微软封装和销售的硬盘)。 这两种存储介质都是选装的,并用作大容量存储设备

在安装了这些存储介质后,Xbox 360会对其进行初始化,并创建多个分区。 但有趣的是,它并不会创建一个主分区表。 实际上,每个分区的位置(偏移量)都是预先设定在内核中的,所有分区——除了存储用户数据的分区——的大小都是固定的。 此外,每个分区都使用专有且未记录的文件系统,包括用于通用数据的"FAT Xbox"(FATX)文件系统,以及用于缓存数据的"安全事务文件系统"(Secure Transacted File System,STFS)。

只要还有存储空间,无论是记忆卡还是硬盘,都可以用来存储用户配置文件、游戏存档、下载的游戏(最初称为"街机游戏")以及可下载内容(DLC)。 不过,只有硬盘能够存储Xbox经典游戏模拟器,这个模拟器会在插入经典Xbox游戏光盘后自动下载到硬盘上。

微软出售的记忆卡最大为512MB,硬盘最大为500GB。 你可能会想,"那么,如果我更换外壳内的硬盘为更大的硬盘会怎样?"但这已经被预料到了,因为微软出售的所有硬盘驱动器都嵌入了一个安全扇区分区,以防止用户使用第三方硬盘。 这个块编码了硬盘的独特属性(序列号、型号号、大小等),内核会将其与硬盘的元数据进行比较,此外还有微软标志的位图(以减轻使用商标法进行分发的风险)和一个RSA签名(以防止第三方制作自己的安全扇区)。 尽管如此,一些用户最终通过手动覆盖硬盘驱动器的元数据找到了解决方法 。

外部USB

Image
典型的U盘

2010年4月,微软承认_了廉价U盘(它们已经征服了每个家庭)的入侵_,并发布了一个软件更新,允许在Xbox 360上使用U盘,作为扩展存储空间的一种方法。

U盘可以存储硬盘上大多数的内容(包括游戏),除了Xbox经典模拟器。 可以说,USB 2.0的理论带宽(480 Mbit/sec或60 MB/sec)与内部的SATA I协议(1.5 Gbit/sec或187.5 MB/sec)不相匹配,但有一个额外的存储选项总是受欢迎的。

在幕后,U盘被格式化为广受欢迎的FAT32文件系统。 此外,内核还会创建一个隐藏文件夹,用于存储包含FATX结构化数据的blob ,这些数据就是Xbox 360相关的数据存储的地方。 这种设计使得游戏机能够在"不安全"的存储介质中满足其安全要求,尽管如此,从U盘上只能访问最多16GB的数据。

启动过程

好了,现在你已经了解了这个系统的工作原理、结构以及存储位置。 但是,还有一个关键问题需要解答,那就是如何从"无"(即关闭状态)转变为"运行加密内核的管理程序,加载由微软签名的可执行文件"? 这就是引导加载器的作用,而这个过程包含了_许多,许多_阶段。

多核混沌 (Multicore chaos)

在开始之前,我们需要解决一个基本问题。 对于同构多核CPU来说,所有核心都有权"掌控"整个系统,但这只会导致混乱,因此,只由一个核心负责指导其他核心。 这个领导者通常被称为"主核心",而其他核心则被称为"从核心"或简称为"核心"。

在Xbox领域之外,这种核心层次结构有时是直接嵌入到芯片硬件中的,而其他架构则需要人工介入来设定。 例如:

在PowerPC的情况下,情况就比较复杂了,因为Xenon是一个定制的设计,并不属于IBM的PowerPC 2.02规范。 但是,通过研究这款游戏机的低级自制源代码,我推测它的启动处理过程与x86架构类似。

启动流程

说到这里,现在我将描述用户按下电源按钮后Xbox 360的操作。

首先,主核心的重置向量似乎是0x80000200.00000000,这指向CPU内的一个_秘密位置_:前面提到的32KB的启动ROM,这是启动过程的第一阶段所在的位置。

为了完整起见,将简要提及一种特殊设备,称为"电子熔丝"(eFuse)。 这是另一种类似于ROM或RAM的存储介质,但具有独特的物理特性。 我将在"反盗版"部分详细介绍它,以避免让你感到不知所措,所以现在只需记住这些基本事实。

不再赘述,以下是启动链的工作原理。 这一切都从启动ROM开始,然后按照以下步骤进行 :

  1. 1BL(即"第一引导程序"):主核心被指示从NAND闪存中获取下一阶段(称为"CB")并加载到内部SRAM中。 CB被发现使用RC4算法加密。 因此,CPU使用存储在1BL中的一个密钥和存储在CB头部的另一个密钥来派生出一个解密密钥。 一旦解密,CPU通过散列解密区域并将其生成的散列与CB中存储的另一个散列进行比较来检查其有效性。 后者还使用存储在内部ROM中的微软的公共RSA密钥来验证散列。 最后,如果整个过程顺利完成,没有问题,CPU将继续在CB处执行,否则,CPU会触发一个POST错误,Xbox 360开始闪烁红灯。
    • 这个过程涉及多种密码的组合,如HMAC、SHA-1和ROT。
  2. 2BLCB:现在从内部SRAM执行的CPU查询电子熔丝,以检查正在运行的CB版本是否与eFuses上写入的版本匹配。 然后,它初始化大部分硬件。 最后,CPU继续从NAND获取另一个称为"CD"的块到主内存,并重复1BL所做的类似的解密和验证任务,这次使用从"CPU密钥"(存储在电子熔丝中)派生的另一个密钥。 如果一切顺利,下一阶段将继续。
    • 在后来的软件更新中,这个过程被分为两个引导程序(名为CB_A和CB_B),以减轻被利用来执行自制软件的故障(更多细节在'反盗版'部分)。
  3. 4BLCD:这是另一个解密阶段,更接近实际的运行负载。 在这个阶段,CPU会获取另一个名为CE的数据块,它将经历一系列熟悉的验证过程(包括RSA检查),并在主内存中被解压缩。 一旦解压完成,CPU将直面内核管理程序。 但过程还没结束,CPU必须接着获取系统更新并应用到这两个程序上,这个过程被称为CF。 然而,在继续之前,CD会命令比较已安装的更新数量与电子熔丝块中预设的计数器, 这是为了防止系统被降级
    • 所使用的解压缩算法名为'LZX Delta',由微软开发。
  4. CF:在这一阶段,系统会获取存储在NAND上的更新块,并使用LZX算法对它们进行解密和解压缩。 一旦这些更新准备就绪,它们就会被应用到位于主内存中的内核和管理程序。 完成所有更新后,CF阶段会返回到CD阶段。
  5. CD(返回后):此时,一切准备就绪,CPU会被引导至主内存中的管理程序
  6. 管理程序:这个程序将接管硬件的控制权,然后将执行权交给内核。内核负责加载启动动画和仪表板
  7. 现在由用户控制。

可更新性

我想这对您来说并不新奇,但确实,这款游戏机拥有一套可以更新的操作系统

然而,可能让您感到意外的是,无论游戏机的版本如何,它们都预装了2005年发布的相同初始内核(版本2.0.1888)[。 实际上,软件更新程序会在NAND上安装以增量补丁形式的"更新包",正如您在前一节所看到的,这些补丁在启动过程中被应用。

Image
2005年的Xbox旧界面正在安装更新(与旧的"Blade"界面告别!)。

更新可以通过多种途径获取,包括Xbox Live在线下载、通过零售游戏、刻录传统CD(这是我们在2010年代之前分享文件的常用方式),或者使用U盘。 一个标准的更新会安装前面提到的管理程序和内核的补丁,并且会覆盖用户区域的文件,比如仪表板。 最后,为了防止系统回滚到旧版本,更新程序会通过编程电子熔丝来确保Xbox只能启动更新后的系统版本。

通常情况下,更新不需要额外的存储空间。 但是,在2008年微软发布"NXE"更新时,由于NAND存储空间不足,更新程序还在硬盘上安装了静态资源(主要是新3D头像的主题和资源)。 这促使微软在后续版本的主板上增加了NAND的容量,捆绑了高达512MB的NAND,后来更是包含了高达4GB的内置记忆卡。 这些增强功能只有在没有硬盘的型号上才能找到。

交互界面

现在,我想我们该从繁重的理论中暂时抽身,转而探讨一下这款游戏机所经历的不同图形界面。 尽管本文主要聚焦于计算机架构,但用户界面与我们之前讨论的那些复杂硬件同样关键。 另外,用户界面设计一直是我研究硬件时非常关注的一个方面!

在接下来的部分,你可能会觉得我对每个界面都有些许批评,但我觉得重要的是要准确指出每个设计的优点和不足,这样我们才能更好地理解它们演变过程中的逻辑和思路。

"Blade"仪表盘(2005)

Image
主屏幕,控制按钮显示在中心,而水平边缘指示存在其他刀片页可供导航。

Image
已安装游戏列表,之前从Xbox Live Arcade(一个数字市场)下载。 请注意,这是一个全屏视图,因为在前一种类型的屏幕上没有足够的空间。

Image
设置界面。

Image
存储菜单,允许用户删除或复制仅限用户的内容。 请注意,它移除了其他刀片页指示器,以回收利用更多的屏幕空间。

Image
一个简单的头像选择屏幕。

Image
长时间按下控制器上的菜单按钮(也就是手柄上的Xbox标志),会打开一个名为"Xbox指南"的弹出菜单,其中提供了多种快捷方式。

"Blades"仪表盘。 画面来源于和。

用户界面的第一个版本,现在对一些人来说充满了怀旧情怀,就是所谓的Blades仪表板。 在这个设计中,不同的服务组(如游戏、多媒体、设置等)被安排在不同的重叠层上,这些层被称为"刀片页(blades)"。 所有刀片页都处于相同的层级,用户一次只能打开一个刀片页/类别。 要浏览内容,用户需要在不同刀片页之间切换,并与放置在那里的控件互动。

在我看来,这种设计风格让我想起了那些设计吸引人的可折叠小册子(实际上,随游戏机附带的说明书就采用了类似设计)。 此外,其设计语言(包括排版、色彩调和模糊效果)与Windows XP及其媒体中心(Media Center)包有相似之处,甚至Windows Longhorn的早期版本也展现了这些共同特征。

Image
Windows Longhorn,Build 4015(2003)。 在最终发展成为Windows Vista之前,微软曾在用户界面设计和颜色方面进行过多项实验。 特别是这个版本,它在一些小细节上与Blades设计有相似之处。

Image
Windows XP媒体中心版(2005年)中包含的媒体中心。 这个Windows XP的特殊版本附带了一套专门针对电视而非个人电脑的应用程序。

实话实说,为了同时适应4:3和16:9的屏幕比例,整体设计做出了很大的妥协,无法充分利用16:9的优势。 元素布局也缺乏一致性,像Xbox指南这样的界面,所有控件都被压缩在很小的空间内。 在我看来,最大的限制是导航菜单(显示可用菜单的列表)始终占据屏幕两侧的空间, 这减少了打开菜单的有用面积。 因此,为了从主屏幕层级中脱离并恢复全屏显示,不得不采用特殊的导航设计,这进一步加剧了界面的一致性问题。

尽管如此,这个图形用户界面为这款游戏机赋予了独特的身份,显然它主要针对的是年轻玩家群体,这在几年内取得了_不错_的成效。

新Xbox体验(2008)

Image
新的主菜单。 请注意,用户必须滚动才能查看所有可用元素。

Image
随着Xbox Live的功能扩展,现在可以安装多种类型的应用程序(不再仅限于"街机"游戏)。

Image
设置菜单保持了原有的布局,但采用了新的颜色方案。

Image
存储菜单及其颜色方案已更新。 在这个例子中,用户设置了一个背景。

Image
2D头像仍然可以使用,但现在也鼓励用户创建自己的3D形象。 这将用于游戏(类似于任天堂的Mii)。

Image
作为对旧设计的致敬,新的指南菜单与旧的Blades设计相似,这有助于提供更多且更有组织的快速入口。

"NXE"仪表盘。 画面来自和。

随着微软不断增加新的服务和功能,Blades的导航方式逐渐显现出其局限性(因为它限制了顶层导航界面的数量),并且在后续的软件更新中,空间不足的问题也日益突出。 为了应对这些挑战,2008年,微软推出了一个全新的仪表板界面——新Xbox体验(NXE)。这个界面采用了"无限滚动"的设计模式,使得用户可以在首页上看到更多的服务选项。 此外,它还引入了一些新的元素,比如最近在Windows Vista和一系列新的Windows Live应用程序中流行的光泽效果和3D动画效果。

Image
Windows Vista(2007)。 展示了如何使用标志性的"Flip 3D"功能在多个窗口之间进行切换。

Image
2008年的Windows Live Mail,采用了类似Windows Vista的主题风格,包括光泽效果。

通过新的设计,无论屏幕所在的操作层级如何,都可以充分利用全屏空间。 有趣的是,这种导航布局与索尼的XMB设计非常相似,都是通过垂直箭头切换不同的类别,而水平箭头则用于在同一类别内导航不同的元素。

"Kinect"更新(2010)

Image
专为Kinect控制设计的新主页屏幕。 注意右下角的容器显示了Kinect当前正在捕捉的内容。

Image
随着Xbox Live功能的不断扩展,现在可以安装各种类型的应用程序,而不仅仅是游戏。

Image
设置菜单进行了一些小改动。

Image
存储菜单同样进行了更新。

Image
3D头像功能也得到了增强。

Image
指南菜单的风格变得更加简约。

带有自定义壁纸的"Kinect"仪表板。 画面来自

随着Kinect的推出,微软需要对仪表板进行适配,以减少对传统控制器的依赖。 在这次更新中,设计团队将光泽效果替换为更为低调的绿色和灰色调。 此外,原先类似3D _Aero_的视觉效果也被更常见的放大动画所取代。 这一变化与Windows 7的发布及其对视觉效果简约化的处理风格相一致。

Image
Windows 7(2009)。 展示了新的"Aero Peek"功能,用于预览最小化的窗口。

Image
2011年的Windows Live Mail,是名为"Windows Essentials"的桌面套件的一部分。

除此之外,值得一提的是,这个设计仅在一年后就被一个更为彻底的全新设计所取代。

"Metro"风格的全面革新(2011)

Image
新的主屏幕上,新闻、广告和应用占据了相等的空间。 一些信息类型(比如广告)所占的空间比用户期望的还要多。

Image
新的应用选择器设计得就像零售店的货架一样。

Image
设置菜单基本保持不变。

Image
存储菜单也同样没有太大改动。

Image
看来这种极简主义的设计风格将会持续一段时间。

"Metro"仪表板。 画面来自

2010年,Windows Phone 7推出,一种名为Metro的新型界面首次亮相,这种界面的设计风格以纯色和白色剪影为主。 由于Metro设计的灵活性,微软计划将其应用到所有平台上,这一目标在接下来的年份随着Windows 8的发布和Xbox 360的更新而实现。 尽管不同设备对Metro的接纳程度存在显著差异,但Xbox 360却几乎完全采用了Metro风格(与Windows 8不同,后者的大部分应用程序仍然采用'传统'设计)。

Image
Windows Phone 7(2010年)的宣传屏幕展示了新的主页屏幕、联系人应用(采用了新的"全景"布局)以及锁屏界面。

其中最显著的变化是主页屏幕的设计,它从二维导航风格转变为一种名为"全景"的新型多行分布方式。 这种新的导航模式借鉴了旧Blades仪表板的类似设计,但避免了旧设计的错误。 现在,图标比文字标签更加突出,统一的形状使得整体布局显得更为简洁。 不过,至少这种布局在所有主页屏幕视图上保持了一致性(尽管我必须承认,我有点怀念以前那些充满变化和惊喜的设计时代)。


Previous: 6. I/O

Next: 8. 游戏


Rodrigo Copetti © 2026 RSS Feed

切换至现代版

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