scgtrp's blog

VBox Guest Additions: A slightly late final progress report

Blog post by scgtrp on Mon, 2011-09-05 18:33

As everyone has probably gathered from the first sentence of most of the other posts, GSoC 2011 is now over. I accomplished some of the goals I had for the last quarter, but was unable to get GCC2 support to work. The compiler is different enough to not work with the same options, and even after adding a GCC2 tool definition to kBuild I found that it was too old to compile some of the VirtualBox code. Various workarounds I tried for this proved unhelpful, so the additions will currently only compile and run on a GCC4 or GCC4 hybrid Haiku.

On a more positive note, there is now an (unaccelerated) video driver for VirtualBox which supports screen resizing. 2D acceleration would be possible, but would require changes to app_server (reporting changed areas of the screen to accelerants) that would not have fit in my timeline. I do plan to implement this eventually.

Also, a few people requested the ability to remove VBoxTray from the right-click menu on the replicant, so this is now possible.

While I do plan to continue working with Haiku, I currently am taking a break due to classes having just started.

VBox guest additions: 3/4 term report

Blog post by scgtrp on Thu, 2011-08-04 04:12

New status report:
major feature dropped; bugs fixed;
did some screen research.

At the start of the third term, it was pointed out to me that Haiku does not actually support hardware 3D acceleration, and to add it would be a larger project than I have the time (or knowledge) for. Therefore, I've had to drop host-accelerated OpenGL from the planned features. I'm somewhat annoyed by this, but looking back it was probably a bit too ambitious anyway, and I'm not convinced I could have finished it in time.

As a result of this quite large decrease in scope, I decided to mentally revise the timeline and spend most of my coding time in the third quarter fixing some of the annoying bugs that had been following me around for a while:

  • Icons can now be dragged around without having to disable MPI first.
  • VBoxService no longer implodes on exit.
  • vboxsf no longer refuses to load on hosts that are running VBox 3 (but symlinks will not work properly as VBox 3 didn't support them).

I've also added guest control support for executing programs - see $(VBoxManage help guestcontrol) for usage instructions. Note that you'll have to set a password on your Haiku user account to use this if you haven't already, as VBox's guest control requires authentication.

This leaves screen resizing, which will be my primary focus in these last few weeks, followed by a bit of cleanup and finally sending a patch off to the VBox people.

VBox Guest Additions: midterm status report

Blog post by scgtrp on Fri, 2011-07-15 11:30

Shares fully working!
Slightly slow, but usable.
Clipboardy stuff too.

I've now fixed most of the bugs in the guest additions, to the point that what's done so far is mostly usable - the only major bugs remaining are some random crashes in VBoxService that I've not been able to reproduce, and an inability to drag icons when mouse pointer integration is enabled. (Thanks to kallisti5 for finding both of these.) I also have replaced VBoxApp (which currently handles clipboard sharing) with VBoxTray, a replicant which serves the same purpose but can be autoloaded by Deskbar.

At my mentor's request, I've also added some installation instructions to the repository, as the build/install process is currently a bit complex. I intend to rewrite those instructions in the form of a makefile in the near future; this wasn't really a priority before because there wasn't much there for people to build.

The big task for this next part, though, is the video driver. This will include both OpenGL support and automatic screen resizing. The emulated video card is based on a 3dfx card, so I will hopefully be able to use large parts of the existing 3dfx accelerant, but I've still left myself a lot of time for this as these things are always a bit more complex than I predict. I plan to spend any leftover time on getting things to run a bit faster if possible.

VBox guest additions: status; second quarter goals

Blog post by scgtrp on Fri, 2011-06-17 01:49

During the first few weeks of GSoC, I've gotten vboxsf, the shared folders module, mostly working, though I'm a bit behind where I'd like to be due to unexpected things repeatedly coming up both in physical-land and on my development setup. All supported functionality is working when accessed from the terminal - at this point I'm just optimizing and working on a bug where looking at a shared folder the wrong way in Tracker causes the kernel to panic. Mouse pointer integration, the other thing I had in my schedule for the first quarter, is now working; therefore finishing up the last few bits of vboxsf will be one of my main goals in the next few weeks.

The other goal I have now is time synchronization. It turns out this is more important than I thought - I didn't take into account how many things depend on timestamps being set to reasonable values, and my Haiku installation is at this point very confused as to what the current date and time are.

Several new features, including symlink support, were added in VBox 4, which I was completely unaware of until recently despite it having been released several months ago. I have now upgraded my laptop's copy of VBox so the Haiku port of the guest additions will be able to use these new features.

VBox guest additions: end of bonding period; first quarter goals

Blog post by scgtrp on Wed, 2011-05-25 10:25

During the community bonding period I played around with the existing guest additions patch, getting it to build and switching my repository over to git to preserve my sanity. I've learned a lot about the way Haiku drivers and modules work, especially in the last few days, and it seems that a few things are simpler than I originally thought they'd be and some things are more difficult.

As an example of the latter, it turns out that drivers can't provide APIs to other drivers; only modules can do this. This posed a problem for the shared folders module, which needs to either be in a separate module or contain extreme hackiness. As a driver, the original vboxguest couldn't allow vboxsf to use its API. To solve this, mmu_man and I decided that the best first task would be to break up the existing vboxguest driver into a module (vboxguest) containing the guest additions and a driver (vboxdev) which exposes the library to userspace as /dev/misc/vboxguest. This is now finished.

It turns out guest properties and clipboard sharing are already working, and mouse pointer integration is at least partially implemented, though I've not managed to get it to work yet. This should free up a bit of time for some of the other things.

As my first major subproject, I'm planning to implement a shared folders filesystem module - as I (and possibly a couple of other students?) are coding exclusively in VirtualBox, it makes sense to focus on the things that make development easier first, and being able to share files with the host is certainly useful at times.

GSoC Introduction: VirtualBox Guest Additions

Blog post by scgtrp on Fri, 2011-04-29 11:45

Hello. I'm Mike and I'll be porting part of the VirtualBox guest additions to Haiku. My full proposal is here, but briefly, the features I plan to port include:

  • Mouse pointer integration
  • Shared folders
  • Shared clipboard
  • Time synchronization
  • An improved video driver
  • Guest control (executing commands on the guest from the host)
  • Guest properties

During the community bonding period I plan to spend a bit of time reading more code and discussing with the developers to learn more about how things work in both Haiku and VirtualBox. I also plan to play with mmu_man's patch to get it to work with the latest versions of VirtualBox and Haiku so that I have a working base to start from when the coding period starts.

Syndicate content