log as well as the VM execution log. Maybe the hypervisor log
will tell us what is up with the virtual floppy device.
- VBOX: Don't retry commands that are expected to fail in normal use
cases. It slows down getting the VM up and running.
- VBOX: After starting the VM, use a timed loop waiting for the initial
VM state change instead of just waiting for 5 seconds. Older
machines can take longer than 5 seconds to switch from poweroff
to starting. If we hit the main poll loop in that state the wrapper
thinks we have crashed.
- VBOX: Strip carriage returns from all the vboxmanage output on
Windows.
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=24967
the VM extensions for the CPU have been disabled via the BIOS. This
allows the core-client to parse the response and disable future
request for multi-core VM jobs.
samples/vboxwrapper/
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=24940
and disable the use of them at VM creation time. Certain actions
within VirtualBox will force enabling them at runtime and cause
an error (like SMP support) but it should reduce confusion between
volunteers and projects when a VM configuration change now causes
a class of machine that used to work suddenly stop working.
- VBOX: Add some more helpful text notes for error conditions that
the volunteer might be able to address. For instance other
hypervisors locking the VM CPU features for exclusive use.
- VBOX: If we have to dump out the VM execution log on Windows, remove
excess carriage returns from the spew.
samples/vboxwrapper/
vbox.cpp
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=24907
processor doesn't support hardware acceleration for VMs,
manually turn off the hardware acceleration support in the VMs
configuration.
NOTE: The latest server scheduler should not be assigning
multi-core jobs to hosts that do not have hardware acceleration.
samples/vboxwrapper/
vbox.cpp
svn path=/trunk/boinc/; revision=24905
allow applications to supply a "web graphics URL",
in which case the manager's "Show Graphics" button
opens a browser at that URL.
This typically would used for applications that
implement a web server that serves pages showing
job information in HTML.
- vboxwrapper: if <pf_guest_port> is specified in the config file,
set up port forwarding to that port
and use the above API call with URL "http://localhost:port"
svn path=/trunk/boinc/; revision=24898
is a certain class of machines where the processor supports hardware
acceleration but it is disabled in the computers BIOS. Asking the volunteer
to tweak settings in the computers BIOS isn't a good idea. We might be able
to turn it on as an advanced preference thing in the future.
samples/vboxwrapper/
vbox.cpp
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=24896
treat premature events as failures. Avoids false positive results.
- VBOX: Log the VM Execution log if a premature shutdown event has happened.
- VBOX: Rename config option max_elapsed_time to job_duration. Choosing
max_elapsed_time turned out to be a bad choice in that its purpose
became intermixed with the credit issue(s).
samples/vboxwrapper/
vbox.cpp,.h
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=24894
allow specification of guest port only.
Change tag to <pf_guest_port>.
Separate getting port from registering firewall rule
svn path=/trunk/boinc/; revision=24891
Apparently when the VM is removed from the VirtualBox server process
it automatically deletes the floppy image from the media registry.
- VBOX: If a VM crashes for one reason or another, append the VM execution
log file to the stderr.txt file. I believe this is what is going on with
Richard Mitnick's computer. At the very least we should be able to give
this to the VirtualBox guys.
- VBOX: Introduce a way to re-execute commands when a session lock
event is detected. A session lock event happens when a volunteer is
tweaking something about the VM while vboxwrapper is attempting to query
state information.
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp, .h
svn path=/trunk/boinc/; revision=24887
id is appended after the name instead of after the extension. Avoid problems
with the VirtualBox interface.
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp, .h
svn path=/trunk/boinc/; revision=24880
environment and they suspend/resume the VM by the VirtualBox application.
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=24878
for virtual hard disks.
- VBOX: Execute closemedium against the virtual floppy disks when the VM is being
deleted.
samples/vboxwrapper/
vbox.cpp
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=24877
and restarted it would null out the host port information.
- VBOX: Try to make the CERN compatible datatype for FloppyIO more JSON friendly
by following the advice of issue:
https://github.com/stig/json-framework/issues/48
- VBOX: Support both the old style and new style of determining assigned threads
of execution (aka core counts). 6.12 and the early versions of 7.x support
the old style.
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp, .h
svn path=/trunk/boinc/; revision=24876
a bug that was fixed last night which prevented the wrapper from properly
reporting its checkpoint time to the CC. The lack of checkpoint information
for the job would have prevented the CC from rescheduling the job and removing
it from memory. Now it can so the extra shutdown each scheduling period
should not be needed.
samples/vboxwrapper/
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=24874
VboxSVC.exe is normally launched by svchost.exe which only contains environment
variables defined by the system. In the BOINC sandbox environment we want to
add VBOX_USER_HOME to redirect reading/writing configuration files to a
different directory. What happens if we launch it ahead of making any calls to
VBoxManage which would cause the OS to launch it? If we launch it, it should
inherit our environment block and work just like it works on Linux and the Mac.
This is such a simple solution, why didn't I think of it sooner?
samples/vboxwrapper/
vbox.cpp
svn path=/trunk/boinc/; revision=24873
rules for a VM until the VM is in a powered off state. I guess the VM will
just have to fail starting up if it cannot allocate the assigned port.
samples/vboxwrapper/
vbox.cpp
svn path=/trunk/boinc/; revision=24863
state, deregistering the VM would fail all commands because the VM was not
mutable. The first thing we should do when deregistering is discard
any saved state.
samples/vboxwrapper/
vbox.cpp
svn path=/trunk/boinc/; revision=24862
then all the deregister commands have to be optional. Go ahead and log errors
to stderr but continue to run through the various commands anyway.
samples/vboxwrapper/
vbox.cpp
svn path=/trunk/boinc/; revision=24860
vboxwrapper. Not doing so leaves the drive reference around and the VM in a
saved state. The next attempt to delete it from another instance of
vboxwrapper fails with a complaint about the old unnamed vm(all files have
been cleaned up by BOINC) being in an non-mutable state.
samples/vboxwrapper/
vbox.cpp
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=24859
are looking at the existing state of the host.
- VBOX: Reset the output buffer for every command execution.
- VBOX: Remove the teleporting and snapshotting states from the list of running
states.
- VBOX: Remove the '--type floppy' typo when mounting the floppy disk image.
samples/vboxwrapper/
vbox.cpp, .h
svn path=/trunk/boinc/; revision=24858
Some more work will be required if there is ever a need for more than
one port. But this should work for now. This should successfully
handle running multiple instances of the same job, port information is
stored in a file called "vbox_firewall.txt" which is updated for each
execution of the wrapper.
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp
win_build/
vboxwrapper.vcproj
svn path=/trunk/boinc/; revision=24843
wall clock time a VM is allowed, if exceeded shutdown gracefully and tell
BOINC that the job is finished.
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=24837