General Information

This guide will help you set up Dan Bernstein’s daemontools, which is a program that supervises another daemon so that when it does fail, it will automatically be restarted.

[Read more...]

Folding@Home using daemontools

General Information

This guide will help you set up Folding@Home using Dan Bernstein’s daemontools, for easy maintenance and also so that on a server reboot folding@home automatically comes back up.


You will need the following items to be able to complete this guide:

  1. Root access to a FreeBSD machine
  2. Daemontools running
  3. Linux compatibility installed

Installing Linux Compat

Folding@home only makes Linux binaries. If you do not have the Linux emulation mode enabled, then run the following command:

# pkg_add -r linux_base-8
# echo 'linux_enable="YES"' >> /etc/rc.conf

If you wish, you can compile from source, using the /usr/ports/emulators/linux_base-8/

At this point you need to restart, for the new linux emulation mode to become enabled.

# shutdown -r now

Setting up Folding@home

Here one creates the service directory and also a directory where the Folding@home client is run.

# mkdir /usr/local/folding@home/
# mkdir /usr/local/folding@home/root

Next we need to get the binary. Yes this is the Linux binary eventhough it contains an .exe extension.

# cd /usr/local/folding@home/root/
# fetch http://www.stanford.edu/group/pandegroup/release/FAH502-Linux.exe
# chmod +x FAH502-Linux.exe
# brandelf -t Linux FAH502-Linux.exe

You can always get the latest version of the client at http://folding.stanford.edu/download.html.

# mkdir /usr/local/folding@home/log
# mkdir /usr/local/folding@home/env
# mkdir /usr/local/folding@home/log/main

We create the directory structure needed for folding@home to be run under Dan Bernstein’s daemontools. We also need to chown/chmod them to the right permissions:

# cd /usr/local/folding@home
# chown -R nobody:nobody root env log/main
# chmod 2755 root log log/main

Now before doing anything else, we need to get the client set up. You need to give it a username to be able to say that you contributed, or you can stay anonymous.

# cd root
# setuidgid nobody ./FAH502-Linux.exe -configonly
# cd ..

Next set up the run file, this is the most important file, as it runs your Folding@home client using daemontools’ supervise, which will make sure it is always up.

# cat << EOF > run
# #!/bin/sh
# exec 2>&1
# exec envdir ./env sh -c '
#  cd /usr/local/folding@home/root/
#  exec setuidgid nobody /usr/bin/nice -n 20 /usr/local/folding@home/root/FAH502-Linux.exe -freeBSD
# '
# chmod 700 run

Logging is important. Of course, we want to know how far along we are.

# cat << EOF > log/run
# #!/bin/sh
# exec setuidgid nobody multilog t ./main
# chmod 700 log/run

Starting Folding@home

Now, to get Folding@Home started using svscan and have it running under supervise, we have to let svscan know about our service.

# cd /var/service
# ln -s /usr/local/folding@home

It should now be running, to see if it really is running, check with ps.

# ps auxwwww | grep -i fah

You should see several different processes named FAH*-Core.exe, this means you are good to go. To check how long it has been running, use svstat like follows:

# svstat /var/service/folding@home/