安裝 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、r
ios、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 更為高端的性能。顯然,如果您可以選擇底層操作系統(正如您使用自由軟件的做法),那麼在得到任何與您自己的需要相關的具體結論之前,最好進行具體應用程序的高層次基准測試。