Changes between Version 97 and Version 98 of VboxApps


Ignore:
Timestamp:
Apr 24, 2015, 3:34:30 PM (10 years ago)
Author:
davea
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • VboxApps

    v97 v98  
    55== Introduction ==
    66
    7 BOINC supports applications that run in !VirtualBox virtual machines.
    8 This provides two benefits:
     7BOINC supports "VM apps" - applications that run in !VirtualBox virtual machines.
     8This provides several benefits:
    99 * You don't need to build app versions for different platforms.
    1010   You can develop your app in your environment of choice (say, Debian Linux),
    11    and then bundle the resulting executable together with
     11   and then bundle the resulting executable with
    1212   a virtual machine image containing an appropriate runtime environment.
    1313   The application can then be run on all platforms
     
    1515   with no additional work on your part.
    1616 * 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.
    1918   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
     22VM apps have the following limitations:
    2523
    2624 * 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.
    3027 * !VirtualBox runs only on Intel-compatible processors.
    3128  If you want to support other processors (such as ARM, SPARC, etc.),
    32   you'll need to use non-VM-based app versions.
     29  you'll need to use non-VM app versions.
    3330 * Currently you can't run GPU applications in !VirtualBox VMs.
    34   This may change in the future.
    3531
    3632=== 32/64 bit issues ===
     
    4844you must still create separate 32- and 64-bit app versions,
    4945using 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;
     47it's a C++ program and has different executables
    5148for 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).
     49The 32-bit vboxwrapper will generally not work on a 64-bit machine.
    5350
    5451=== Packaging options ===
     
    7370the versions will also differ in the VM image and the application executable.
    7471
    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 
     72You must associate a [AppPlan plan class] with each app version,
     73such as "vbox32" (for 32-bit machines) or "vbox64" (for 64-bit machines).
    7874To 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.
     75By default it will cause the server to assign 2 threads (virtual cores) per VM task.
    8176
    8277For single-purpose apps, an app version includes the following files:
     
    9085  * The logical name must be '''shared/boinc_app'''.
    9186 * 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)
    9388 * '''vboxwrapper''', compiled for the platform (executables are available below).
    9489 * All scripts and executables must have the execute permission set.
     
    9792be included in the workunit instead of the app version.
    9893
    99 Include '''<dont_throttle/>''' in the version.xml file; !VirtualBox does its own CPU throttling.
     94Include '''<dont_throttle/>''' in the [AppVersionNew#Theversiondescriptionfile version.xml file];
     95!VirtualBox does its own CPU throttling.
    10096
    10197Typically you can use the same VM image for multiple applications.
    10298This reduces network traffic and client disk usage.
    10399
    104 === The job description file ===
    105 
    106 The job description file has logical name '''vbox_job.xml'''
     100=== The Vbox job description file ===
     101
     102The VBox job description file has logical name '''vbox_job.xml'''
    107103(its physical name should include a version number and other info).
    108104It has following structure:
     
    206202 '''vm_disk_controller_type''':: which disk controller type to emulate.
    207203
    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 
    238204== Vboxwrapper command-line options ==
    239205
     
    611577vboxmanage modifyhd FILENAME.vdi --compact
    612578}}}
     579
     580== Runtime State Information ==
     581
     582TODO - EXPLAIN THE FOLLOWING
     583
     584=== WebAPI state file ===
     585
     586The state file has the name of '''vbox_webapi.xml'''.
     587
     588It has following structure:
     589{{{
     590<webapi>
     591    <host_port>X</host_port>
     592</webapi>
     593}}}
     594Required 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
     601The state file has the name of '''vbox_remote_desktop.xml'''.
     602
     603It has following structure:
     604{{{
     605<remote_desktop>
     606    <host_port>X</host_port>
     607</remote_desktop>
     608}}}
     609Required elements:
     610 '''host_port'''::
     611    The port, if configured for it, vboxwrapper has assigned to the task for Remote Desktop requests. (RDP)