[vbox-dev] VirtualBox customized frontend support
klaus.espenlaub at oracle.com
Tue May 20 13:17:03 UTC 2014
On 20.05.2014 07:23, Karoline Haus wrote:
> I’ve developed a custom VBox graphics frontend, replacing VBoxSDL or
> VBoxHeadless. It’s working well when I call it from the command line
> using “VBoxMyFrontend –startvm VM” and so on. I have built the frontend
> my modifying the VBox source code which I downloaded from the official
> website. Here I have added another frontend under src/VBox/Frontends
> where I now have a folder VBoxMyFrontend. The compilation works fine and
> as I said I can start the frontend as well.
Sounds good so far, everything as expected.
> Now what does not work is to start the VM using VBoxManage when I try to
> set the default frontend of that VM to my own one. Like this:
> # VBoxManage modifyvm Test2 --defaultfrontend MyFrontend
> # VBoxManage startvm Test2
> VBoxManage: error: Invalid frontend name: 'MyFrontend'
> VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057),
> component Machine, interface IMachine, callee nsISupports
> VBoxManage: error: Context: "LaunchVMProcess(a->session,
> sessionType.raw(), env.raw(), progress.asOutParam())" at line 592 of
> file VBoxManageMisc.cpp
Again this is expected behavior... the "defaultfrontend" setting isn't
sanity checked immediately, but it is matched against a list of known
frontends which today can't be extended:
"gui", "GUI/Qt": start VirtualBox
"sdl", "GUI/SDL": start VBoxSDL
"headless", "capture", "vrdp": start VBoxHeadless
If you search for those strings in MachineImpl.cpp you'll find the code
which triggers the launching of a VM process.
Note that this code deliberately doesn't allow starting random
executables - who knows, someone might manage to construct a security
issue out of it. Even starting random executables from the VirtualBox
subdirectory can be used to cause trouble.
That said - if you have a good idea how to make it more flexible without
completely ignoring the potentially dangerous start of random things,
let us know. We're interested, for exactly the reason you need it: to
allow people to implement their own frontends.
> How can I make this work, and register my frontend with VBoxManage? Is
> this possible at all, or would I have to change the VBox API bindings
No support for this yet, as described...
> Any help would be greatly appreciated.
More information about the vbox-dev