-->

2010-01-14

crossdevのインストール

2010-7-11 追記 この記事は間違っています。

この記事は違うcpuでdistcc を使うの補足です。

distccをインストールして起動します。
http://www.gentoo.org/doc/ja/distcc.xml

kurobox-hg 側のバージョンを確認します。
$ emerge -pv binutils gcc linux-headers glibc

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R   ] sys-devel/binutils-2.18-r3  USE="nls -gold -multislot -multitarget -test -vanilla" 0 kB
[ebuild   R   ] sys-kernel/linux-headers-2.6.27-r2  0 kB
[ebuild   R   ] sys-devel/gcc-4.3.4  USE="fortran nls -altivec -bootstrap -build -doc (-fixed-point) -gcj -gtk (-hardened) (-libffi) -mudflap (-multilib) -multislot (-n32) (-n64) -nocxx -nopie -nptl -objc -objc++ -objc-gc -openmp -test -vanilla" 0 kB
[ebuild   R   ] sys-libs/glibc-2.9_p20081201-r2  USE="gd nls -debug -glibc-omitfp (-hardened) (-multilib) -profile (-selinux) -vanilla" 0 kB

CPUが早い方の gentoo の入ったパソコンで同じバージョンをインストールします。
その際USEをそろえます。
sudo USE="-nptl -gtk -multilib -openmp mudflap" crossdev -t powerpc-unknown-linux-gnu --binutils 2.18-r3 --gcc 4.3.4 --kernel 2.6.27-r2 --libc 2.9_p20081201-r2

確認します。
$ emerge -pv cross-powerpc-unknown-linux-gnu/binutils cross-powerpc-unknown-linux-gnu/gcc cross-powerpc-unknown-linux-gnu/linux-headers cross-powerpc-unknown-linux-gnu/glibc

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R   ] cross-powerpc-unknown-linux-gnu/binutils-2.18-r3  USE="nls -gold -multislot -multitarget -test -vanilla" 0 kB [1]
[ebuild   R   ] cross-powerpc-unknown-linux-gnu/linux-headers-2.6.27-r2  0 kB [1]
[ebuild   R   ] cross-powerpc-unknown-linux-gnu/gcc-4.3.4  USE="fortran (multilib) nls (-altivec) -bootstrap -build -doc (-fixed-point) -gcj -gtk -hardened -libffi -mudflap -multislot (-n32) (-n64) -nocxx -nopie -nptl -objc -objc++ -objc-gc -openmp -test -vanilla" 0 kB [1]
[ebuild   R   ] cross-powerpc-unknown-linux-gnu/glibc-2.9_p20081201-r2  USE="gd (multilib) nls -debug -glibc-omitfp -hardened -profile (-selinux) -vanilla" 0 kB [1]

早い方のgentooのpackage.keywords, package.mask, package.useに設定が追加されます。
その際 kurobox-hg 側に同じようなマスクを追加します。
>sys-devel/binutils-2.18-r3
>sys-devel/gcc-4.3.4
>sys-kernel/linux-headers-2.6.27-r2
>sys-libs/glibc-2.9_p20081201-r2

早い方の gentoo にインストールしたパッケージが消されないように登録します。
$ sudo grep cross-powerpc-unknown-linux-gnu /var/lib/portage/world
cross-powerpc-unknown-linux-gnu/binutils
cross-powerpc-unknown-linux-gnu/gcc
cross-powerpc-unknown-linux-gnu/glibc
cross-powerpc-unknown-linux-gnu/linux-headers

kurobox-hg 側の emerge の設定に distcc を追加します。
$ grep -i distcc /etc/make.conf
FEATURES="distcc"
DISTCC_HOSTS="192.168.0.100 192.168.0.100 192.168.0.100 192.168.0.100 192.168.0.100"

updateのコマンドを実行します。
(例) $ sudo emerge --update --deep --newuse --verbose --tree --with-bdeps=y --jobs=10 --load-average=5 --keep-going -ask world

成功している場合、付属のコマンドで、経過が出力されます。
cpu貸りる側。
$ sudo DISTCC_DIR=/var/tmp/portage/.distcc distccmon-text 1|grep -v ^$
 29861  Blocked                                                            [0]
 29856  Preprocess  io.cc                                     192.168.0.100[0]
 29757  Preprocess  base.cc                                   192.168.0.100[1]
 29792  Preprocess  versionsort.cc                            192.168.0.100[2]
 29860  Preprocess  header.cc                                 192.168.0.100[3]

cpu貸す側。
$ sudo tcpdump tcp port 3632 -n -v

gccなどの使われないパッケージも有ります。
pump emerge を使うと、より使うそうだが php で試したらセグメンテーション違反になりました。
libtool を使うものと相性が悪いらしいです。
cpu 借りる側の cpu 以外の性能も悪ければ cpu 貸す側は phenom9350e 以下で余裕で足ります。
この例の場合、このcpu1個で足ります。topなどでロードアベレージが0.5いきません。

後日、再度 pump emerge -av php をやったら大丈夫でした。

0 件のコメント: