Bill Lovett

VMWare Player Plus Subversion? Probably Not

Posted on January 9th, 2006

The other day I was reading the paper Reincarnating PCs with Portable SoulPads, which describes the use of a virtual machine disk image run from a portable USB drive in order to give the user "the ability to walk up to any computer, personalize it, and use it as one's own."

In summary, we decouple the user's machine into a body (display, CPU, RAM, I/O) and a soul (session state, software, data, preferences). The soul is carried in a small and light portable device, the SoulPad. The soul can reincarnate on any one of a large class of x86-based personal computers with no preloaded software, and effectively convert that computer into the user's computer. The computers on which the SoulPad can reincarnate itself on are denoted as EnviroPCs. We presently rely on USB 2.0 connections between the SoulPad and the EnviroPC. The EnviroPC's CPU, memory and I/O devices are used to run the software on the SoulPad.

I like it, and I want one. But I'm not so concerned with being able to approach any computer and expecting to bring my preferred environment with me. I have only need to cover two locations: work and home. And I wondered if I couldn't come up with some sort of arrangement that used VMWare Player, was small enough to fit on a CD, and could be easily packed up and pocketed at the end of the day.

A bit of reading around (here and here especially) got me thinking about bringing a version control system like Subversion into the picture. You'd take a VMWare image, restrict it to the size of a CD, install an operating system on it, then bring the image into Subversion in order to tracks its changes over time. In other words, achieving portability through version control.

The host computer would only have one requirement: prior installation of VMWare player. But on the up side, the host could be Windows-based or Linux based.

An advantage over Knoppix would be the opportunity for easy customization and the ability to step beyond Linux into BSD realms. You'd also retain the luxury of being able to switch back and forth between the guest and host operating systems-- a best of both worlds approach.

The fatal flaw in this master plan turns out to be the slowness of it all. One major speed bump is the Subversion interaction. It took about 12 minutes for me to do the initial import, and this was with the repository on the same machine. Later on, when I made a trivial change and attempted to check it back in, the commit took over 10 minutes.

Disk space was a second problem. Rather than going with any of the "micro" Linux distributions, I opted for NetBSD as the guest OS. I put the pkgsrc tree on a separate disk, figuring I didn't want that under version control anyway and could leave that directory behind when I was out and about. But when all was said and done I only had about 150M of free space left over. That's tight.

So it's not so much that this set up wouldn't work-- you can indeed put a reasonably sized disk image under subversion-- it's just not terribly enjoyable to use. Too big a disk, and your checkins and checkouts will take forever. Too small, and you won't have much breathing room.

Damn Small Linux or Puppy Linux would probably be better options here, seeing how they're in the 50-60M range and all. I may try one of them next. In spite of the wild inefficiencies of this experiment, I think it is possible to put together a portable operating system if you're smart about it. Concessions need to be made, but in some cases they might be feasible ones provided you you're willing to stretch your notions of version control a bit beyond their normal shape. Normal subversion use suggests you commit whenever you make a change. A disk image probably shouldn't get committed unless a major configuration change has occurred. Along those lines, a disk image will change ever time it's used, even if all you've done is turned the thing on and started at it for a few minutes. And a normal Subversion commit is a relatively prompt operation in most cases. Disk image commits are the stuff that extended coffee breaks are made of.

For now I don't think VMWare disk images go along very well with the idea of portability unless you bring some extra hardware to the party. Maybe a rewritable DVD would do the trick. But if my experiment represents the low end of the scale with respect to hardware, media size, and network speed, the concessions you want to avoid making by going with a "full" distribution are converted into performance concessions that in most cases aren't worth it-- at least not yet.

Back to the index of all blog entries