当索尼首次宣布 PlayStation 3 将能够直接运行 Linux 的时候,非常令人兴奋。最初,直接安装 Linux 会有些困难。PS 3 支持的安装程序运行自定义脚本,手工将 Fedora Core 5 或 6 安装 DVD 改造成使用特殊 PS3 内核运行的系统。人们花了许多时间来让其他系统(例如 Ubuntu)工作。Terrasoft 的黄狗(Yellow Dog)Linux 带有真正能在 PS3 上运行的图形安装程序。
随着时间流逝,许多事都已经发生了变化。现在能够将 Fedora 7 直接安装到 PS3 上,安装过程最难的部分就是,选择 PS3 的存储驱动器以便让它能够找到安装 DVD,还要记得在初始安装命令行中指定视频模式以便能够看到安装程序。
所以,在 PS3 上是能够运行 Linux 的。问题是目前运行得还不太好。如果将 PS3 作为便宜的 Cell 开发系统,那么您肯定会有点失望地发现:执行默认安装过程之后,在进入 shell 提示符之前就已经用去了数百兆甚至更多的交换空间。
获取 Fedora 7(Fedora 8 可能也适合,但在写作本系列的时候,我手上用的是 Fedora 7)。显然,如果使用经过专门调优的或者针对小巧和效率进行构建的发行版,那么可能会得到更佳的效果,但是 Fedora 7 有一个巨大的优势:它受 Cell/B.E. SDK 支持(也支持 RHEL 5.1,但对 Fedora 7 的支持更好)。
PlayStation 2 也能运行 Linux,但是比较麻烦。为此,索尼发布了专门的工具包,但是只能在更早的厚重的 PS2 机器上运行,而且要求使用附加硬盘。不支持后来的(更普遍的)“苗条” PS2 机器,所以这个工具包很快就消失了。但是,它消失的主要原因是它几乎只是个概念证明;PS2 系统上没有足够的内存,也没有专门的编译工具,CPU 只是标准的 MIPS 内核。除了索尼专用的工具之外,矢量单元没有得到广泛支持,也没有充足的文档。
对比之下,在 PS3 推出之前,就已经有运行 Linux 的支持,而且索尼还大量提供了支持代码和支持包。在系统发布前后推出的 “Cell addons” 光盘上包含对 Fedora 5 和 6 的直接支持,而且还提供了其他 Linux 发行版开发 PS3 移植所需的所有文件。所以,不用单独的光盘就能在 PS3 上运行 Fedora 7,不过仍然需要从索尼下载并安装引导加载程序。增值软件光盘(请参阅 参考资料)将继续用新版内核进行更新。
理解 hypervisor
PS3 的基本规格是 256MB 主内存,一个 Cell/B.E. 处理器,有线以太网卡(有些型号上有 802.11b/g 无线网卡),称为 RSX 的图形处理单元(自带 256MB 内存)和一块 SATA 硬盘。还有些外部设备,包括 USB 端口、蓝牙,某些型号上还有读卡器。但是,这并不是运行 PS3 Linux 的机器。
在 PS3 上,Linux 在 hypervisor 控制下运行 — 实际上,PS3 Linux 是在与 Xen 类似的虚拟机上运行的。hypervisor 提供了对 PS3 硬件的受约束和经过过滤的访问。例如,Linux 代码不能直接访问 RSX 图形处理器,但是可以使用其提供的专门设备对 RSX 进行有限访问,从而实现不错的 2D 帧缓冲效率。
hypervisor 提供了许多转换。例如,正如前面提到的,hypervisor 为 Linux 提供了一个虚拟的帧缓冲设备,是 hypervisor 随后用 RSX 图形内核实现的。类似的,Linux 不能访问 SATA 硬盘,只能访问 SCSI 驱动程序,由后者映射到内部驱动器中分配给 “其他操作系统” 分区的区域。不能从物理上访问 PS3 游戏软件使用的磁盘部分。
网络硬件可能是最有趣的部分。PS3 Linux 既能够访问千兆以太网络,也能够访问 802.11g 无线网络,但不能同时访问。在配置网络接口时,如果用 SSID 将其指定为无线接口,那么 hypervisor 就使用无线接口,否则使用有线接口。
下面我们讨论修订的规格。PS3 Linux 在虚拟机上运行,虚拟机有一颗带 6 个 SPE 的 Cell/B.E. 处理器,大约 212MB 主内存,一个网络接口,一个 SCSI 磁盘(如果有读卡器,则会有更多 SCSI 磁盘),一个 SCSI 设备(可能是 DVD-ROM、CD-ROM,也可能是蓝光光驱),USB 和蓝牙端口。图形是通过特殊的帧缓冲设备提供的,支持各种视频模式(请参阅 理解消费者电子视频模式)。
规划开发环境
为了更好地利用 PS3 进行开发,首先要确定需要什么样的开发环境。如果愿意完全取消 X,那会节省大量内存(Fedora 默认运行 Gnome,这可能不是最省内存的策略)。许多系统设置工具都可以通过 X 访问,但是运行的时间很长。我在 Gnome 下运行图形包更新程序时花了几个小时才完成。这可能是因为该过程总共需要 375MB 的内存,严重超出了可用的物理内存。大多数时间都花在等待交换磁盘上,就像 VAX 上的 Emacs 一样。
由此得到的教训是:可用内存将是 PS3 上的最大弱点。请尽快关闭那些不需要的服务。用 xterm 代替 gnome 终端。如果需要多个窗口,可以考虑运行 screen 而不是多个 xterm。
显示选项
如果只是玩玩,那么不用对这些问题太过担心。但是如果在运行的时候需要查看显示结果,那就需要考虑显示选项。PS3 的 HDMI 输出质量最好。如果有计算机监视器,那么 HDMI 转 DVI 线很便宜,但是要确定监视器支持高带宽数字内容保护(High-bandwidth Digital Content Protection,HDCP)。如果监示器不支持,那么只会看到一个黑色屏幕,或者可能是一片明亮的彩色状态。如果正在使用 KVM 开关,请注意开关也必须支持 HDCP!不幸的是,似乎无法关闭这项 “功能”;无法得到未加密的信号。虽然这种做法是为了保护高清晰电影,但是查看 X 桌面也需要特殊许可还是有点讨厌。HDMI/DVI 支持 PS3 提供的每种视频模式,包括消费者电子模式(例如 720p)和 PC 模式(例如 WXGA)。
如果没有 HDCP,也没有支持 DVI 的监视器,那么只能改用分量视频。大多数电视都接受分量视频,有些计算机监视器也支持。分量视频的效果与早期的 VGA 类似,只是它带有三个 RCA 连接器,一个输出红色,一个输出绿色,一个输出蓝色。分量视频线要单独收费 — 不过与 PS2 的分量视频线相同,如果有 PS2 的线,可以继续用。分量视频支持 720p 和 1080i 显示,但是可能不支持 1080p(如果不知道这些是什么,请参阅 理解消费者电子视频模式)。分量视频提供的分辨率和清晰度比下面两个选项高。
如果没有分量视频,那么可以使用支持 S-video 的设备。S-video 支持 480i,但是要将信号分解到两个独立通道中,一个通道传输亮度,一个通道传输色度(即 “亮度” 和 “颜色” )。他的清晰度比最后一个选项 —— 复合视频 —— 要好些。复合视频是旧式的 RCA 接头,通常是黄色,几乎与任何电视兼容。如果能不用复合视频,就不要用。
注意,Fedora 7 安装程序实际上不能在 720p 下使用,除非采用它的文本模式。实际上,如果打算采用 PS3 作为开发系统,最好是使用更高的分辨率模式。Linux 系统适合于较大的显示器,Fedora 的窗口环境在低分辨率显示器上的效果非常差。而且,低分辨率显示 —— 特别是通过复合视频线传输时 —— 很难看清楚,界面非常模糊。
炫浪学院 Linux教程