網頁

2010年5月5日 星期三

用 ramdisk 加速 freebsd 編譯 ports 的速度

剛剛在很苦命的編譯 ports , 機八鴨提供了一個很有用的方式,就是把編譯過程中會產出的 object file 全都塞到 RAMDISK 中(反正現在 RAM 都很大也不知道拿來做什麼),加上 FreeBSD 8 的 ports 開始支援多核心的 make jobs 編譯,速度可說真是飛快。

作法很簡單:

先蓋一個 RAMDISK (這裡是開 512M, 可以自己調整)
/sbin/mdmfs -M -S -o async -s 512m md0 /tmp/portsobj

然後讓他能寫入
/bin/chmod 777 /tmp/portsobj

接下來去 /etc/make.conf 把 obj 會產生的目錄指過去
WRKDIRPREFIX=/tmp/portsobj

然後去編看看,就會發現速度差很多。
然後懶人大法當然是要 shell script 一下:
#!/bin/sh

case "$1" in
create)
/sbin/mdmfs -M -S -o async -s 512m md0 /tmp/portsobj
/bin/chmod 777 /tmp/portsobj
echo "512M ramdisk created on md0 and mounted on /tmp/portsobj"
exit 0
;;
destory)
/sbin/umount /tmp/portsobj
/sbin/mdconfig -d -u 0
echo "ramdisk umounted from /tmp/portsobj and destory from md0"
;;
*)
echo "Usage: `basename $0` {create|destory}" >&2
exit 64
;;
esac

然後機八鴨還好心建議不要直接打 make install clean 而是用先用 pkg_add 把 package 裝完,然後再用 portmaster -bDGtw -m FORCE_PKG_REGISTER=yes 來升級,那他每次在編完每一個 ports 後都會自動清掉 obj 而不是像原本的 ports system 會全部裝完成功後才 clean。