Asus recovery disk and VirtualBox

A VirtualBox tale with an unhappy ending

A failed attempt to have the Asus laptop recovery disk install Windows-Vista into a virtual machine.

Content revision history:
Article first written, 8th September 2009.

Background information

The tall red error letters
So as not to arouse false hopes, let me be clear from the start ... this story ends badly.

An Asus F5GL series laptop had OpenSuSE 11.1 installed. All of the priginal partitions had been previously destroyed and none of the previous disk contents had been retained. The laptop did, however, have a 'recovery' DVD that was supposedly able to restore the system to its just-sold state. The recovery disk contained a version of Windows Vista Home Premium edition.

The OSE edition of the VirtualBox emulation software was installed. (HowTo install VirtualBox OSE on an OpenSuSE host)

Virtualizing the recovery disk

An ISO file for the recovery DVD was created using the readcd command.

readcd dev=/dev/dvd f=Asus_F5GL_recovery.iso

Within the VirtualBox environment a new virtual machine was created, called AsusVista01. A new virtual disk of 10 GB A virtual disk of 10GB was also created and assigned to the virtual machine (VM). For an optical disk, the VM was told to mount the ISO file created earlier.

The dmidecode command was used (with root priviledges) to extract various bits of information from the laptop's internal settings.

The command 'dmidecode -t0' command yielded the following response:

# dmidecode 2.9
SMBIOS 2.5 present.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
        Vendor: American Megatrends Inc.
        Version: 207
        Release Date: 09/08/2008
        Address: 0xF0000
        Runtime Size: 64 kB
        ROM Size: 1024 kB
        Characteristics:
                ISA is supported
                PCI is supported
                PNP is supported
                BIOS is upgradeable
                BIOS shadowing is allowed
                ESCD support is available
                Boot from CD is supported
                Selectable boot is supported
                EDD is supported
                5.25"/1.2 MB floppy services are supported (int 13h)
                3.5"/720 KB floppy services are supported (int 13h)
                3.5"/2.88 MB floppy services are supported (int 13h)
                Print screen service is supported (int 5h)
                8042 keyboard services are supported (int 9h)
                Printer services are supported (int 17h)
                CGA/mono video services are supported (int 10h)
                ACPI is supported
                USB legacy is supported
                Smart battery is supported
                BIOS boot specification is supported
                Targeted content distribution is supported
        BIOS Revision: 15.64
        Firmware Revision: 152.152

The 'demidecode -t1' command yielded the following (the '#' characters represent other letters or numerals):

# dmidecode 2.9
SMBIOS 2.5 present.

Handle 0x0001, DMI type 1, 27 bytes
System Information
        Manufacturer: ASUSTeK Computer Inc.
        Product Name: F5GL
        Version: 1.0
        Serial Number: ##############
        UUID: ########-####-####-####-###########
        Wake-up Type: Power Switch
        SKU Number: To Be Filled By O.E.M.
        Family: To Be Filled By O.E.M.

A script file was created to reprogram certain BIOS parameters for the virtual machine. This is listed below:

#!/bin/sh

#  Create a variable that contains the name of the
#  VirtualMachine, as it was specified within the
#  VirtualBox software.
VMNAME="AsusVista01"

#  Create a variable that contains the basic command
#  that we need to perform to update the values. We 
#  create a variable for the command because we will
#  be using a series of almost identical commands and
#  it is convenient to put the common parts into a 
#  variable so that if we need to change the commands
#  later, we need only to change this one variable.
VBMCMD="VBoxManage setextradata $VMNAME "

#  Perform a sequence of commands. Each command will
#  set a single parameter for the VirtualMachine

#echo BIOS Vendor
# $VBMCMD  'VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVendor'        'American Megatrends Inc.'
#  For reasons unknown it appears to be impossible to 
#  put spaces into the value text. If spaces are present
#  the VBoxManage command complains about excess parameters.
#  So the following command is used as a fudge until we have
#  a better solution.
$VBMCMD  'VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVendor'        'American'

#echo BIOS version
$VBMCMD  'VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVersion'       'string:207'

echo BIOS release date
$VBMCMD  'VBoxInternal/Devices/pcbios/0/Config/DmiBIOSReleaseDate'   'string:09/08/2008'

#echo BIOS release major
$VBMCMD  'VBoxInternal/Devices/pcbios/0/Config/DmiBIOSReleaseMajor'  '15'

#echo BIOS release minor
$VBMCMD  'VBoxInternal/Devices/pcbios/0/Config/DmiBIOSReleaseMinor'  '64'

#echo BIOS firmware major
$VBMCMD  'VBoxInternal/Devices/pcbios/0/Config/DmiBIOSFirmwareMajor' '152'

#echo BIOS firmware minor
$VBMCMD  'VBoxInternal/Devices/pcbios/0/Config/DmiBIOSFirmwareMinor' '152'

echo System vendor
#$VBMCMD  'VBoxInternal/Devices/pcbios/0/Config/DmiSystemVendor'      "string:ASUSTeK Computer Inc."
#  For reasons unknown it appears to be impossible to 
#  put spaces into the value text. If spaces are present
#  the VBoxManage command complains about excess parameters.
#  So the following command is used as a fudge until we have
#  a better solution.
$VBMCMD  'VBoxInternal/Devices/pcbios/0/Config/DmiSystemVendor'      'ASUSTeK'

#echo System product
$VBMCMD  'VBoxInternal/Devices/pcbios/0/Config/DmiSystemProduct'     'F5GL'

#echo System version
$VBMCMD  'VBoxInternal/Devices/pcbios/0/Config/DmiSystemVersion'     '1.0'

$VBMCMD  'VBoxInternal/Devices/pcbios/0/Config/DmiSystemSerial'      '##############'
$VBMCMD  'VBoxInternal/Devices/pcbios/0/Config/DmiSystemUuid'        '########-####-####-####-#############'
#$VBMCMD  'VBoxInternal/Devices/pcbios/0/Config/DmiSystemFamily'      'To Be Filled By O.E.M.'
Asus only message.
Choose target disk.
backup reminder
Are you sure?
Do not disturb!
The tall red error letters

This script file was executed without error.

The virtual machine was then started and it proceeded to boot the DVD ISO image. A sequence of dialog boxes was presented asking the user to confirm that the system was to be recovered and asking which disks or partitions should be used.

After the final confirmation was given the recovery process began but within a few moments it halted with the 'error' screen shown at the top of the page. The text at the top of that error screen reads: 'Cannot load imagex 0 from src WIM file.'

Observations

Error message: The current system was not an ASUS model.
The error message shown if the 'DmiSystemVendor' parameter was not set to 'AsusTek'
Advanced boot options screen
The advanced boot options screen
Driver loading screen
Loading drivers with a screen update speed that even a Sinclair ZX81 (a famous home computer sold in 1981) would be embarrassed by.

If the value for 'VBoxInternal/Devices/pcbios/0/Config/DmiSystemVendor' was not set then the recovery process would halt almost immediately with a complaint that 'the current system was not an ASUS model.'

Only the 'VBoxInternal/Devices/pcbios/0/Config/DmiSystemVendor' parameter seemed to be necessary for the recovery process to begin. When a clean virtual machine was created and all the other parameters were left untouched, then the recovery process proceeded to the point of failure just as it had when they were all set.

By pressing the F8 key during the initial 'Windows is loading files ...' screen it was possible to boot Vista into its 'safe' mode. The driver-loading part of the boot processs while in 'safe' mode was extremely slow. So slow, in fact, that it was possible to watch individual characters being placed on the screen and had I held a screen-update-speed contest between this virtual machine and a real ZX81, the ZX81 would easily have won.

Related links

Navigation: (site map) learn linux home pagetechnical articles