netbsd on Raspberry Pi2 日記(6)
distccでパッケージを作る
ここまでで、NetBSD的にはだいたい動く状態なので、ここからは普通に使っていく。
netbsdのパッケージシステムは、pkgsrcなのだが、BSD系のパッケージシステムは、伝統的にはソースからビルドする系のシステムになっていて、pkgsrcもその例に漏れない。
Raspberry Pi2 が ARM core x 4 @900MHzとはいっても、パッケージをガンガンコンパイルするにはちょっと非力なため、パッケージコンパイルのために分散コンパイル環境を作っていく。
ここまでで、母艦側でクロスコンパイラを使ってカーネルなどのコンパイルをしているので、クロスコンパイラはすでにあるから、これを使って、分散コンパイル環境を設定していく。
母艦側の設定
母艦側はFreeBSDだったので、pkgでdistccを入れる。
# pkg install distcc
母艦側の /opt/NetBSD-7.0/usr/toolsarm/bin/ の下にクロスコンパイラ群がある。このうち、c++, cc, g++, gccがdistcc側から呼ばれる様なので、/opt/NetBSD-7.0/distcc/にsymbolicリンクを貼ってみる
# mkdir /opt/NetBSD-7.0/distcc # cd /opt/NetBSD-7.0/distcc # ln -s ../usr/toolsarm/bin/armv7--netbsdelf-eabihf-c++ c++ # ln -s ../usr/toolsarm/bin/armv7--netbsdelf-eabihf-gcc cc # ln -s ../usr/toolsarm/bin/armv7--netbsdelf-eabihf-g++ g++ # ln -s ../usr/toolsarm/bin/armv7--netbsdelf-eabihf-gcc gcc
これで、 /opt/NetBSD-7.0/distcc にコンパイラ類が置かれたことになるので、母艦側のdistccdの distccd_pathに設定する。
rc.confに以下を設定
distccd_enable="YES" distccd_flags="--listen 母艦のIPアドレス --user distcc --daemon -P /var/run/distccd.pid -a 受け付けるネットワークアドレス(192.168.0.0/24など)" distccd_path="/opt/NetBSD-7.0/distcc"
で、distccdを起動しておく
# service distccd restart
raspberry pi2 側
まず、distccをいれるために、pkgsrcを展開して最新化する
$ ftp ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.gz $ su - # tar -xzpf pkgsrc.tar.gz -C /usr # cd /usr/pkgsrc # cvs update -Pd
詳しくは、以下の公式あたり http://www.jp.netbsd.org/ja/docs/pkgsrc/getting.html#getting-first
次に、distccをインストール。
# cd /usr/pkgsrc/devel/distcc # make install # make clean clean-depends
mk.confを書き換え
PKGSRC_COMPILER=distcc gcc DISTCC_HOSTS=母艦のIPアドレス
ここまでできると、次のコンパイルから、ある程度大きなソースはdistccの母艦側で処理されるようになる。
母艦側のsyslogに、以下の様に出ているはず(unicornは母艦のホスト名)
Oct 19 23:23:27 unicorn distccd[819]: (dcc_job_summary) client: 192.168.10.11:65516 COMPILE_OK exit:0 sig:0 core:0 ret:0 time:327ms gcc gm_qnx4.c Oct 19 23:23:27 unicorn distccd[957]: (dcc_job_summary) client: 192.168.10.11:65515 COMPILE_OK exit:0 sig:0 core:0 ret:0 time:383ms gcc gm_beos.c Oct 19 23:23:28 unicorn distccd[957]: (dcc_job_summary) client: 192.168.10.11:65514 COMPILE_OK exit:0 sig:0 core:0 ret:0 time:353ms gcc gm_xfs.c