If a Distributed Computing project provides only a Windows application, but you have hosts running Linux, you could
A variation of the third method is employed when yoyo@home's evolution@home is run on Linux. evolutio@home on Windows is already a wrapper project. Hence, yoyo wrote a little more extensive wrapper for evolution@home, which combines the functionality of the original native Windows wrapper with the embedding into Wine when run on Linux.
Step-by-step Example
I am now explaining the third method by the example of Acoustics@home. This project provides a native Linux application version, hence, none of the following is required to run Acoustics@home on a Linux host. But I tried the Wine approach while exploring a current performance problem with Acoustics on Linux.
Step 1:
Step 2:
Step 3:
Step 4:
Step 5:
Step 6:
Step 7:
Step 8:
Step 9:
Done.
Edit,
in this case I measured 8 % increased run time of the tasks when running on Wine and Linux, compared to running natively on Windows on the same hardware.
- either virtualize Windows,
- install a virtualization solution on Linux (KVM, Xen, Virtualbox...)
- buy Microsoft Windows
- install it onto a virtual machine
- boot the VM and proceed as on a regular Windows host (i.e. install the Windows version of BOINC, attach to the project, run tasks...)
downsides:
license costs; an additional host with its OS and applications and everything needs to be administered
license costs; an additional host with its OS and applications and everything needs to be administered
- or run BOINC via Wine,
- install Wine on Linux
- download the Windows version of BOINC
- run its installer using Wine
- start the Windows version of boinc using Wine
- proceed as on a regular Windows host (attach to the project, run tasks...)
downsides:
a separate client instance needs to be used; GUI communication with the client may be laggy
a separate client instance needs to be used; GUI communication with the client may be laggy
- or run the science application via Wine within the native Linux BOINC client.
- requirement: The project needs to permit the anonymous platform mechanism
- install Wine
- for projects which require .Net, install Mono
- attach the Linux client to the project
- either copy the required science application files from a Windows host which is already attached to the project, or download these files from known URLs
- copy these files into the project directory
- create a little wrapper script in the project directory
- write an app_info.xml which describes the files and application
- restart the client
- request work, run tasks...
downsides:
the anonymous platform mechanism is poorly documented; if you don't have a Windows host where you can copy the files from, you need to ask somebody for the download URLs and certain other information about the Windows application version found in client_state.xml
the anonymous platform mechanism is poorly documented; if you don't have a Windows host where you can copy the files from, you need to ask somebody for the download URLs and certain other information about the Windows application version found in client_state.xml
A variation of the third method is employed when yoyo@home's evolution@home is run on Linux. evolutio@home on Windows is already a wrapper project. Hence, yoyo wrote a little more extensive wrapper for evolution@home, which combines the functionality of the original native Windows wrapper with the embedding into Wine when run on Linux.
Step-by-step Example
I am now explaining the third method by the example of Acoustics@home. This project provides a native Linux application version, hence, none of the following is required to run Acoustics@home on a Linux host. But I tried the Wine approach while exploring a current performance problem with Acoustics on Linux.
Step 1:
Attach the Linux host to Acoustics@home.
Maybe run some tasks; complete them and set the project to no-new-tasks.
Maybe run some tasks; complete them and set the project to no-new-tasks.
Step 2:
Install Wine.
I have Linux Mint 18.3, which provides Wine 1.6.2 as package.
I have Linux Mint 18.3, which provides Wine 1.6.2 as package.
Step 3:
Copy or download the necessary application files.
Acoustics@home's current SSPEMDD v0.18 application uses one exe and two data files on Windows:
sspemdd_0.18_windows_x86_64.exe
ac_modes_R7km_dtimes1.txt
ac_modes_R7km_spmag1.txt
The two data files were already there from when I ran some native Linux tasks. I copied the sspemdd_0.18_windows_x86_64.exe binary from a Windows host.
Download URLs for all these files can be looked up in client_state.xml of a Windows host that is attached to Acoustics@home.
Acoustics@home's current SSPEMDD v0.18 application uses one exe and two data files on Windows:
sspemdd_0.18_windows_x86_64.exe
ac_modes_R7km_dtimes1.txt
ac_modes_R7km_spmag1.txt
The two data files were already there from when I ran some native Linux tasks. I copied the sspemdd_0.18_windows_x86_64.exe binary from a Windows host.
Download URLs for all these files can be looked up in client_state.xml of a Windows host that is attached to Acoustics@home.
Step 4:
Copy these files into /var/lib/boinc-client/projects/www.acousticsathome.ru_boinc/.
Step 5:
In this directory, create a file called "sspemdd_wine_wrapper.sh" with the following contents:
Code:
#!/bin/bash
exec /usr/bin/wine /var/lib/boinc-client/projects/www.acousticsathome.ru_boinc/sspemdd_0.18_windows_x86_64.exe
Step 6:
Still in this directory, create a file called "app_info.xml" with the following contents:
Code:
<app_info>
<app>
<name>sspemdd</name>
<user_friendly_name>SSPEMDD-Wine</user_friendly_name>
</app>
<file_info>
<name>sspemdd_wine_wrapper.sh</name>
<executable/>
</file_info>
<file>
<name>sspemdd_0.18_windows_x86_64.exe</name>
<executable/>
</file>
<file>
<name>ac_modes_R7km_dtimes1.txt</name>
</file>
<file>
<name>ac_modes_R7km_spmag1.txt</name>
</file>
<app_version>
<app_name>sspemdd</app_name>
<version_num>18</version_num>
<api_version>7.9.0</api_version>
<file_ref>
<file_name>sspemdd_wine_wrapper.sh</file_name>
<main_program/>
</file_ref>
<file_ref>
<file_name>sspemdd_0.18_windows_x86_64.exe</file_name>
</file_ref>
<file_ref>
<file_name>ac_modes_R7km_dtimes1.txt</file_name>
<open_name>ac_modes_R7km_dtimes1.txt</open_name>
<copy_file/>
</file_ref>
<file_ref>
<file_name>ac_modes_R7km_spmag1.txt</file_name>
<open_name>ac_modes_R7km_spmag1.txt</open_name>
<copy_file/>
</file_ref>
</app_version>
</app_info>
I copied much of this from the contents of client_state.xml of a Windows host.
Step 7:
Make sure that the data files can be read by all, and that the wrapper and exe are executable by all:
chmod a+r /var/lib/boinc-client/projects/www.acousticsathome.ru_boinc/*
chmod a+x /var/lib/boinc-client/projects/www.acousticsathome.ru_boinc/*.{exe,sh}
(Alternatively, you can set ownership of the files to boinc and restrict access permissions to boinc.)
chmod a+r /var/lib/boinc-client/projects/www.acousticsathome.ru_boinc/*
chmod a+x /var/lib/boinc-client/projects/www.acousticsathome.ru_boinc/*.{exe,sh}
(Alternatively, you can set ownership of the files to boinc and restrict access permissions to boinc.)
Step 8:
Restart the BOINC client:
sudo service boinc-client restart
Check boincmgr's event log that it says "Acoustics@home ... Found app_info.xml; using anonymous platform", and that it doesn't show any errors for Acoustics@home.
sudo service boinc-client restart
Check boincmgr's event log that it says "Acoustics@home ... Found app_info.xml; using anonymous platform", and that it doesn't show any errors for Acoustics@home.
Step 9:
Allow new tasks for the Acoustics@home project. You should now receive tasks, and they should show up in boincmgr's task list with the application name "Local: SSPEMDD-Wine 0.18". Complete them, and go look up later on the Acoustics@home web page whether the tasks validated correctly.
Done.
Edit,
in this case I measured 8 % increased run time of the tasks when running on Wine and Linux, compared to running natively on Windows on the same hardware.
Last edited: