Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am in the process of setting up a development environment for a new project and wondered about the theoretical possibility of my ideal set up.

I would like to use virtual machines in order to make my development environment portable and persistent. I do not have any problems with this, I already have a ubuntu desktop booting from vmware player on my windows 7 desktop.

Here is where it gets tricky...

Ideally I would have this image stored on an external disk drive. If I wanted work remotely I would be able to take this external drive and attach it to my macbook pro running leopard and boot the image and continue where my development stopped on my windows 7 desktop.

Is this possible? is there any software that better/worse for this kind of set up.

Has anyone done this before?

share|improve this question

migrated from Sep 12 '11 at 18:21

This question came from our site for professional and enthusiast programmers.

This is entirely possible -- just put the VM on the external drive and load it on both systems.

Note however that there's no way to make it perform all that well on both systems. Generally, you need NTFS for performant operations on Windows, as NTFS is Windows' native filesystem. Unfortunately, while Linux can use NTFS, it can only do so using ntfs-3g, which runs through FUSE and is extremely slow; particularly for the kinds of extreme random access loads generated by typical VM loads.

For best performance on Linux hosts you would need to use a Linux native filesystem, such as ext4, btrfs, or xfs.

Note also that if your development environment is Windows, and your two host machines have different processor types (e.g. Intel -> AMD or vice versa), you might run into issues there because Windows activation doesn't like switching CPU types without forcing activation. I've not tested that though; your mileage may vary.

It's probably easier to just put your development in a mercurial or subversion repository and use that to sync changes between machines.

share|improve this answer
You can always make a FAT32 partition, which just about every OS can read. – Keltari Aug 19 '13 at 4:36
@Keltari: FAT32's maximum file size is 4GB, which is too small for most virtual machine images. – Billy ONeal Aug 19 '13 at 4:38
oh thats right :P – Keltari Aug 19 '13 at 4:39

Three alternative options

Get an Amazon micro instance. They are free / very cheap and allow you to ssh in from anywhere.

Setup a VPN to your current network.

Use team viewer in one of two ways

  1. Create a VPN to your Ubuntu Box
  2. Create a screen share to your Ubuntu Box
share|improve this answer

Not only is it fine to run a VM from an external hard drive, it's highly recommended! Especially if you use an eSATA drive. But USB should be fine, too.

My one tip would be to have VirtualBox on the USB drive, too. Install it portable style and that way you can use it on any machine with no setup required. Good luck!

share|improve this answer

You must log in to answer this question.