PowerMacG5上的YellowDogLinux

发表于:2007-07-04来源:作者:点击数: 标签:
安装 Yellow Dog Linux 首先需要了解的是,您不能通过可公开获得的 YDL 3.0.1 ISO 来引导 G5。这是因为用于 G5 的“hybrid”的 3.0.1 版本仍然处于测试阶段;当产品化后,它们将公布于公开的站点上。在此之前,要获得兼容 G5 性的 32 位 YDL ISO,您需要付费

  安装 Yellow Dog Linux
  首先需要了解的是,您不能通过可公开获得的 YDL 3.0.1 ISO 来引导 G5。这是因为用于 G5 的“hybrid”的 3.0.1 版本仍然处于测试阶段;当产品化后,它们将公布于公开的站点上。在此之前,要获得兼容 G5 性的 32 位 YDL ISO,您需要付费订阅“YDL.net Enhanced”以获得成员资格(请参阅 参考资料)。
  
  订阅后,要小心地下载正确的 ISO。普通的 ISO 编号为 3.0.1,位于 /enhanced/iso/ FTP 目录中;这些并不是您所想要的那些。实验用的 G5 ISO 也 编号为 3.0.1,但是下载目录更深,是在 /enhanced/iso/PowerMacG5/ 目录中。由于它们仍然处于测试阶段,所以确切的文件日期可能会改变;我使用的那些名字是 *-20040204-*.iso。
  
  通过测试以后,兼容 G5 的 32 位 YDL 将升级为版本 4.0,而且不需要成员资格就可以获得。不过, 64 位的 Y-HPC 将只能由“YDL.net Pro”(不是 Enhanced)成员得到。从 Terra Soft 获得 64 位内核的唯一的另一种方法是,等待它们可以从 TSS 在线存储获得,或者购买预配置的内核,用在 Terra Soft 预先构建的 G5 系统上。这是根据买方的要求完成的,需要额外的费用,所以,如果您需要那样做,那么需要去指定它。
  
  无论如何,其他 PPC Linux 发行商 —— 比如 Mandrake、Debian、Gentoo 和 SUSE —— 也都在准备他们自己的可直接用于 G5 的 Linux 系统。当然,Gentoo 是我所知的唯一一个也在积极开展 64 位 G5 内核的发行商;其他发行商当前都是致力于 32 位版本。不过,从工作特性到与 Macintosh 相关的 HowTo,本文所涵盖的大部分内容应该同样适用于所有这些期望中的未来发行版本。
  
  值得注意的另一点是,特别是如果您熟悉 x86 上的 Linux,现在还没有任何好的方法可以无损地对已有的 HFS+ 分区进行重新分配。当然,对您想要安装的任何 Mac 上的 Linux 发行版本来说都是如此,因为 Power Mac G5 原来都是分为一个大的分区。您将需要删除并重新安装 OSX 以配置双引导的系统。对于专用服务器来说,不管怎么样您可能只需要一个 OS,但是对于开发者大部分其他用户来说,多引导配置是实用的。
  
  建立双引导或多引导的 Power Mac G5 系统的最简单方法是,通过随机器附带的安装媒体重新安装 OSX。在 OSX 安装开始时,自菜单中选择“Disk Utility”,创建一个较小的 HFS+ 分区,并将其余部分留做自由空间。在我的 160 GB 的测试系统硬盘上,我为 OSX 分配了 30 GB(如果需要,我以后随时可以创建更多 HFS+ 分区)。
  
  重新安装并留出一些自由磁盘空间后,接下来只需要放入通过上面说明得到的兼容 G5 的 YDL CD。与所有 Macintosh 相同,在重新引导期间按住“c”键,以从 CD 引导而不从硬盘驱动器引导。Yellow Dog 的基于 Rad Hat 的 Anaconda 安装器的安装器非常友好。除了声卡以外,所有设备都会被安装器自动识别出来 —— 甚至包括 OSX 检测失败的我的监视器的确切型号和性能。我的 DHCP 路由器和以太网无缝地连接在一起。有一个小的缺陷,那就是安装器运行时监视器的频率是 60 Hz,这在日光灯下会产生让人心烦的抖动。不过安装完成后,Yellow Dog 使用的是有益于视力健康的 70+ Hz(而且是可配置的)。注意,您应该先重新安装 OSX,然后再安装 Linux;如果以另外的方式安装会导致更多的工作。
  
  安装过程中,YDL 会执行用户友好的工具“Disk Druid”来为您描述分区选项。带日志的 ext3 是其首选的文件系统(也是我所使用的)。如果您选择了“Automatic”,Disk Druid 将声明所有的自由空间为 Linux 所用;我更希望手工配置另外 30 GB ext3 分区(并在磁盘的末端留出默认的交换分区)。这样就留出了大约 100 GB 空间我可以使用任意我所需要的文件系统自由安装另外的 OS 或者数据分区。稍后,在安装过程中,Yellow Dog 会安装引导管理器 Yaboot,它的使用几乎与 x86 系统上的 lilo 相同(包括一个 /etc/yaboot.conf/ 配置文件)。
  
  选择了您希望安装的程序包以后 —— 可能是通过选择一个普通的选项,比如“Desktop”、“Server”或者“Developer Workstation” —— 安装过程结束并重新引导到 Yaboot 引导管理器。假如您在引导过程中选择了“Linux”而不是“OSX”, Yellow Dog 将显示出 Linux 用户熟悉的关于驱动器和后台程序加载的所有文本信息。在大约 40 秒后(在一台 dual-1.8GHz G5 机器上),您将来到 Yellow Dog 的欢迎屏幕,在这里您可以作为用户登录、重新引导、选择桌面环境,等等。值得一提的是,OSX 在同一台机器上的引导只需要 15 秒,令人惊讶。KDE 是 YDL 默认的环境,但是在安装 CD 中也包括了 Gnome(而且您可以通过源文件编译任何您所喜爱的窗口管理器)。
  
  使用 G5 Linux 系统
  YDL 与其他现代的 Linux 发行版本非常类似。它附带了 GCC(当前的 G5 测试版本附带的版本是 v3.3.3)以及最新版本的 Python、Perl、Ruby 和其他编程语言。KDE 开始菜单中包括了以逻辑层次排列办公软件,比如 OpenOffice、GIMP、Mozilla 和 KDevelop 等一些开发环境。您可以使用它们原来的默认模式和界面配置,或者您可以通过 KDE Control Center 或各种右击方式来按您的意愿改变其行为。
  
  让我来介绍一些特定于 Macintosh 和 Power Mac G5 的配置,这些可能是 x86 Linux 用户所不熟悉的。首先,您应该考虑让您的 OSX HFS+ 分区的数据可以被读取。我认为,处理 HFS+ 中的日志的驱动程序仍处于实验阶段,所以您最好将 HFS+ 设置为只读。要访问 HFS+,您将需要做类似如下的步骤(您将需要以 root 身份登录或者使用 su):
  
  清单 1. 在 YDL 下挂载一个 HFS+ 分区
  
  % mkdir /mnt/osx
  % modprobe hfsplus
  % parted /dev/sda # press "p" for partition list
  % mount /dev/sda3 /mnt/osx -thfsplus
  % ls /mnt/osx
  
  使用 parted 命令来查看分区编号和文件系统。观察工具以查看您都有哪些 HFS+ 分区。如果您想用 Konqueror 和 KDE 桌面来导航文件,您可能应该将 /mnt/osx 从 Konqueror 窗口拖到桌面上。
  
  不同于 x86 系统,Macintoshes 的 CD 驱动器上没有“eject”按钮。在 OSX 中,您可以使用键盘上的一个特殊的键来打开驱动器。在 YDL 中您需要在命令提示符中执行命令 eject /dev/cdrom (或者将这个动作附加到某个图标)。当您在驱动器中插入了一张新 CD 以后,需要运行 mount /dev/cdrom 或者适当地将此操作配置为自动进行。
  
  不幸的是,Terra Soft 为了让测试版可以在 G5 上使用而融入了混合 2.6.4 内核,但此内核不能与 Mac-on-Linux(MoL)一起使用。那些刚接触 Linux 的人应该知道,出现类似情况时,下载并重新编译失常的应用程序的最新源代码通常可以解决问题。不过,这一次不行,所以,在我们期待 MoL 可以用于 G5 之前,只有等待 Mac-on-Linux 项目发布新的模块。
  
  将 32 位 YDL“升级”到 64 位 Y-HPC
  按 Terra Soft 的说法,一旦实现了产品化,64 位的安装将变得非常简单。在此之前,如果您想在 Y-HPC 官方发行之前尝试 64 位内核,那么首先需要像我这样安装 32 位 YDL。然后,到 Yellow Dog Linux Y-HPC 网页(请参阅 参考资料),将 vmlinux* 和 System* 文件下载到 /boot/。我在那个目录下运行:
  
  清单 2. 解包 64 位 Linux 内核
  
  % gunzip vmlinux-2.6.1-1.64.ydl.1.1280.gz
  % gunzip System.map-2.6.1-1.64.ydl.1.1280.gz
  % chmod u+x vmlinux-2.6.1-1.64.ydl.1.1280
  
  我也得到了内核模块,下载到 /root/,然后运行:
  
  清单 3. 解包 64 位内核模块
  
  % bzip2 -d /root/modules-2.6.1-1.64.ydl.1.1280.tar.bz2
  % cd /
  % tar xvf /root/modules-2.6.1-1.64.ydl.1.1280.tar
  
  最后一步在 /lib/modules/2.6.1-1.64.ydl.1.1280/ 目录下创建了很多文件。下一个步骤是将 64 位内核添加到引导管理器中。首先编辑 /etc/yaboot.conf,添加:
  
  清单 4. 将 64 位 Y-HPC 内核添加到 Yaboot
  
  image=/boot/vmlinux-2.6.1-1.64.ydl.1.1280
     label=linux-64bit
     root=/dev/sda4
     read-only
     append="hda=ide-cd"
  
  然后运行 ybin(以 root 身份),这样在下一次重新启动时您就可以选择内核了。正如您将看到的,使用 64 位内核,性能受到了最低限度的影响;但是,选择 64 位内核让您可以编译可能会受益于 64-bit-ness 的 64 位应用程序。
  
  GCC 选项和交叉编译
  我使用不同的内核版本和编译选项运行了一些 LMBench 基准测试(我将在本文最后进行总结)。尽管这个基准测试并没有受到我所尝试的选项的显著影响,但是,LMBench 的源代码仍然提供了一个可以用于测试编译选项的有益项目。例如,在使用 64 位内核的一个配置中,在进行通常的 make 步骤之前,我输入了下面的内容来配置编译器:
  
  % export CPPFLAGS='-mcpu=970 -mtune=970'
  
  在文档“About Compilers with VMX Support”(请参阅 参考资料)中可以找到关于 PowerPC 970 编译器主要选项的实用总结。引用的这篇文档所涉及的是混合 YDL 和基于 PowerPC 970 的 IBM eServer™ JS20 BladeCenter™ 机器所附带的 GCC 3.3.3 版本。您可以比较 Linux 和 Darwin(Mac OSX)中可用的编译选项 —— 大部分是类似的,但有一些不同。
  
  此外,整个 POWER 家族体系结构的设计,既支持针对不同具体目标的交叉编译,也支持针对通用指令基的编译。极其令人着迷的是,有可能在 Apple Power Mac G5 上开发一个应用程序而在 IBM eServer p5 上运行这个应用程序。
  
  GCC 文档第 3.17.23 节“IBM RS/6000 and PowerPC Options”(请参阅 参考资料)给出了一些关于交叉编译选项的有用资料。其中 -mcpu 是主要需要关注的一个标记。参考摘录:
  
  -mcpu=cpu_type
  设置体系结构类型、寄存器用法、选择记忆法(mnemonics)、针对机器类型 cpu_type 的指令调度参数。cpu_type 类型所支持的值是 401、403、405、405fp、440、440fp、505、601、 602、603、603e、604、604e、620、630、740、7400、7450、750、801、821、 823、860、970、common、ec603e、G3、G4、G5、power、power2、power3、 power4、power5、powerpc、powerpc64、rios、rios1、rios2、rsc 和 rs64a。
  -mcpu=common 选择的是完全通用的处理器。基于此选项生成的代码将可以运行于任何 POWER 或 PowerPC 处理器之上。GCC 将只会使用这两种体系结构的指令公共子集,将不会使用 MQ 寄存器。 GCC 在进行调度时会采用通用处理器模型。
  在实验过程中,我发现在我的 YDL 系统中,我可以以几种不同的 CPU 为目标编译(并运行)LMBench,比如 G5、G4、或 powerpc。我尤其感兴趣的是以 common 为目标尝试进行编译,但是我的系统缺少一些必需的头文件。我可能可以下载 GCC 源代码和其他相关文件来解决这一问题。使用 YDL 自带的 GCC,我还是可以以 common 为目标编译 LMBench 源文件中的很多文件 —— 但不是全部。
  
  基准测试
  首先,我将给出一些免责声明。第一,比较的是处于测试中的 Terra Soft 的 32 位和 64 位系统与机器附带的 OSX。所以,在未来几个月里,当 Terra Soft 发布产品化的 32 位和 64 位发行版本时,所有这些数字都可能会有变化。不过,实际上这些基准测试集中关注的是底层性能,这就使得有可能这些数字至少可以在一定程度上反映机器附带的版本。然而,这些数字不能(也不是有意要)反映 OSX 与 YDL/Y-HPC 的对比,也不反映 OSX 与 Linux、32 位和 64 位的对比,而且,就更小范围而言,也不反映 GGC 编译器开关会如何影响 LMBench。
  
  第二个免责声明是,要在 G5 系统和可以与其匹敌的类似处理器(比如 Intel 的 Xeon 或 AMD 的 Athlon64)之间的进行有意义的比较,我还不具备足够的专门的基准测试技术
  
  考虑到已公布的基准程序很少是完全没有偏差的,我认为,观察分析操作系统、kernel-bit-ness 和编译选项的不同对在同一台机器上得到的基准测试的结果的影响还是有用的(也是公平的)。Apple 的 Power Mac G5 系统得到高度称许的特性之一是它们的快速内存子系统 —— 400 MHz 总路线上的 DDR SDRAM,按宣传其带宽最高可达 64 GB/秒(虽然我的测试系统不是最高级别的)。我感觉 LMBench 2.0.4(最新的稳定版本)是研究此方面的一个很好的工具:它集中关注底层性能,尤其是内存子系统。
  
  我以四种不同的配置来运行 LMBench。在一些情况下,我执行了多次运行,不过变化足够小,因而相对于每种配置我只给出了一个示例。我在 MAC OSX(1.3.4)上编译并运行 LMBench 作为一个基本情形。一般而言,在大部分测试中,看起来好像 Linux 基准要比 OSX 稍微 更好一些。不过,在 OSX 上得到的一些令人惊讶的糟糕结果让我怀疑套件是不是都在正确运行。例如,在本地 TCP 带宽方面,64 位 Y-HPC 比 OSX 高出百分之五十,这是惊人的,但是可信 —— Linux 针对 TCP 的调节做得非常好。不过,在磁盘页失败方面,OSX 的延迟是 Linux 的 500 倍,这就非常不正常了。当然,与 OSX 在“File & VM system latencies”方面得到的其他比较差的结果类似,相对于 OS 内核之间区别,后一个问题与 HFS+ 和 ext3 之间区别的关系更密切。
  
  由分析基准推知综合基准总是有难度的,不过 LMBench 很像是使用了大量 IPC 的应用程序(比如科学应用程序和其他数值计算程序)的一个代理 —— 高负载的 Web 服务也会受到影响。
  
  在 Linux 方面,我使用 32 位内核不使用编译器选项运行了一个配置。在 64 位内核中,我既不使用 GCC 选项编译了 LMBench,也使用 970 特定的调节选项进行了编译。Linux 结果变动范围不大,不过通常看来 64 位内核稍有提高,而使用 970 标记编译的应用程序则稍有进一步提高。
  
  然后,这里是我得到的 LMBench 结果(为了布局而稍加编辑):
  
  表 1. 在 Power Mac G5 上得到 LMBench 2.0.4 的结果总结
  
  Basic system parameters
  Host         OS Description       MHz
  --------- ------------- ----------------------- ----
  Darwin  Darwin 7.2.0 powerpc-apple-darwin7.2 1800
  32bit   Linux 2.6.4-1 powerpc-linux-gnu 32bit 1800
  64bit   Linux 2.6.1-1 powerpc-linux-gnu 64bit 1800
  64bit-970 Linux 2.6.1-1 PPC-linux -mtype=970  1800
  
  Processor, Processes - times in microseconds - smaller is better
  ----------------------------------------------------------------
  Host   null null   open selct sig sig fork exec sh
       call I/O stat clos TCP  inst hndl proc proc proc
  --------- ---- ---- ---- ---- ----- ---- ---- ---- ---- ----
  Darwin  2.23 2.78 6.27 9.17 15.6 3.09 8.97 1468 3146 6796
  32bit   0.30 0.42 5.13 6.08 25.5 0.72 2.67 295 990 4093
  64bit   0.23 0.43 5.04 6.47 33.3 0.70 2.19 257 914 3778
  64bit-970 0.24 0.44 4.98 6.49 33.2 0.70 2.25 262 955 3856
  
  Context switching - times in microseconds - smaller is better
  -------------------------------------------------------------
  Host   2p/0K 2p/16K 2p/64K 8p/16K 8p/64K 16p/16K 16p/64K
       ctxsw ctxsw ctxsw ctxsw ctxsw  ctxsw  ctxsw
  --------- ----- ------ ------ ------ ------ ------- -------
  Darwin   12.4  12.3  12.3 12.9  16.4  14.2   34.2
  32bit   10.4  10.5  10.6  8.68  9.71  7.57  26.2
  64bit   11.1  11.3  11.4  9.35  12.7 10.1   29.2
  64bit-970 11.2  11.3  7.97 7.11  16.4  7.57  27.9
  
  *Local* Communication latencies in microseconds - smaller is better
  -------------------------------------------------------------------
  Host   2p/0K Pipe AF   UDP RPC/  TCP RPC/ TCP
       ctxsw    UNIX     UDP     TCP conn
  --------- ----- ----- ---- ----- ----- ----- ----- ----
  Darwin   12.4 40.6 40.3 58.4    74.3    153.
  32bit   10.4 20.5 24.5 31.5 40.6 57.5 41.4 53.3
  64bit   11.1 47.8 42.4 58.5 45.9 67.7 68.9 47.9
  64bit-970 11.2 40.2 24.6 34.0 40.5 35.0 48.5 47.7
  
  File & VM system latencies in microseconds - smaller is better
  --------------------------------------------------------------
  Host    0K File   10K File   Mmap  Prot  Page
       Create Delete Create Delete Latency Fault  Fault
  --------- ------ ------ ------ ------ ------- -----  -----
  Darwin   108.2 136.3 1440.9 228.2  11.0K 47.4  3740.0
  32bit    44.1  34.3 121.8  64.3  3894.0 0.595  7.0
  64bit    46.5  30.8 118.2  59.2  3314.0 0.514  4.0
  64bit-970  46.5  30.8 118.3  59.2  3256.0 0.550  4.0
  
  *Local* Communication bandwidths in MB/s - bigger is better
  -----------------------------------------------------------
  Host   Pipe AF  TCP File  Mmap Bcopy Bcopy Mem  Mem
          UNIX   reread reread (libc) (hand) read write
  --------- ---- ---- ---- ------ ------ ------ ------ ---- -----
  Darwin   52. 346 351. 364.0 1837.4 1431.0 897.8 1840 1207.
  32bit   715. 1137 428. 1037.6 1799.4 899.9 888.5 1805 1203.
  64bit   634. 1189 609. 922.3 1789.5 888.5 888.5 1792 1200.
  64bit-970 620. 1046 629. 915.4 1792.0 888.4 889.6 1797 1209.
  
  Memory latencies in nanoseconds - smaller is better
  ---------------------------------------------------
  Host    L1 $  L2 $ Main mem
  --------- ----- ------ --------
  Darwin   1.664 6.1040 152.3
  32bit   1.666 6.1110 153.1
  64bit   1.667 6.1150 153.9
  64bit-970 1.666 6.1140 153.3
  
  结束语
  总之,G5 是可以运行 Linux 的极好机器 —— 现在可以以合理的终端用户桌面机的价格购买到。虽然还是一个测试版本,但是 Terra Soft 和 Yellow Dog Linux 和 Y-HPC 几乎可以直接运行于 G5 系统上,只是仍有相对很少而且相对较小的问题(在这里没有都具体讨论到)。我应该说,这恰是产品发布的预兆。
  
  对于在 970 机器上 OSX 和 Linux 的相对性能有哪些可以预先期待的,我没有真正的把握。作为终端用户桌面机或开发平台,这两个操作系统都比“足够快”要快得更多,所有仍然存在的差别几乎只剩下了 KDE/X11 和 Aqua/Quartz 之间的差别,而不是反映于底层的 OS 特性。无论如何,我所做的内存基准测试的尝试,表明 Linux 可能为高通信量服务器、复杂编译、以及复杂的科学或图形学应用程序提供比 OSX 更为高端的性能。显然,如果您可以选择底层操作系统(正如您使用自由软件的做法),那么在得到任何与您自己的需要相关的具体结论之前,最好进行具体应用程序的高层次基准测试。

原文转自:http://www.ltesting.net