In summer last year I was experimenting with what I call “Geospatial Operating Environment” – a client based virtual appliance for geospatialy related operations that would give to user immediate (instant) tools and applications. Well, there is already approach to have USB drive and put there portable applications that can be run directly from USB drive without any need of installation. This approach is fine but definitely not error-prone since ‘the virtualization’ level is just on top of operating system and more dependent on a host OS state and health. Running any executable from USB can potentially crash whole OS. Another approach is to virtualize applications using ThinApps or App-V but again the level of separation of OS from applications is not always guaranteed (I mean look on a way how you define virtualized applications – you need to sequence them (or ‘capture them’) where differences between initial state of OS and state of the OS after installation of apps represent the ‘properly installed and configured application’ that can be virtualized). Is this a right way ? why the industry is not looking more for jeOS and virtual appliances ? May be virtualized applications will give us more robust application sandbox that will less crash OS and less side-interact with other applications. Well may be the whole point is to always assemble OS+Apps where producer has always under control fresh new OS plus set of apps on top of that (Actually both CITRIX and VMWare are promoting this dynamic approach). Simply said, I do not trust so far to virtualized applications. OS is still pretty complex piece that you can make better, reliable but not as stable as hardware operations today.Virtual Appliances rely on thin layer of hypervisor and hw while virtualized applications have much more large stack of software underneath.
Back to my topic… so I have done experimental client-side virtual appliance with lot of installed open source and free applications. One of them GoogleEarth was performing very slowly in virtualized environment due to the fact that virtualized environmend can’t so far utilize special hardware (a typical problem of virtual machines or common denominator). But why not to run same appliance either virtualized or on physical hardware ? with VMWare it is possible with physical disk – once appliance is installed, you can either boot it directly from hard drive (or USB) or if you want to run it virtualized in some host environment, then this is possible too:
vmdk file then look very simple and access in fact regural disk image of the ‘virtual appliance’ – this is not any more virtual appliance but somehow ‘semi-virtualized’ appliance :
# Disk DescriptorFile version=1 CID=2ccad3f7 parentCID=ffffffff createType="fullDevice" # Extent description RW 625137345 FLAT "\\.\PhysicalDrive1" 0 # The Disk Data Base #DDB ddb.toolsVersion = "0" ddb.adapterType = "lsilogic" ddb.virtualHWVersion = "4" ddb.geometry.cylinders = "38913" ddb.geometry.heads = "255" ddb.geometry.sectors = "63" ddb.geometry.biosCylinders = "38913" ddb.geometry.biosHeads = "255" ddb.geometry.biosSectors = "63"