Differences between revisions 74 and 75
Revision 74 as of 2006-03-25 13:23:09
Size: 11287
Editor: FrankThomas
Comment: fixed typo
Revision 75 as of 2006-03-29 21:06:34
Size: 11617
Comment: motivation for source
Deletions are marked like this. Additions are marked like this.
Line 104: Line 104:
packages installed on your system. packages installed on your system. Curiosity is a good motivation to
inspect and compile the source. Whenever you feel more serious to improve
or to port the code to a novel platform please check out the aforementioned Alioth project that offers a subversion repository with the latest source and
a technically easier way to communicate your changes back to us.

BOINC - Berkeley Open Infrastructure for Network Computing

?TableOfContents(3)

Separate pages were created for:

  • BOINC/ClientBenchmarks and Optimization
  • BOINC["/Development"]

?Anchor(Introduction)

Introduction

This page accompanies an ["Alioth"] [http://alioth.debian.org/projects/pkg-boinc/ project of the same name] on the creation of respective ["DebianPackage"]s. A detailed introduction to [http://boinc.berkeley.edu/ BOINC] itself is available on the wiki pages of [http://boinc-doc.net/boinc-wiki/index.php?title=BOINC_FAQ:_Introduction_To_BOINC boinc-doc.net] and [http://en.wikipedia.org/wiki/BOINC en.wikipedia.org]. In short, BOINC provides an infrastructure for distributed computing that is currently applied for various scientific problems. Hence, everybody can do something beneficial to the world at large while one's computer is not in use.

The main crisicism of the BOINC project is that it would be difficult to install. Well, to install packages in ["Debian"] is not difficult and the motivation to create packages for this worthwhile cause requires no further explanation, except maybe the following special hint. Debian is special for its support of many different architectures, which is only sustainable because of an automated compilation of novel packages. Thus, the provision of BOINC on Debian significantly contributes to the acceptance of the project in all these non-mainstream architectures. Furthermore, the frequently distributed ["LiveCD"]s of Debian may bring functional BOINC installations to the masses.

Technical overview

From the user's perspective, BOINC has three parts:

  1. The server that the data flow to which, after registration to the project(s), is no longer of interest.
  2. The BOINC core client that is commonly wrapped by the BOINC Manager (boincmgr) and the only program that is actually started by the user.

  3. The project specific application (e.g. setiathome) that is started by the BOINC core client.

The speed of the processor is measured by the BOINC core client. One gets the more credits, the faster the BOINC core client says the individual machine is. Hence, it makes perfect sense to have a very much optimized binary of the BOINC core client, if one is interested in the stats. However, the project specific application that does the real work, does not go any faster from that. And this is where the real interest is in. Hence, the ultimate goal is to have locally optimised Debian packages for the scientific applications, too. These however are mostly distributed as binaries only, though, which renders this process difficult.

?Anchor(Installation)

Installation

Installation of binary packages

The BOINC packages have been uploaded to the Debian Main distribution. These should install smoothly with any of the standard package management tools. For the regular installation please directly jump to the section "regular installation". Should you however experience problems, you might be interested in using the original packages from the Alioth repository.

Using the Alioth repository instead of the regular release

To point the package management tools to the Alioth repository of BOINC follow these instructions:

If you are running DebianUnstable you should add the following lines to your /etc/apt/sources.list file:

# BOINC packages for Debian "sid" (unstable)
deb     http://pkg-boinc.alioth.debian.org/debian unstable main non-free
deb-src http://pkg-boinc.alioth.debian.org/debian unstable main non-free

For DebianTesting use these lines for your /etc/apt/sources.list file:

# BOINC packages for Debian "etch" (testing)
deb     http://pkg-boinc.alioth.debian.org/debian testing main
deb-src http://pkg-boinc.alioth.debian.org/debian testing main

And for DebianSarge use these lines for your /etc/apt/sources.list file:

# BOINC packages for Debian 3.1 "sarge" (stable)
deb     http://pkg-boinc.alioth.debian.org/debian sarge main
deb-src http://pkg-boinc.alioth.debian.org/debian sarge main

We are also providing packages for the Debian derivative [http://www.ubuntu.com/ Ubuntu]. Here are the corresponding lines for your /etc/apt/sources.list file:

# BOINC packages for Ubuntu 5.10 "Breezy Badger"
deb     http://pkg-boinc.alioth.debian.org/ubuntu breezy universe
deb-src http://pkg-boinc.alioth.debian.org/ubuntu breezy universe

Now update the package index files and install the BOINC core client and the BOINC Manager. Unfortunately the latter is not available for DebianSarge because of a missing build dependency (wxWidgets 2.6).

apt-get update

Regular installation

As stated before, the above should not be required since the package is now distributed through the official Debian channels. To install the packages, the following should be sufficient:

apt-get install boinc-client boinc-manager

Finally, run the graphical user interface boincmgr and follow the instructions to attach a new project to your BOINC core client. A non-graphical alternative to boincmgr is the boinc_cmd program, which is included in the boinc-client package.

Installation from source

To install the BOINC packages from source, one of the deb-src lines from the last section must be present in your /etc/apt/sources.list file. Also make sure that you have the build-essential and fakeroot packages installed on your system. Curiosity is a good motivation to inspect and compile the source. Whenever you feel more serious to improve or to port the code to a novel platform please check out the aforementioned Alioth project that offers a subversion repository with the latest source and a technically easier way to communicate your changes back to us.

  1. Prepare a source directory and download the BOINC source package and it's build dependencies:

    mkdir -p ~/src/boinc
    cd !$
    apt-get build-dep boinc
    apt-get source boinc
  2. Change to the BOINC directory and build the sources. Before running dpkg-buildpackage you can apply patches to the BOINC source or set compiler flags to optimize the BOINC core client (see also: BOINC/ClientBenchmarks).

    cd boinc-X.Y.Z/
    dpkg-buildpackage -rfakeroot -us -uc
  3. After dpkg-buildpackage successfully finishes the build you can install your custom built packages:

    cd ~/src/boinc
    dpkg -i boinc-client_X.Y.Z-R_ARCH.deb boinc-manager_X.Y.Z-R_ARCH.deb

If dpkg-buildpackage fails to build the BOINC packages this probably indicates a bug in our sources and it is worth reporting it to the pkg-boinc-devel mailing list pkg-boinc-devel@lists.alioth.debian.org.

Information on how to change compiler settings to optimize the client is given at the BOINC/ClientBenchmarks page.

?Anchor(Troubleshooting)

Troubleshooting

Bug tracking

Everything works fine but some submissions get evaluated as erroneous

If this is fewer than 10 in 100 times then this may be some physiological behaviour. The submitted results are not all 100% identical when run on different machines.

Where to find status reports on clients

The boinc-client installed by the Debian package does not perform the actual computation. That is performed by the binary downloaded dynamically by that client. The web site of the project features entries for each result which may be indicative of one problem or the other.

Graphics

Graphics are supported, but they won't show up by default. The X display needs to be accessible to the BOINC graphics processes in order to see the interesting graphics for, e.g., Einstein@Home, and it isn't by default.

Your X display can be made accessible to all local UNIX socket connections, including the ones from BOINC, by running

xhost +local:

This is generally safe on single-user machines, though not ideal. It is a bad idea on multi-user machines, so don't do it there.

Then, the "Show graphics" button in boincmgr, or the --result ... graphics_window option to boinc_cmd, will actually work. Unfortunately, when it doesn't work because of failed X authorization, it does not report the error back to boinc_cmd or boinc_mgr, and the only trace of the error is in some log file in the result directory /var/lib/boinc-client/slots/<whatever>.

Command Line Only

Successfully running BOINC from the command line may take a little work. The package installs boinc_client as a daemon service running under user boinc. When working from the command line only, this means using boinc_cmd to communicate with the boinc_client service.

boinc_cmd can be a little frustration to work with, the man page needs a volunteer to step up and the feedback from the command is minimalistic. By default, the output from boinc_client is piped to log files in /var/lib/boinc-client/ (stdoutdae.txt and stderrdae.txt). These will need to be consulted when troubleshooting.

The first command you should use should be

boinc_cmd --get_state

Why not try it! When it works, you'll see lots of information about the projects you are (or are not) running but it's likely not to work just yet.

Authorization

The first stumbling block is that (for security reasons) boinc_cmd should not be authorized to connect to the daemon initially. boinc_client will have invented a random password (to protect the connection to the boinc_client daemon and is nothing at all to do with project passwords) and put it into /var/lib/boinc-client/gui_rpc_auth.cfg. You'll probably want to edit this file so that it contains the password you want to use.

boinc_client will need to be restarted for this change to take effect. This can be done thus:

/etc/init.d/boinc-client restart

Now try

boinc_cmd --host localhost --passwd <YOUR PASSWORD> --get_state

Hopefully it should work now.

Signing Up

When using the command line, you'll need to sign up using a form on the project website. In return, you will receive an email containing important information looking something like:

Welcome to SETI@home.

This email confirms your account with SETI@home:
    Project URL:         http://setiathome.berkeley.edu
    Account Key:         xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    User name:           Your User Name
    E-mail:              email@example.com


For further information and assistance with SETI@home go to http://setiathome.berkeley.edu

You now need to ask boinc_client to attach each project you want to run. Use

boinc_cmd --host localhost --passwd <YOUR PASSWORD>  --project_attach http://setiathome.berkeley.edu xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

where xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx is the account key contained in the email.

To attach the boinc_client to your SETI-account use

boinc_cmd --host localhost --passwd <YOUR PASSWORD>  --lookup_account http://setiathome.berkeley.edu YourEmail YourSetiPassword

To check that this has been successful, use:

boinc_cmd --host localhost --passwd <YOUR PASSWORD> --get_state

You should now see your projects listed under Projects, a little like

...
======= Projects =======
1) -----------
   name: SETI@home
   master URL: http://setiathome.berkeley.edu/
...

and a lot of other information as well.

If this doesn't work for you, start by consulting the logs.