红联Linux门户
Linux帮助

Linux on Mac: POWER 程序员初级读本

发布时间:2006-07-03 16:48:56来源:红联作者:WWW
David Mertz, Ph.D., 开发人员, Gnosis Software, Inc.

尽管大部分 Linux 用户已将 Linux 作为他们的 x86 兼容机的操作系统,但 Linux 在 PowerPC 机器上也运行得相当好。David 简单介绍了 PowerPC 和 Apple 公司生产的各种令人喜爱的 PPC 机器上的 Linux,在这些机器上使用 Linux 对众多用户来说用处极大。

关于 PowerPC

POWER 系统架构描述了由 IBM、Apple 和 Motorola 共同提出的一族 RISC CPU。在这个芯片家族中,高端的 POWER4 芯片用于 IBM 的各种中端机器(参阅 参考资料 中的链接,获得更多关于 IBM iSeries 和 pSeries 硬件和软件的信息);在个人计算机、工作站或者工作组服务器级别,POWER 芯片的 PowerPC 支系用于被广泛采用、由 Apple Computer 提供的消费者计算机。PowerPC 家族的芯片 ---- 尤其是 Motorola 的 ---- 还用于使用各种嵌入式系统和专门系统,其中包括一些较小的制造商生产的 PC 机,比如最近推出的类 phoenix 的 Amiga。

不同的 POWER 系统架构芯片之间的关系与 x86 类似 ---- 在很大程度上,新一代的芯片具备对先前芯片的向后兼容性,同时也具有新的和改进的性能。在 PowerPC 家族支系中,五年前的 Apple 用的是 601、603 和 604 型芯片。当前的 G3 型已经逐步被淘汰,取而代之的是类似的 G4 型,它们都是 32 位芯片,运行于不同的时钟脉冲速度下;最近推出的 G5 是一款 64 位 IBM 芯片,主要是向 POWER4 型芯片中添加了一些多媒体专用指令。

对 Linux 开发者来说,所有这些芯片的关键之处在于它们都可以很好地运行 Linux。现在可以获得用于 PowerPC 支系芯片、界面非常友好的发行版本,并且提供商业客户支持。IBM 甚至为其高端的 POWER4 机器的用户安装了 Linux。

要是您想运行 Linux ---- 为什么要购买 PowerPC 机器?

毫无疑问,运行 Linux “默认的”系统是 x86 机器。无论是基于 Intel、AMD、Cyrix、Transmeta,还是其他小制造商的 CPU,x86 系统架构广为人知,并且用于大部分的个人计算机、工作站和小型服务器。遵循主流当然可靠。

对很多 Linux 用户来说,购买 PowerPC 机器的最佳理由其实很简单,那就是 Apple 有一系列做工精良、价格合理的机器可供选择。无可否认,G4 系列在 CPU 能力上不及同等价格的 x86 机器 ---- 这是个关键。G4 落后并不 很 多,但确实有一些落后。然而,Apple 制造了一批最优秀的膝上型电脑,这些电脑在人体工程学、美感、电池寿命和重量方面都有突出表现。作为膝上型电脑,这些特性对我来说其重要程度远超过单纯的数字运算能力。在桌面电脑领域,G4 型凸显其人体工程学和美感方面的特性 ---- 例如,Apple 的悬挂式平板 iMac 的简洁。不仅如此,所有的 Apple 机器都以耐用和可靠而闻名 ---- 包括Apple 的非常适用于集群和服务器阵列的机架固定服务器。

在高端领域,Apple 的 G5 系列在速度上足可以与最快的基于 x86 的 CPU 和系统相匹敌;也就是 Intel 的 Itanium 和 AMD 的 Athlon64。尽管三个竞争者采用各自不同的基准,但所有这三种芯片却获得了相差无几的性能(都很快,适用于对数字运算要求较高的应用)。不仅如此,在价格方面,Apple 的 G5 系列要 低 于 x86 供应商所提供的与之相当配置的系统,例如 Dell、Gateway、HP 和其他知名的 PC 零售商(他们与 Apple 令人印象深刻的价格优惠背道而驰)。值得指出的一点是,Apple 对 GCC3+ 进行了优化,使得生成的 PPC 结果代码的质量与 Intel 的 ICC ,或者 IBM 的 VisualAge C++ 为 x86 编译器生成的代码质量相当(可以证明,它比 x86 上 GCC 生成的代码要好)。

最后,Linux/x86 和 Linux/PPC 之间的差别非常小。本文将更详细地介绍后面的发行版本,但通常您可在 Linux/PPC 上运行相同的窗口管理器,运行相同的工具,安装相同的服务器,等等,如同在任何 x86 机器上一样。除非您去查看物理硬件 ---- 或者您是一个很特殊的用户,需要各种操作的精确性能特性(例如,您的应用程序是基于特定的向量扩展而设计的)---- 甚至您将不知道自己是在哪个系统架构上运行 Linux。屏幕看起来几乎完全一样,大部分配置文件将包含相同的设置,通过线缆传输相同的字节。

要是您已拥有一台 Mac ---- 为什么要运行 Linux?

令人惊讶,操作系统(不是那些来自 Microsoft 高度私有的)已经成为日用品。这意味着什么呢,大部分垂直应用程序只需要重新编译就可以很好地运行于 Linux、FreeBSD、SunOS、Irix、AIX,当然也可以运行于 Mac OS X;有时连这个步骤都不是必须的,因为 ABI(应用程序二进制接口)支持外来的二进制文件。

如果您近几年购买了一台 Apple 机器,它会预装一个来源于 Unix 的高质量操作系统,名为 OS X。OS X 有一个内核和称为 Darwin 的基本工具集,它们都遵循自由软件许可,(部分地)来自于 FreeBSD ---- 唯一私有的是 GUI (Aqua) 和与 OS X 捆绑的终端用户与系统管理应用程序。甚至 X11(特定的 XFree86,不用管它的名字有什么意义)也得到了 OS X 的支持,无论是全屏还是无根 (rootless)模式。“rootless”这里指的是 X11 应用程序可以与本地的 Aqua 应用程序一同运行。您可以在 OS X 上运行 Apache;可以运行 NcFTP 服务器;甚至可以运行 GIMP 或者 KOffice。那为什么还要安装 Linux 呢?

在很多情况下,您的 Apple 机器上更应该运行 Linux 而不是 OS X。第一种情况 ---- 这只是相对于那些有某种嗜好的人而不是就所有的用户而言 ---- 是当 Mac 可能成为一台老机器时。在老的 Mac 上:603、604 或者更早的 G3,OS X 或者完全不被支持,或者至少是特别慢。Linux 在这些老的系统上也可以运行的很快;而且 Linux 在作为服务器,或者很多情况下即使是作为桌面系统,也要比这些老机器上自带的 Mac OS 9(或者更早的)更有用。尽管如此,有这种嗜好的人是相当少的,或者至少不需要到这里来倾听建议。

更重要的一种情形是,当希望在不同的机器上确保统一的 系统/用户 界面时,作为可以运行于 Apple 的 G3、G4 和 G5 机器之上的操作系统,Linux 很值得考虑。很多企业、主机托管公司、学校或者研究机构为用户提供的系统会同时包括 x86 和 PPC。尽管您 可以 为 OS X 重新编译大部分特定的应用程序,但这样做并不能使所维护的不同的机器系统自始至终具有统一的 GUI、配置文件、目录结构和编译环境。“Linux everywhere”确保了更高的一致性。

对 Linux 开发者来说,关于 OS X 可能会疑惑的特殊的一点是,它对两种截然不同的目录组织的覆盖 ---- Linux/Unix 系统传统的目录 /etc/,/usr/local/,/sbin/ 等等,和 Mac OS 9 的目录 /Application/,/Library/,/System/。此外,由 fink 创建的 /sw/ 层级几乎可以看作是第三种覆盖。尽管 OS X 有内置的 X11 服务器,在其中使用 X11 应用程序时我还是发现了多个小问题(屏幕刷新、键绑定等等) ---- 在这种情况下,具有优秀的窗口管理器如 KDE 或者 GNOME 的 Linux 是更为完美的环境。

除了可能会使用 PPC 桌面机或者膝上型机器的开发者以外,提供 Web 主机的公司还希望为那些通过 SSH、FTP 或者基于 Web 界面进行站点维护的用户提供一个可预知的系统 ---- 不管一个域的主机是基于 PPC 还是 x86 芯片。深入地考虑服务器,Linux 提供了一些有利条件,优于 OS X,甚至优于 OS X 的服务器版本。Linux 一个强大之处在于,有多种专门为其开发或移植而来的文件系统:ext2、ext3、ReiserFS、IBM 的 JFS、SGI 的 XFS,等等。每个文件系统都有各自的优点,通常适用于特定的场合(Web 主机、多媒体流服务器、RDBMS,等等)。尽管 OS X 的服务器版本支持一种增强 HFS+ 文件系统,这种文件系统具有日志功能,以及可选的字母大小字敏感的文件名功能,但它还是比不上 Linux 众多的文件系统选项。而且,我要提及 ---- 但不是强调 ---- 有关费用的小问题:一个不限制客户端数目的 Mac OS X 服务器版本每台机器需要花费您 1000 美元,而 Linux 是免费的(即使是发行商的支持合同,与此相比也便宜得多)。这里需要说明的是,如果 OS X 服务器的管理员工具每天为您的 IS 职员节省一点工作,成千美元的费用自己很快就可以得到回报。

发行版本

就本文而言,我在 PowerPC 上安装并评价了四种版本的 Linux:Debian、Knoppix、Yellow Dog 和Mandrake。所有安装和测试都在一台 G4 iMac 上完成。我发现其中有两个更为完美和易用,可以与最好的 x86 Linux 发行版本相媲美;对于其余两个,我不得不说它们“还不成熟”。同样还有一些其他的发行版本 ---- 而且以后肯定会出现更多的。我的目标并不是给出读者们选用的每一个发行版本的完全比较,而只是想获得一种“最新的”感受 ---- 完全没有涉及我未给予考虑的那些发行版本。

我所发现的两个不太令人满意的发行版本是 Debian (Woody) 和 Knoppix。后者是我曾经发现在 x86 机器上很有用处、很有趣的一个版本。Knoppix 使用了一个“活动引导”CD ---- 也就是说,通过 Knoppix CD 引导,向您提供一个带有 KDE、OpenOffice 和优秀工具集的可以工作的 Linux。使用 Knoppix,不需要在 PC 机上创建任何分区,也不用从 PC 机上引导,而且您可以在不同的机器上使用同一 Knoppix CD 以获得统一的配置。不幸的是,分别在三个系统上进行的测试,Knoppix/PPC 从未成功引导:KDE 不能加载,只能得到一个粗糙的 TWM shell,这个 shell 没有正确的显示模式(颜色映射表及其大小的问题)。不过,网络,包括无线网络,似乎都正确的识别出来;所以您可以使用命令行工具。在得到更多的完善后, Knoppix/PPC ---- 或者类似的版本 ---- 将是在已有 Mac OS X 的机器上无损伤地运行 Linux 的好方式。(参阅 参考资料 中关于 Knoppix 的完整文章。)

我在 Debian/PPC 中遇到的问题,可能和热衷于使用 Debian 的用户开始时遇到的问题类似。安装只能以文本模式进行,一旦要命的“Y”或者“N”被按下后,没有选项可以更改配置。只要您不犯错误,而且仔细阅读每一屏安装说明,安装过程可以顺利完成。它甚至会在网络上自动找到安装 CD(s) 上所没有的任何模块。所安装的很多工具和应用程序 ---- GCC、Python、内核、OpenOffice,等等,要比当前最新的版本旧得多,但大部分广为应用的工具都可以作为 Debian 包得到(这样就可以使用出色的 apt-get )。尽管如此,我发现 Debian/PPC 存在的致命问题是,它的安装似乎根本不知道任何生僻的显卡的型号,并且,安装后进行的一些配置尝试也都宣告失败。我相信有 Debian/PPC 用户已经解决了这一配置问题,但是相对于其他版本的简易的安装,我还是不便向众多用户推荐 Debian。

Yellow Dog (Sirius/3.0.1) 和 Mandrake (Bamboo/9.1) 都有完善的 PowerPC 发行版本。总的来说,我更倾向于向大部分用户推荐 Yellow Dog 而不是 Mandrake,但它们都有各自的优缺点。原因在于 Yellow Dog 的缔造者,Terra Soft Solutions,对 PowerPC 系统的专门研究可能会使他们将更多注意力投入到对用于 PPC 的 Linux 细节方面的调整。另一方面,对那些追求完全一致性的企业用户来说,可能会选择 Mandrake,将其同时用于 x86 和 PPC 机器。

Yellow Dog 和 Mandrake 都使用了美观而友好的安装 GUI;可能在功能上 Mandrake 的一个优势是它在对话框区域左侧的未完成步骤和已完成步骤的列表,尽管如此,我还是更喜欢 Yellow Dog 的屏幕。两个系统都附带有一大组应用程序和工具:Gnome/KDE、OpenOffice、XFree86 4.3、Mozilla、Mac-on-Linux、各种服务器。就大多数应用程序和工具(和内核)而言,Yellow Dog 所附带的是稍新一些的版本,但也只是“微发行号”(micro-release) 的不同,而不是整个副版本号。无论如何,Yellow Dog 和 Mandrake 都轻松识别出了我的网络设备、图形卡、分区、鼠标、键盘等等。不过,在第一次尝试重新启动 Yellow Dog 到 X11 时着实遇到了一个问题 ---- 需要运行一次 /usr/X11R6/bin/Xautoconfig 来解决这个问题。

Mandrake 和 Yellow Dog 之间的一些区别是很突出的。我所选择的(都是默认的)KDE 窗口管理器下菜单的组织和主题有一些不同,但两个系统都很合理(无论如何,当系统安装完成后还可以再配置)。软件包的选择预定义了一组类似的“个人”、“服务器”和“工作站”选项(可以自定义)。我特别喜欢用 Mandrake 的 DiskDrake 工具进行分区管理。这个图形化的工具可以让您完成添加、删除分区,无损害地调整分区大小、格式化分区及其他的管理(但不可无损调整 HFS+ 分区的大小)。其他方面,DiskDrake 在安装时可以选择 Mandrake 分区的格式,而不是像 Yellow Dog 那样简单地缺省设置为 ext3(但稍后在 Yellow Dog 下还可以方便地添加一个额外的 ReiserFS 分区)。并且我还比较欣赏 Mandrake 的控制中心,不是因为它以独特的方式去 做任何事情,而是因为无论在 x86 还是在 PPC上,它都将配置任务统一在一个界面下完成。

尽管 Mandrake 有如此多优点,我却更推崇 Yellow Dog 的根本原因在于它的软件包管理系统。Yellow Dog 在一定程度上像是一个混合型的系统:在安装过程中它使用 RPM,但是也安装了 apt-get 以进行后期的系统更新。我没有细看安装过程中显示的内容,但是我可以输入一行 apt-get install OpenOffice,然后每个依赖关系都被正确解析出来,全部 350 兆字节(展开后)的文件被下载,链接被添加到我的 KDE 菜单中,而不用重新启动 X11。相对于浪费 许多 小时才能弄清楚 RPM 包之间的依赖关系,这可以看作是一个奇迹。当然,我已经习惯了 Mac OS X 下的 fink ,它也可以做同样的事情(是基于 apt-get)。

分区、多重引导管理和仿真

相对于 Linux/x86,Linux/PPC 有一个重要的缺陷:到完成本文时,还不存在无损地对 HFS+ 进行重新分区的工具(至少没有通过测试并可以运行于 OS X 或者 Linux 的)。不幸的是,这就意味着不能方便地在一个已有的 Mac OS X 系统上配置多重引导系统;大部分最近的 Linux/x86 发行版本都提供了类似的将 Linux 添加到已经存在的 Windows 系统上的功能。 诚然,破坏性地对已经存在的驱动器进行分区,再将 OS X 重新安装到其中一个新分区上是很简单的;但是这样做也意味着丢失了当前的数据和系统配置(备份/恢复可能会有帮助,但很难全面恢复)。当然,如果您只是希望得到一台仅安装 Linux 的机器,这一问题就不用担心了。

Apple 机器与 x86 机器相比,分区和引导工作稍有不同。特别的,Apple 的 Open Fireware(BIOS 的增强版本,Linux 用户在 x86 PC 中接触过)依赖一个小的“Apple Bootstrap”分区 ( hda2 ) 来从一个特定的分区继续引导操作系统。分区表会占用 hda1 ,所以您安装操作系统的第一个分区的编号至少是 hda3 。在机器启动时 ---- 使用多重引导工具 yaboot ---- 引导过程分为两个阶段,而不是像 lilo 和 grub 所用的一级 x86 MBR 引导。例如,在第一个阶段,可以选择从硬盘、CD-ROM 或者 Open Fireware 进行引导;假设从硬盘引导,您可以选择引导普通分区上的不同操作系统/版本。

配置 yaboot 总体上与配置 lilo 类似。一个名为 /etc/yaboot.conf 文件中包含了不同系统、内核、分区等选项;其格式也几乎与 lilo.conf 相同。在正确地配置了 yaboot.conf 后,要用 ybin 命令(当然要以 root 身份)来将 yaboot 加载到引导分区。要得到分区信息,您必须使用 pdisk 工具,而不是 x86 Linux 系统中传统的 fdisk 。同样,这两个工具界面类似,但并不完全相同。对 Mandrake 用户来说,完成同样的工作,DiskDrake 是一个更友好和更灵活的基于 GUI 的工具。使用 yaboot,引导时您可以在多个 Linux 版本 和/或 MacOS 版本之间做出选择。

在 PPC 机器上运行 Linux 有一个优势,就是您可以运行自由软件工具 Mac-on-Linux。这非常像 x86 机器上商用的 VMWare。完整的 Mac OS 系统(或者是 OS X,或者是更早的版本,例如 Mac OS 9)可以在 Linux/X11 显示的一个内部窗口中运行。实际上,您可以同时运行多个 Mac OS 版本,每一个版本都有自己的虚拟显示窗口。Mac OS 运行于一种“沙箱”中,在这里看不到它的 Linux 环境,而 PPC 指令却以完全的本地速度执行。假如您有足够大的内存来运行这种沙箱,Mac-on-Linux 会为您提供一个在运行 Linux 时继续使用 Mac OS 应用程序的好方法 ---- 即使是那些没有任何源代码的私有应用程序。不用像将 Linux 应用程序移植到 OS X 环境时那样需要重新编译。


关于作者


David Mertz 是 Gnosis Software, Inc. 的老板和首席顾问,该公司的口号是“我们了解员工”(确实如此)。可以通过 mertz@gnosis.cx与 David 联系;您可以通过他的 个人 Web 页了解他的生活。欢迎提出关于专栏的过去或将来的意见和建议。请阅读他的 Text Processing in Python 一书。
文章评论

共有 0 条评论