When I first stumbled across the description of MojoPac on their website it seemed too good to be true. Here was a piece of software that promised to allow you to create a PC on any USB-enabled device (memory stick, USB hard drive, iPod, cell phone), install all of your applications and data onto that USB-housed PC, and be able to use that PC on any machine running Windows XP. And it could do all of this without having to install any software onto the “host” PC and without leaving any trace that it had ever been there. Based on that description I first assumed that MojoPac just another type of virtualization, like VMWare or VirtualPC. It’s not, and that’s what makes it unique.
In order to use virtualization software like VMWare and VirtualPC you first have to install their software on a host PC. That installation involves some pretty low-level devices, like installing additional adapters for the graphic, network, and sound subsystems. With these technologies you are literally creating the computer that the virtual machine is going to run within.
With MojoPac, on the other hand, there is nothing to set up on the host PC. No virtual adapters or drivers are installed. In fact, there is no trace on the host PC that MojoPac had ever been used on that machine. So how is this magic pulled off?
The reason MojoPac can run without leaving any trace is precisely because it’s not a virtual machine, at least not in the sense that VMWare and VirtualPC are virtual machines. A “true” virtual machine uses the virtual hardware it creates (like those virtual graphic, network, and sound adapters) to create an artificial environment in which to run. The operating system running within the virtual machine doesn’t know that the hardware it’s using doesn’t really exist, and if the OS doesn’t know, applications running inside of that OS won’t know.
MojoPac accomplishes that same result using a different method by using its own “hooks” into the host’s operating system to make its magic happen. Applications running within MojoPac make the same calls to the host PC’s OS that they always make, but MojoPac intercepts these calls and makes its own calls on behalf of those applications. The end result is similar to what happens when you run an application in a virtual machine — that is, the application doesn’t know that it wasn’t talking to the PC’s hardware directly.
Sound too good to be true? Well, it is, at least for some things. The problem with replacing an application’s OS calls with your own is that you have to be able to take into account all of the different types of calls to the OS that an application might make. VMWare and VirtualPC don’t have to worry about this. They only need to handle everything that an OS would want from the hardware which they abstract. Once this abstracted hardware can handle all of those OS calls, however, the applications running within that virtual machine should be able to do anything they want (remember, applications don’t call the hardware directly — applications call the OS, and the OS calls the hardware).
Using the technique employed by MojoPac’s developers all of the different types of calls an application might make to the OS have to be anticipated and handled. Although that seems like it would be impossible (and probably is), the first release of the MojoPac software does a remarkably good job of pulling this off. It’s certainly not perfect (there’s a fairly long list of applications which don’t work properly), but it really does work as advertised for most applications I’ve tried. The developers at MojoPac seem intent on improving their software and, judging from this first release, they obviously know what they are doing. Only time will tell if they can improve their software to handle the cases which are falling through the cracks now.
What types of problems are you apt to run into? Software that requires activation, like Office XP, for instance, thinks that it needs to be activated again when it’s run inside of MojoPac. That makes sense, since Office XP uses the hardware it’s running against to come up with the key it uses to register itself. Change too much of the hardware and Office assumes that you’ve installed it onto another PC. In the case of Office running within MojoPac the hardware in question would be the host PC’s hardware and would probably be different enough from the hardware it was activated against to require reactivation. (This is a problem that virtualization software sidesteps since the virtual hardware it creates looks the same on any host PC.) Problems like this, however, are the exception and not the rule.
One of the nicest features of MojoPac is the way that it insulates the host PC from the MojoPac PC. Looking at things from the host PC’s perspective the USB-enabled device running MojoPac looks like a removable drive, just like it would if MojoPac wasn’t installed on the device. From the Mojo-enabled desktop, however, the view is quite different. Open up Windows Explorer in the Mojo PC and you’ll notice that the “C” drive is really pointing at the MojoPac-enabled device. The CD/DVD drives on the host also get assigned drive letters but the host’s hard drives are noticeably absent. Just like the situation you’d get when running a virtual machine the Mojo desktop has no knowledge of the host PC’s hard drive. And, since it doesn’t know about the host’s hard drives, it can’t copy any files there (and, presumably, can’t infect the host). It’s nice to know that you can use a PC as a host without worrying about infecting it.
Likewise, all of the virus scanners and firewalls used by the host are still being used my the Mojo PC. This leads to some rather interesting situations, such as the Mojo PC firing up a web browser and the host’s firewall popping up a window asking if that browser should be allowed to access the internet. In cases like this a message pops up within your Mojo PC telling you that something requiring your attention has happened on the host. Just click on a button in the Mojo PC to bounce over to the host, tell the firewall to allow the browser to access the web, and bounce back into the Mojo PC.
Despite its problems MojoPac looks very promising. Imagine being able to walk up to any PC running Windows XP (and soon Vista, according to the MojoPac website) and, without installing any software, plug in your USB-enabled device and run your desktop, complete with all of your applications, documents, and data. This is definitely a piece of software to keep an eye on.