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:
- The server that the data flow to which, after registration to the project(s), is no longer of interest.
The BOINC core client that is commonly wrapped by the BOINC Manager (boincmgr) and the only program that is actually started by the user.
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.
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
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
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.