[vbox-dev] VirtualBox customized frontend support

Klaus Espenlaub klaus.espenlaub at oracle.com
Tue May 20 13:17:03 UTC 2014


On 20.05.2014 07:23, Karoline Haus wrote:
> Hi,
> 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
> somewhere?

No support for this yet, as described...

> Any help would be greatly appreciated.
> Thanks!

More information about the vbox-dev mailing list