How to set up a Virtual Machine to live in the past

How to set up a Virtual Machine to live in the past

THE PROBLEM

Two years ago I was working for a company and we were using very
specific and expensive (a single license costs € 1600 per year)
proprietary software to do our work. At the time, I took the
precaution of saving most my data in two formats: (1) the proprietary
formats used exclusively by that software and (2) an open format.
However, some of the data (mainly those concerning side-projects) were
saved only in the proprietary format (big mistake!). Now I need to
reanalyze those data and I realized that there is no way for
converting that proprietary format to an open format that I can
analyze with a free application. Furthermore, I am working for a
different company now, and in this new company we do not use the
required software. Of course, I cannot afford paying € 1600 just for
converting some files and I cannot ask somebody else to do it because
the task would take too long and it is kind of complicated if one is
not familiar with the data set.

I was in complete desperation when a friend gave me the idea of using
an expired license just to do the conversion. Happily, my
ex-colleagues have sent me a demo license valid for December 2008.

THE OBJECTIVE

I need to use the expired demo license to convert some of my data from
a proprietary to an open format. I do not intent to use the software
for doing anything else and I will keep it installed just during the
time strictly required to complete those operations. The lesson to be
learn here is: do not make the same mistake that I did. Stick to open
formats (ideally also to open software), or at least to formats that
you can latter convert or open with free software. Standards such as
ISO, are also very, very important.

If you have already made that mistake and you are in desperation, the
solution that I found may also be useful for you. There might be
easier solutions, depending on the specific software you need to use.
For legal reasons, you should not do this unless strictly required. In
addition, the proposed solution worked for me, but I am not
responsible for any problem you may have by following these
instructions.

THE INGREDIENTS

For accomplishing this task I used:

1) A computer with Ubuntu Linux installed (the computer must be
powerful enough to run a Windows XP virtual machine).
2) A Windows installation CD (my laptop came with Windows XP
preinstalled, I removed it immediately to install Linux, now, for the
first time in a year, Windows will be useful for something).
3) An out-of-date installation CD of the proprietary software that I need.
4) A date-dependent license for the aforementioned software.
5) Virtualization software. In this case I used VirtualBox.

THE IDEA

The idea is to set up the virtual machine in a way to let it ‘think’
it is 1st of December 2008.

THE METHOD

I am not sure that all of the steps described here are strictly
required. I tried several options and, as they failed, I decided to
take all kinds of precautions.

1) Install VirtualBox in Ubuntu. You have two options: either
installing the Open Source Edition (OSE) directly via Synaptic (make
sure the required repositories are activated), or installing the
closed-source edition by following the instructions in the
VirtualBox website.

2) Install the package libdate-manip-perl which contains the perl
routine Date::Manip, used for date/time manipulation.

3) Copy and paste the following perl script in a text editor and save
it somewhere (PATHTOTHESCRIPT) with some name:

—————————————————————————————————#!/usr/bin/perl -w
use strict;
use Date::Manip;my $start = join(‘ ‘, @ARGV);
my $sdate = ParseDate($start);
my $edate = ParseDate(“now”);
my $sepoch = UnixDate($sdate, “%s”);
my $eepoch = UnixDate($edate, “%s”);
my $msec = -1000 * ($eepoch – $sepoch);

print “Something like:\nVBoxManage modifyvm WXP -biossystemtimeoffset $msec\n”;

exec “VBoxManage modifyvm WXP -biossystemtimeoffset $msec”

————————————————————————————————————————–

NOTE: WordPress changes the quotations marks to non-standard characters. When you paste the script to a text editor, replace the quotation marks (both double and single) with the corresponding standard characters.

I called this script “vboxbiosdate.perl”. This script was slightly
adapted from a comment left by the user “Higg’s bosun” in this forum:

http://forums.virtualbox.org/viewtopic.php?p=1377

4) Copy and paste the following bash script and save it somewhere
(PATHTOTHESCRIPT) with some name:

————————————————————————————————————————

#!/bin/bash

/usr/bin/perl /PATHTOTHESCRIPT/vboxbiosdate.perl 8:00 PM 1 december 2008 && /usr/bin/VirtualBox &

———————————————————————————————————————–

I called this script  “vboxbiosdate.sh”

5) You have to modify this scripts to adapt them to your particular
setup. Namely:

(i) replace “PATHTOTHESCRIPT” with the full path of the folders where
you saved both scripts.
(ii) replace “WXP” with the name you gave or you are going to give to
the Virtual Machine.
(iii) replace “8:00 PM 1 december 2008” with the time and date you
need (same format).
(iv) in case you called the scripts something different, check for consistency).

6) Open VirtualBox and create a Virtual Machine. In my case I created
a Windows XP virtual machine called “wxp” and I gave it 512 M of RAM
and 64 M of video memory. Close VirtualBox.

7) From now on, each time you will open VirtualBox to use the Virtual
Machine “wxp” (or whatever you called it), you will use the command:

/bin/bash /PATHTOTHESCRIPT/vboxbiosdate.sh

This will automatically set the right date in the virtual BIOS. Of
course, you can create an alias in your .bashrc file or make a desktop
or gnome-panel shortcut.

8 ) Open VirtualBox with the avobe command and install Windows XP (you
have to mount the installtion CD or image and run the virtual
machine). During the installation process, you will see that the date
by default is sometime in the past because the operating system is
reading the fake date from the virtual BIOS.

9) Once the OS is installed (or during the installation process):

(i) Make sure Automatic Updates is turned off.
(ii) Make sure the system clock is not synchronized with an NTP server
(right-click on the clock, click “adjust date and time”, open the
third tab and deactivate internet synchronization).
(iii) Switch off the internet connection (this may or may not be
required, depending on the license manager).

10) This is optional (but interesting if you are going to switch off
the internet in your VM): Install VirtualBox Guest Additions, reboot
and go to (11).

11) This is optional (but interesting if you are going to switch off
the internet in your VM). Create a shared folder in your host machine
(in your VM menu go to “Devices -> Shared Folders” and choose a folder
to share in the host machine. Then in Windows run the following
command:

net use x: \\vboxsvr\sharename

replacing “sharename” with the name of the folder you have chosen.

Anything you put in that folder in the host machine will be accessible
from the guest and vice-versa.

12) Install the program you need to use and the old license (if required).

13) Next time you want to reopen VirtualBox, first modify
the bash script and change the time to some minutes after the
installation of the program, say, one hour later or so, to make sure
that no installation files are more recent than the computer time.