Changes between Version 97 and Version 98 of VboxApps
- Timestamp:
- Apr 24, 2015, 3:34:30 PM (10 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
VboxApps
v97 v98 5 5 == Introduction == 6 6 7 BOINC supports applications that run in !VirtualBox virtual machines.8 This provides twobenefits:7 BOINC supports "VM apps" - applications that run in !VirtualBox virtual machines. 8 This provides several benefits: 9 9 * You don't need to build app versions for different platforms. 10 10 You can develop your app in your environment of choice (say, Debian Linux), 11 and then bundle the resulting executable togetherwith11 and then bundle the resulting executable with 12 12 a virtual machine image containing an appropriate runtime environment. 13 13 The application can then be run on all platforms … … 15 15 with no additional work on your part. 16 16 * Virtual machines provide the strongest available security sandbox; 17 a program running in a virtual machine cannot access or modify 18 the host system. 17 a VM app cannot access or modify the host system. 19 18 This makes it feasible to deploy untrusted applications. 20 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 === 19 * VM apps don't need to have their own checkpoint/restart mechanism; 20 BOINC provides one. 21 22 VM apps have the following limitations: 25 23 26 24 * Commercial operating systems like Windows and Mac OS X 27 have a license with a pay-per-user 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 in the VM image. 25 have a per-user license, so in general you can't use them 26 (or other pay-per-user software such as Matlab) in the VM image. 30 27 * !VirtualBox runs only on Intel-compatible processors. 31 28 If you want to support other processors (such as ARM, SPARC, etc.), 32 you'll need to use non-VM -basedapp versions.29 you'll need to use non-VM app versions. 33 30 * Currently you can't run GPU applications in !VirtualBox VMs. 34 This may change in the future.35 31 36 32 === 32/64 bit issues === … … 48 44 you must still create separate 32- and 64-bit app versions, 49 45 using the same VM image but different '''vboxwrapper''' executables. 50 ('''vboxwrapper''' is a C++ program and has different executables 46 '''vboxwrapper''', supplied by BOINC, interfaces between the BOINC client and the !VirtualBox system; 47 it's a C++ program and has different executables 51 48 for each platform, include 32- and 64-bit; these are available below. 52 The 32-bit vboxwrapper will generally not work on a 64-bit machine ).49 The 32-bit vboxwrapper will generally not work on a 64-bit machine. 53 50 54 51 === Packaging options === … … 73 70 the versions will also differ in the VM image and the application executable. 74 71 75 The application versions for a given platform are of plan class "vbox32" 76 (for 32-bit machines) or "vbox64" (for 64-bit machines). 77 72 You must associate a [AppPlan plan class] with each app version, 73 such as "vbox32" (for 32-bit machines) or "vbox64" (for 64-bit machines). 78 74 To enable multiple cores use the plan classes "vbox32_mt" and "vbox64_mt". 79 By default it will cause the server to assign 2 threads(virtual cores) per VM task. 80 This behavior can be modified in sched_customize.cpp. 75 By default it will cause the server to assign 2 threads (virtual cores) per VM task. 81 76 82 77 For single-purpose apps, an app version includes the following files: … … 90 85 * The logical name must be '''shared/boinc_app'''. 91 86 * Other files needed by the application, all with logical names starting with '''shared/'''. 92 * An XML ''' job description file''' with logical name '''vbox_job.xml''' (see below)87 * An XML '''Vbox job description file''' with logical name '''vbox_job.xml''' (see below) 93 88 * '''vboxwrapper''', compiled for the platform (executables are available below). 94 89 * All scripts and executables must have the execute permission set. … … 97 92 be included in the workunit instead of the app version. 98 93 99 Include '''<dont_throttle/>''' in the version.xml file; !VirtualBox does its own CPU throttling. 94 Include '''<dont_throttle/>''' in the [AppVersionNew#Theversiondescriptionfile version.xml file]; 95 !VirtualBox does its own CPU throttling. 100 96 101 97 Typically you can use the same VM image for multiple applications. 102 98 This reduces network traffic and client disk usage. 103 99 104 === The job description file ===105 106 The job description file has logical name '''vbox_job.xml'''100 === The Vbox job description file === 101 102 The VBox job description file has logical name '''vbox_job.xml''' 107 103 (its physical name should include a version number and other info). 108 104 It has following structure: … … 206 202 '''vm_disk_controller_type''':: which disk controller type to emulate. 207 203 208 == Runtime State Information ==209 210 === WebAPI state file ===211 212 The state file has the name of '''vbox_webapi.xml'''.213 214 It has following structure:215 {{{216 <webapi>217 <host_port>X</host_port>218 </webapi>219 }}}220 Required elements:221 '''host_port'''::222 The port, if configured for it, vboxwrapper has assigned to the task for WebAPI requests. (HTTP, XML-RPC, JSON)223 224 === Remote Desktop state file ===225 226 The state file has the name of '''vbox_remote_desktop.xml'''.227 228 It has following structure:229 {{{230 <remote_desktop>231 <host_port>X</host_port>232 </remote_desktop>233 }}}234 Required elements:235 '''host_port'''::236 The port, if configured for it, vboxwrapper has assigned to the task for Remote Desktop requests. (RDP)237 238 204 == Vboxwrapper command-line options == 239 205 … … 611 577 vboxmanage modifyhd FILENAME.vdi --compact 612 578 }}} 579 580 == Runtime State Information == 581 582 TODO - EXPLAIN THE FOLLOWING 583 584 === WebAPI state file === 585 586 The state file has the name of '''vbox_webapi.xml'''. 587 588 It has following structure: 589 {{{ 590 <webapi> 591 <host_port>X</host_port> 592 </webapi> 593 }}} 594 Required elements: 595 '''host_port''':: 596 The port, if configured for it, vboxwrapper has assigned to the task for WebAPI requests. 597 (HTTP, XML-RPC, JSON) 598 599 === Remote Desktop state file === 600 601 The state file has the name of '''vbox_remote_desktop.xml'''. 602 603 It has following structure: 604 {{{ 605 <remote_desktop> 606 <host_port>X</host_port> 607 </remote_desktop> 608 }}} 609 Required elements: 610 '''host_port''':: 611 The port, if configured for it, vboxwrapper has assigned to the task for Remote Desktop requests. (RDP)