Advanced search

Message boards : Frequently Asked Questions (FAQ) : HOW TO - Add a Boinc Start Delay in Ubuntu

Author Message
Profile skgiven
Volunteer moderator
Project tester
Volunteer tester
Send message
Joined: 23 Apr 09
Posts: 3967
Credit: 1,803,687,639
RAC: 499,648
Scientific publications
Message 33781 - Posted: 5 Nov 2013 | 14:16:14 UTC

Boinc often starts up before the NVidia drivers load, especially just after you install or upgrade. When this happens Boinc does not see the GPU, and reports Missing GPU against any GPU tasks. You can prevent this by delaying the automatic start-up of Boinc.

From a Terminal type,

    sudo update-rc.d -f boinc-client remove
    sudo update-rc.d boinc-client defaults 99

This works when Boinc is installed from the repository as a service (daemon).

If you installed Boinc manually, and Boinc is set to automatically start, you can add a sleep delay. From within Ubuntu, type startup and open 'Startup Applicaitons', select Boinc, Edit and at the start of the command add sleep 9 (to wait 9seconds before starting Boinc).

- Opt out of Beta Tests
- Ask for Help

Send message
Joined: 16 Mar 11
Posts: 509
Credit: 179,005,236
RAC: 0
Scientific publications
Message 33783 - Posted: 5 Nov 2013 | 19:11:03 UTC - in response to Message 33781.

The reason that works is because daemons that have been assigned lower numbers start before after daemons assigned higher numbers. The max number allowed is 99. The 99 causes Linux to start the boinc-client daemon near the end of the boot sequence but it doesn't guarantee it will start last. If other daemons have been assigned 99 then the boot algorithm might start boinc-client ahead of all the other daemons assigned 99. That's usually not a problem unless someone has done something silly and desperate like delay all services other than X until after X starts by assigning 99 to all of them. In that case boinc-client may very well start immediately after X and before the nvidia drivers load. It's rare but it does happen.

If you've tried skivens' tip and still have the problem he describes then it might be that someone did the desperate, naive, silly thing I describe above. If you suspect it's true then peek in /etc/rc3.d/ and see if most/all scripts have 99 in their name. If they do then that's likely your problem and the fix is to assign them higher numbers by renaming them while leaving boinc-client at 99. The difficulty is that each script (or a link to it) appears in a number of other directories so renaming them manually with the mv and ln commands is tedious and prone to error. Use the update-rc.d command instead since it will change all references to the target daemon automatically and correctly. If you don't know what order those scripts (the ones assigned 99) should start in then simply re-assign any 98 level scripts to 97, then move all 99's except boinc-client up to 98.

Another way to delay the boinc-client daemon is to edit the script that starts boinc-client daemon and add a sleep command. The nano text editor is perfect for the job.

sudo nano /etc/init.d/boinc-client (starts nano and loads the script into it)

Scroll down to

start() { log_begin_msg "Starting $DESC: $NAME"

Add the sleep command on a new line following the { like this:

start() { sleep 60 log_begin_msg "Starting $DESC: $NAME"

60 causes a 60 second pause, use whatever number of seconds you want to delay.

Type ctrl-O followed by <enter> to save the file then ctrl-x to exit nano. No need to reboot at that time. The delay will occur next time you boot and every boot thereafter until you remove the sleep command.

BOINC <<--- credit whores, pedants, alien hunters

Send message
Joined: 4 Jul 09
Posts: 76
Credit: 114,610,402
RAC: 0
Scientific publications
Message 34360 - Posted: 17 Dec 2013 | 19:15:14 UTC

The first method did not work for me and I have not tried the second this method does. I am running Mint 15 which is based on Ubuntu Raring.

Edit /etc/rc.local

add the following to rc.local with your favorite editor BEFORE the line that says exit 0

echo "service boinc-client restart" | at now + 1 minutes

So /etc/rc.local looks like:
#!/bin/sh -e
# rc.local
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
# In order to enable or disable this script just change the execution
# bits.
# By default this script does nothing.

echo "service boinc-client restart" | at now + 1 minutes

exit 0


Post to thread

Message boards : Frequently Asked Questions (FAQ) : HOW TO - Add a Boinc Start Delay in Ubuntu