[vbox-dev] Haiku operating system guest additions.

Phil Jordan lists at philjordan.eu
Wed Sep 7 04:10:12 PDT 2011


On Tue, Sep 6, 2011 at 7:09 PM, Alexander von Gluck
<kallisti5 at unixzen.com> wrote:
> After a summer of hard work, our Google summer of code student completed his
> work on the VirtualBox guest additions for Haiku.
> [...]
> We feel the code should be up to the VirtualBox standards.  Please let me
> know if anyone has any questions
> or if I need to complete any tasks.

This is really great work and it's good to hear that porting the guest
additions has been done without too much trouble by someone other than
core VBox developers. I feel I might just be able to do something
similar for improving the situation with Mac OS X guests.

I've already developed a Mac OS X driver for the paravirtualised
network adapter (virtio-net) which can be found here
https://github.com/pmj/virtio-net-osx [1] But after digging through
some of the VirtualBox source code to figure out how the other devices
work, I ended up being a bit overwhelmed. My understanding is that
there are a few layers on the guest side:
 - there's a virtual PCI device which seems to indicate the presence
of a VBox host ("VBoxGuest")
 - "HGCM" seems to be some kind of low-level Host-Guest communication layer
 - VBoxGuestLib seems to be a kernel-mode library for the various
different services that sits on top of HGCM and/or the PCI device (?)
 - OS-Specific glue to connect the services with the OS APIs (vfs, etc.).

I haven't been able to find any documentation to confirm this guess,
or for maybe giving a rough overview of how these systems work and
what needs to be done for porting to a new OS. Does such documentation
exist? And if not, would anyone who's done such a port (such as the
Haiku one) be willing to write a quick overview?


[1] It works well (faster than the emulated Intel gigabit device), but
I'm having some stability issues that take down the host under high
load when TCP segmentation offloading is enabled, so you might want to
disable offloading in the info.plist - set PJVirtioNetAllowOffloading
to 'NO' in the VirtioNet IOKitPersonality.

More information about the vbox-dev mailing list