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:
- Root access to a FreeBSD machine
- Daemontools running
- 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 # ' # EOF # 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 # EOF # chmod 700 log/run
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/