21 | | BOINC's support for VM apps is based on a program called |
22 | | '''vboxwrapper''' that interfaces between |
23 | | the BOINC client and the !VirtualBox system. |
24 | | |
25 | | === Licensing issues === |
26 | | |
27 | | Commercial operating systems like Windows and Mac OS X |
28 | | have a license with a pay-per-use clause, |
29 | | so in general you can't use them in the VM image. |
30 | | Similarly, you can't include pay-per-use software such as Matlab |
31 | | in the VM image. |
| 21 | BOINC's support for VM apps is based on a program called '''vboxwrapper''' |
| 22 | that interfaces between the BOINC client and the !VirtualBox system. |
| 23 | |
| 24 | === Restrictions === |
| 25 | |
| 26 | * Commercial operating systems like Windows and Mac OS X |
| 27 | have a license with a pay-per-use clause, |
| 28 | so in general you can't use them in the VM image. |
| 29 | Similarly, you can't include pay-per-user software such as Matlab |
| 30 | in the VM image. |
| 31 | |
| 32 | * !VirtualBox runs only on Intel-compatible processors. |
| 33 | If you want to support other processors (such as ARM, SPARC, etc.), |
| 34 | you'll need to use non-VM-based app versions. |
| 35 | |
| 36 | * Currently you can't run GPU applications in !VirtualBox VMs. |
| 37 | This may change in the future. |
51 | | === Non-Intel-compatible and GPU applications === |
52 | | |
53 | | !VirtualBox runs only on Intel-compatible processors. |
54 | | If you want to support other processors (such as ARM, SPARC, etc.), |
55 | | you'll need to use non-VM-based app versions. |
56 | | |
57 | | Currently you can't run GPU applications in !VirtualBox VMs. |
58 | | This may change in the future. |
59 | | |
| 57 | === Packaging options === |
| 58 | |
| 59 | There are two ways to package VM apps. |
| 60 | NOTE: in the following, we use '''application''' and '''application version''' |
| 61 | with their [AppVersion BOINC-specific meanings]; |
| 62 | we'll use '''executable''' to refer to the program that runs within the VM. |
| 63 | |
| 64 | * '''Single-purpose app''': Include the executable with the application version. |
| 65 | Create a separate application for each executable you want to run. |
| 66 | * '''Multi-purpose app''': Include the executable in each workunit. |
| 67 | This allows you to use a single application for as many executables as you like. |
| 68 | In this case, consider making the executable file |
| 69 | [JobSubmission sticky]; that way, clients will download it only once. |
| 70 | |