分散クロスコンパイル環境の構築
パワー不足の玄箱でGentooを運用して行くには、少しでもコンパイルの速度を上げないとGentooが生きて来ないだろう、ということで・・・
ボロPC(とは言え、Pentium III 800MHz)に、コンパイルをお手伝いさせようと、前回は、PowerPC(玄箱)のコンパイル環境をPentiumeIII上に構築したわけです。
今回は、分散コンパイルさせるために、distccの導入です。
既に、玄箱には、distccは導入してあるので、ボロPCにも入れます。ついでに、ccacheも入れてしまいます。
ボロPCで:
# emerge distcc ccache
色々と試行錯誤がありましたが、最終的に次のようになりました。
玄箱側の設定:
/etc/make.confの内容:
CFLAGS="-O2 -mcpu=603e -fno-strict-aliasing -pipe -fsigned-char"
CHOST="powerpc-unknown-linux-gnu"
CXXFLAGS="${CFLAGS}"
PORTDIR=/var/portage
DISTDIR=/var/portage/distfiles
PKGDIR=/var/portage/packages
RPMDIR=/var/portage/rpm
PORTDIR_OVERLAY="/var/overlays/kurobox"
RSYNC_EXCLUDEFROM=/etc/portage/rsync_excludes
GENTOO_MIRRORS="http://mirror.gentoo.gr.jp/"
SYNC="rsync://192.168.11.101/gentoo-portage"
PORTAGE_TMPDIR=/var/tmp
MAKEOPTS="-j6"
FEATURES="ccache distcc"
DISTCC_DIR="${PORTAGE_TMPDIR}/.distcc"
CCACHE_SIZE="2G"
CCACHE_DIR="/var/tmp/ccache"
ホストの指定:
# distcc-config --set-hosts 192.168.11.101
/usr/lib/distcc/powerpc-unknown-linux-gnu-wrapperを次の内容で新規に作成する。
#!/bin/bash exec /usr/lib/distcc/bin/powerpc-unknown-linux-gnu-g${0:$[-2]} "$@"
これは、powerpc-unknown-linux-gnu-gccのようにフルネームではなく、gccと短い名前で呼ばれたときに、フルネームで呼ばれたかのように見せかけるラッパーです。
コンパイラが起動されたときにdistccを実行するように、シンボリックリンクをはります。
# cd /usr/lib/distcc/bin # chmod a+x powerpc-unknown-linux-gnu-wrapper # ln -s powerpc-unknown-linux-gnu-wrapper c++ # ln -s powerpc-unknown-linux-gnu-wrapper cc # ln -s powerpc-unknown-linux-gnu-wrapper g++ # ln -s powerpc-unknown-linux-gnu-wrapper gcc # ln -s /usr/bin/distcc powerpc-unknown-linux-gnu-c++ # ln -s /usr/bin/distcc powerpc-unknown-linux-gnu-g++ # ln -s /usr/bin/distcc powerpc-unknown-linux-gnu-gcc
デフォルトランレベルにdistccとccacheを登録しておきます。
# rc-update add distcc default # rc-update add ccache default
ボロPC側の設定:
/etc/make.confの内容:
CFLAGS="-Os -march=pentium4 -pipe"
CHOST="i686-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
GENTOO_MIRRORS="http://mirror.gentoo.gr.jp"
SYNC="rsync://rsync.jp.gentoo.org/gentoo-portage"
PORTDIR_OVERLAY="/usr/local/portage"
PORTAGE_TMPDIR=/var/tmp
MAKEOPTS="-j2"
FEATURES="ccache"
CCACHE_SIZE="2G"
CCACHE_DIR="/var/tmp/ccache"
こちらは、お手伝いをするだけなので、設定はこれだけです。
玄箱と同じくデフォルトランレベルに登録しておきます。
# rc-update add distcc default # rc-update add ccache default
以上で、設定は終わりです。
それぞれのマシンでdistccとccacheを起動した後、玄箱側で何かをemergeしてボロPC側で、powerpc-~、cc1・・・などのプロセスが実行されれば、導入は成功です。