HOWTO: Extracting BIOS from VMware Fusion 3

Discussion in 'Virtualization' started by CrEOF, May 24, 2010.

  1. CrEOF

    CrEOF MDL Novice

    Sep 18, 2009
    10
    1
    0
    Since I've gotten so much help from these fourms I wanted to try and return the favor. Recently I bought a MacBook Pro (after spending 15+ years struggling with every OS MS has ever made). Unfortunatly I still have some Windows applications I use from time to time which I haven't found suitable OSX replacements for yet. So I decided to create a Win7 VM with Fusion. I did some searching on here and Google trying to find information on extracting/moding the BIOS but didn't find anything particularly helpful (besides using a hex editor). You will need to install the Xcode Developer Tools (I used v3.2.2) unless these utilities are available individually somewhere. I performed this with Fusion v3.0.2.

    First copy the vmware-vmx from /Library/Application Support/VMware Fusion/ to somewhere you can work with it.

    The tool to extract the BIOS doesn't work with Universal binaries so you'll need to extract either the 32-bit or 64-bit executable. I choose to work with the 64-bit version. if you wish to use the 32-bit replace x86_64 with i386 (the BIOS should be the same in both, though I haven't confirmed this):

    lipo vmware-vmx -thin x86_64 -output vmware_x64

    Now we can extract the BIOS from the "thin" executable:

    segedit vmware_x64 -extract __VMWARE bios440 bios440.rom

    That's it! You can open the bios440.rom file in the Phoenix BIOS Editor as described here

    I tried to replace the original BIOS with the modded one but received an error because the section required relocation. I didn't go any further since the BIOS file can be specified in the vm config file.

    To do this you will need to copy the modified BIOS into your virtual machine package (probably ~/Documents/Virtual Machines.localized/Machine.vmwarevm, where Machine is the name of the VM). Then open up the Machine.vmx file in the package and add the following line and save the file:

    bios440.filename = "bios.rom"

    You should of course replace bios.rom with the actual filename of the modified BIOS.

    Now boot up your VM and activate! :biggrin:

    You'll have to excuse me if I got some of the OSX terms wrong as I'm just learning them. If anyone has anything to comment or contribute I'd love to hear.
     
  2. CrEOF

    CrEOF MDL Novice

    Sep 18, 2009
    10
    1
    0
    I've confirmed this also works with Fusion v3.1.
     
  3. GraveR

    GraveR MDL Novice

    Jun 18, 2009
    5
    0
    0
    On Linux, you can make this the default BIOS by editing /etc/vmware/config and place the line there. This way, you don't have to edit every vmx to get things rolling. Maybe Fusion has a default config file somewhere, too.
     
  4. T160

    T160 MDL Novice

    Oct 27, 2010
    5
    0
    0
    Yes, it is possible. It is good idea to look the config file in /Library or /Applications folder. Sorry, I don't remember the exact path though.