2010年9月21日 星期二

替 PS3 的 YDL6.2 做瘦身 ( 下篇 )。

這次先從一些原由說起,
由於 PS3 於 YDL 下並沒有太多的記憶體 ( 約 230MB 左右 ),
所以 Shady 大多以跨平台編譯來撰寫程式。

最後 YDL 下的 PS3 都是跑程式時使用,
所以記憶體的節省也很重要,
要不然程式 Port 到 PS3 時就會因記憶體不夠而慢下來...,
故 Shady 在此有一些建議:

1. 請撰寫兼編譯程式於 x86 電腦上。
2. 因 1. 的關係,請將 PS3 當作程式測試平台,
    所以 PS3 最好於文字模式下節省記憶體。
3. 若得於圖型模式下測試程式時,
    請將解析度降低到 720p 以下確保記憶體夠用。

所以當撰寫大型或資料量大的程式時,
記憶體多寡就是我們首要考慮的問題了,
以下是 Shady 對 YDL 做的一些調整,
希望對大家有幫助。

1. 將 YDL 預設為文字模式,
    輸入 vi /etc/inittab,
    將 id:5:initdefault: 更改為 id:3:initdefault:。
   
2. 將 YDL 的虛擬終端機預設開啟設為一個,
    輸入 vi /etc/inittab,
    將
        1:2345:respawn:/sbin/mingetty tty1
        2:2345:respawn:/sbin/mingetty tty2
        3:2345:respawn:/sbin/mingetty tty3
        4:2345:respawn:/sbin/mingetty tty4
        5:2345:respawn:/sbin/mingetty tty5
        6:2345:respawn:/sbin/mingetty tty6
    改為
        1:2345:respawn:/sbin/mingetty tty1
        2:2345:off:/sbin/mingetty tty2
        3:2345:off:/sbin/mingetty tty3
        4:2345:off:/sbin/mingetty tty4
        5:2345:off:/sbin/mingetty tty5
        6:2345:off:/sbin/mingetty tty6
    。

3. 調整解析度為 720p,
    輸入 vi /boot/etc/yaboot.conf,
    將 append="video=ps3fb:mode:3 ps3fb root=LABEL=/1",
    改為 append="video=ps3fb:mode:3747 ps3fb=8M root=LABEL=/1"。
    其他解析度設置請參考此網頁
    ps3fb=8M 是為了配合 720p 設置的,
    因為 1280 * 720 * 4bytes * 2framebuffer / 1048576 = 7.03152MBytes,
    但只能填整數,故因而填 8M。

若非得有圖型模式,
可參考這裡
當中有教導安裝 fluxbox,
而 Shady 使用後,
未開啟任何應用程式的情況下,
還可以擁有 170MB 以上的記憶體容量。

到此,Shady 已將 YDL 的安裝和調校教導完畢,
下次開始就是程式的心得與分享了,
所以請大家多觀看 IBM 的 Cell SDK 的相關文件,
因為 Shady 之後並不會有太多 Cell SDK 相關工具的教導文章,
還請多多包涵。

2010年9月20日 星期一

替 PS3 的 YDL6.2 做瘦身 ( 上篇 )。

老實說,
瘦身工作最好從 YDL6.2 安裝時做起,
當然沒有也沒關係,
以下是從安裝時就開始瘦身的步驟,
已安裝者可從完成 YDL6.2 安裝後的步驟開始。

安裝時請選擇手動選擇套件,
將所有套件勾選成非勾選狀態,
也就是不要安裝所有套件,
如此,YDL6.2 將會自動安裝最基礎的套件,
當然,以上是於 install_ps3_720p 更高的解析度模式安裝,
雖然安裝結果是文字模式,
但卻是以高解析度安裝完成。

接下來就是安裝完成之後的步驟。

進入 YDL6.2 之後,
請以 root 登入,
然後輸入 yum update 更新套件,
若有出現 expat、readline、util-linux 時,
請勿更新套件,
請個別輸入套件名稱更新,
例如:yum update kernel,
以上例子是只有更新 YDL6.2 的核心。

再來就是安裝 CellSDK,
請輸入 yum install glibc* irqbalance,
再輸入 yum install crash* elfspe* libspe* netpbm* oprofile* ppu* spu*,
安裝完成之後就去下載 CellSDK-Devel-Fedora_3.1.0.0.0.iso、CellSDK-Extras-Fedora_3.1.0.0.0.iso、3.1-SDKMA-Linux-ppc-FP01.tar.bz2,
將其放置在 /tmp/cellsdkiso 下,
利用 mount -o loop /tmp/cellsdkiso/CellSDK-Devel-Fedora_3.1.0.0.0.iso /mnt 掛載 iso 檔,
再以 cd /mnt/cbea 進入 cbea 目錄,
輸入 yum localinstall --nogpgcheck *.rpm,
完成後輸入 cd ~,
再輸入 umount /mnt,
接下來 CellSDK-Extras-Fedora_3.1.0.0.0.iso 也是以同樣的方式安裝,
最後以安裝 x86_64 版的方式安裝 3.1-SDKMA-Linux-ppc-FP01.tar.bz2,
自此,CellSDK 已經完成安裝,
由於 YDL6.2 的 tcl 和 tk 套件較舊,
所以沒安裝 Cell 模擬器,
且 PS3 的記憶體較小,
Cell IDE 整合開發環境也盡量使用 x86 版做 cross-compile。

接下來將不需要的系統服務關閉,
請輸入 chkconfig --list 列出所有的服務,
若要關閉 irqbalance 的服務的話,
請輸入 chkconfig --level 01246 irqbalance off,
以上會將 irqbalance 的服務關閉等級 0、1、2、4、6,
所以以上會將 irqbalance 的這五個等級關閉,
而 chkconfig --level 35 irqbalance on 則是開啟 3、5 等級,
最後請確保 elfspe、irqbalance、messagebus、network、sshd、syslog,
以上此六個服務一定開著 3、5 等級,
其餘服務則全部關閉。

上篇到此為止已省下不少記憶體,
而下篇將會替大家做解析度和虛擬終端機等調整來節省記憶體,
當然,於 GUI 使用 YDL6.2 的使用者,
我也會建議轉向文字介面,
所以這些也將會於下篇的教學當中完成。