Advertisements

Boot via EFI firmware

As you might or might not know, you can change your VMs nowadays to boot via EFI instead of the Plain Old BIOS.

This is great as you can now experiment with EFI without messing up your physical environment or having to reboot on metal.

There’s ongoing work on VMware Fusion and Workstation to improve UEFI support. In VMware Workstation 10, this was unsupported, but it worked.

Workstation 11 now has a option for this under VM Settings -> Options -> Advanced -> Boot with EFI instead of BIOS. With Fusion 7 you either have to edit the config file by hand or change it to another guest OS that uses EFI.

For example an OS X VM on Fusion uses efi by default.However we are going to do this the hard way. Manually so that you get a better grip on the details, not because it is the recommended way (it isn’t).

Create a new VM, base it on Debian 7.x and close it. Do not start it yet. Now go into the .vmx file with a plain text editor (I like nano) and add the line:

firmware = “efi”

Please type that line by hand and do not copy & paste to avoid fancy non default quotes characters in your .vmx files. If you boot again you should see a different boot screen as normal.

If your guest OS supports booting via EFI then you can boot the OS that way, if you didn’t do anything you now get this screen:

BootingEFI

If you are patient and wait long enough you finally get this popup:

NoOSfound

 

 

 

 

 

Which is followed up by the EFI boot manager that is built into VMware Fusion (or Workstation)

EFIBootmanager

 

If you select the “EFI internal Shell” from that menu you actually get to boot into the EFI shell that is built into VMware Fusion.

If you want under Fusion to boot straight into the EFI shell then you have to change another value in the vmx file as this was removed from Fusion to avoid confusion by end users.

Add the following line:

   efi.shell.activeByDefault = “TRUE”

You can use other UEFI shell environments as just the one that it built into your VMware product by setting it up yourself. Below are the steps to create a USB stick that boots straight into the EFI shell (very useful for firmware updates that are to be done via EFI for example)

Steps to create a USB stick that boots into an EFI shell

  • Download the full workspace from the EDKII project (see resources below)
  • unzip it
  • locate the folder EdkShellbinPkg, subfolder X64, file Shell_Full.efi
  • Copy file Shell_Full.efi to a USB stick formatted with FAT, in a folder named EFI subfolder BOOT and rename the file “Shell_full.efi” to “bootx64.efi”. Your drive looks like:efiboot-setupCongratulations you now have a bootable EFI USB stick.
  • Type “help” and press enter for explanation on the commands. Note that you can also scroll up and down throught the screen.

Copy this to a ISO image and you now have a bootable CD with efi shell.

In order to save you that step I am making the iso I created for the 64 bits version available for download:

testEFI,iso.zip

testEFI.md5 (MD5SUM: 0591425e0313cf112f45b29962d7cdc9 testEfi.iso)

 

Resources

http://www.uefi.org/specifications

You can get a EFI shell via the shell efi from Phoenix SecureCore Tiano and it is found on sourceforge in the EDKII project here: http://sourceforge.net/projects/edk2/files/

VMTN: Some EFI Questions

VMTN: [WS10] USB Bootable stick

 

Advertisements
%d bloggers like this: