# BOINC (日本語)

## BOINC とは？

BOINC: 「貴方の計算機（Linux、Mac、或いはWindowsなど）の待機時間を使って、疾病の治療、地球温暖化の研究、パルサーの解析、その他にも沢山の科学的な研究へ寄与しませんか？簡単で安全に参加できますよ。」

Wikipedia: 「Berkeley Open Infrastructure for Network Computing（バークレー オープン インフラストラクチャ フォー ネットワーク コンピューティング）とは、分散コンピューティングプロジェクトのプラットフォームとして開発されたクライアント・サーバ型のソフトウェアである。開発元はカリフォルニア大学バークレー校。略称は BOINC。」

Arch Linux では community リポジトリに boinc を収録しているので興味があれば以下の手順によりインストール、及び設定を行うと良い。

## BOINC のインストール

### 概要

BOINCはデーモンとしてインストールされ、またセキュリティへの配慮からユーザーboincが作成され実行される様になります。通常ログインする一般ユーザーがboincの制御をGUIで簡単に行える様にする為、BOINCのインストール後にそのユーザーをグループboincへ追加するなどします。

### インストール作業

pacmanでBOINCのパッケージを確認しましょう:

    # pacman -Ss boinc

    community/boinc 6.12.34-4
        Berkeley Open Infrastructure for Network Computing for desktop with X
    community/boinc-nox 6.12.34-4
        Berkeley Open Infrastructure for Network Computing for server without X

通常はboincをインストールします。尚、boinc-noxをインストールする場合でも、インストール後に起動オプションを適切に編集する事で別のGUIを搭載したマシンへ導入したboincのGUIから遠隔操作する事は可能です。ヘッドレスのマシンへBOINCを導入したい場合などに選択すると良いでしょう。

pacmanでBOINCをインストールしましょう:

    # pacman -S boinc

`/etc/rc.conf`のデーモンセクションに追記してBOINCが自動的に稼働する様にしましょう:

    DAEMONS=(... boinc ...)

そのマシンの普段使いのユーザーをグループboincへ追加して措きましょう。追加した後に一旦ログアウトしてグループへの追加が適用された状態でログインし直すのをお忘れ無く。

    # gpasswd -a username boinc

念の為、普段使いのユーザーでログインし直した後、グループboincに追加されているか groups コマンドで確かめて措きましょう:

    $ groups

BOINCデーモンを起動して見ましょう（`/etc/rc.conf`を適切に編集した後でマシンを再起動していれば既に起動しているかもしれません）:

    # /etc/rc.d/boinc start

BOINCが稼働中かプロセスを確認して見ましょう:

    $ ps aux | grep boinc

## BOINC を使う

### GUIから BOINC を管理

boincmgrコマンドでBOINCデーモンを制御するGUIが起動するよ。

    $ boincmgr

初めて起動すると、BOINCのプロジェクトへ参加する為のウィザードダイアログが出るよ。とりあえずBOINCに参加してみたいだけならそのままプロジェクトへ参加してもいいし、複数のマシンをBOINCに参加させたりBOINCの各種チームに参加してみたいのならばアカウントマネージャーへの登録を先に済ませてしまう事も出来るよ。なお、より詳細な設定や、別のマシンで動作中のBOINCデーモンを制御したい場合には Advanced View に表示を切り替えると良い。勿論、後から複数のプロジェクトを追加したり、参加を中止する事もこのGUIで出来る。

### GUIをリモートマシンで稼働するBOINCデーモンへ接続して管理

BOINCデーモンの初回起動時には`/var/lib/boinc/gui_rpc_auth.cfg`というデーモンへの接続用パスワードファイルが自動生成される。なお、セキュリティ上の懸念が無ければ、このパスワードファイルの中身を空っぽ（cp /dev/null /var/lib/boinc/gui_rpc_auth.cfg）にすればパスワードなしにも設定できる。このパスワードファイルは平文であるからパスワードを設定しておく場合にも十分に注意した取り扱いが必要な事に気を付けよう。

自動生成された（あるいは現在設定されている）リモート管理用パスワードを確認する方法:

    # cat /var/lib/boinc/gui_rpc_auth.cfg gui_rpc_auth.cfg

また、BOINCデーモンがリモートのGUIからの接続を許容する様に起動スクリプトにオプションを追加する:

    # vim /etc/rc.d/boinc

start)の定義で/usr/bin/boinc_clientを起動するコマンドの最後に -allow_remote_gui_rpc を追加する:

    su $BOINCUSER -c "nice -n 19 /usr/bin/boinc_client --daemon --dir ${BOINCDIR} --redirectio -allow_remote_gui_rpc"

起動スクリプトを書き換えたならBOINCデーモンを再起動して措こう:

    # rc.d restart boinc

後はBOINCの制御GUIを実行したい別のマシンでboincmgrを起動し、 Advanced View のメニューから 高度な操作 の コンピュータの選択 を実行し、先に設定したBOINCデーモンの稼働するホスト名とそのBOINCデーモンへのリモート接続様パスワードを入力すれば良い。

### GPU を用いるプロジェクトへ参加したい場合には

もしGPUを使いたい際には、先ずnVIDIAないしAMDのプロプライエタリドライバを導入しなければならない。AMDについてはCatalyst driver for stock kernelを見るなどしてAURを利用して導入すると良い。 其の後、ユーザー boinc をグループ video へ追加する:

    # gpasswd -a boinc video

これでユーザー boinc （で実行されるBOINCデーモンプロセス）がXセッションにアクセス出来るようになる。次に以下のコマンドを実行すれば準備完了である:

    xhost local:boinc

必要に応じて起動スクリプト(~/.xinitrc など)に追記して措くと良い。

## ログファイルの在り処

BOINCのログは`/var/lib/boinc/`に生成されます。

    /var/lib/boinc/stderrdae.txt
    /var/lib/boinc/stdoutdae.txt

## 参加するプロジェクトを選ぶ際のヒント

プロジェクト毎に要求されるハードウェアの要件（CPUやディスクスペース）や実行環境として対応するOSの種類が異なります。もしも、参加したプロジェクトからBOINCデーモンが引き受けてきた仕事が設定された提出期限に間に合わない様な事が良く起こる場合には、プロジェクトに対するマシンのリソース割り当ての方法や稼働させる時間帯の制限などを観直すと良いかもしれません。

もちろん、プロジェクトの公益性などから貴方がリソースを提供してデータの生成に寄与したい！と思えるプロジェクトを見つけて参加する事も大切です。

### Arch64 で実行する場合の注意点

幾つかのプロジェクトでは32bitアプリケーションしかサポートできて居ない事があります。その様なプロジェクトへArch64マシンで参加する際には32bit版のライブラリが必要になります。必要に応じて /etc/pacman.conf を編集し、 [multilib] リポジトリを有効化して32bit版のライブラリを導入すると良いでしょう。

WUsの実行に （例： Climateprediction）
  lib32-glibc, lib32-glib2
グラフィックの表示に （例： Several projects of WCG, Climateprediction）
  lib32-pango, lib32-libxdamage, lib32-libxi, lib32-libgl, lib32-libjpeg6 (AUR), lib32-libxmu

## 問題が起きた場合

もしも次の様なエラーに遭遇したなら:

    GPU Missing

ワークユニットが稼働できていないので、とりあえずBOICデーモンを再起動してみるとよい :

    # /etc/rc.d/boinc restart

この問題はXセッションの初期化が完了する前にBOINCデーモンが稼働しようとして発生します。デーモンの開始をrc.confでバックグランドにしていればこの問題は凡そ発生しません。しかし、ディスプレイマネージャーの初期化がもたつくなどした場合には発生する事があります。もしdisplay managerを起動時にロードしない様にしている場合、デーモンは常に XがGPUの初期化を終えてから実行されるようにするとよいでしょう。

## リンク

- BOINC (日本語環境からの接続に対しては日本語表示となる)
- List of BOINC projects(en)
- Wikipedia BOINC] (日本語)

Category:

- Mathematics and science (日本語)