Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
appnotes:gpxeonvmware [2010/04/12 17:08]
rulerof created. First version
appnotes:gpxeonvmware [2010/06/04 01:46] (current)
bradskins
Line 3: Line 3:
     * This guide covers VMWare virtual machines and should be nearly identical for all VMware hypervisor prodcuts. ​ [[wp>​VMware_Workstation|VMWare Workstation]] is covered specifically by this guide, but you can adapt it easily for VMWare Server or ESX.     * This guide covers VMWare virtual machines and should be nearly identical for all VMware hypervisor prodcuts. ​ [[wp>​VMware_Workstation|VMWare Workstation]] is covered specifically by this guide, but you can adapt it easily for VMWare Server or ESX.
     * The capability to add a gPXE ROM directly to a VM is not limited to VMWare. ​ You can find out more on the [[romburning/​|ROM burning HowTo]], or jump straight to the guide for [[romburning/​vbox|Sun Virtualbox]] or [[romburning/​qemu|QEMU]].     * The capability to add a gPXE ROM directly to a VM is not limited to VMWare. ​ You can find out more on the [[romburning/​|ROM burning HowTo]], or jump straight to the guide for [[romburning/​vbox|Sun Virtualbox]] or [[romburning/​qemu|QEMU]].
- 
   
  
Line 12: Line 11:
 Not only is using a ROM one of the fastest methods of loading and booting from gPXE on //either// a physical or virtual machine, adding a ROM in this fashion __adds gPXE directly to your VM's BIOS boot order__, and when compared to the [[pxechaining/​|PXE chainloading]],​ [[removable/​|CD,​ floppy, or USB based]] methods it is quite possibly the most secure and concise deployment method available right now. Not only is using a ROM one of the fastest methods of loading and booting from gPXE on //either// a physical or virtual machine, adding a ROM in this fashion __adds gPXE directly to your VM's BIOS boot order__, and when compared to the [[pxechaining/​|PXE chainloading]],​ [[removable/​|CD,​ floppy, or USB based]] methods it is quite possibly the most secure and concise deployment method available right now.
  
-{{ :​appnotes:​vmware-gpxe-bootmenu.jpg |gPXE as a boot option in VMware Workstation}}+{{ :​appnotes:​vmware-gpxe-bios.jpg |gPXE as a boot option in VMware Workstation}}
  
 ===== Implementation ===== ===== Implementation =====
Line 24: Line 23:
  * **First**, we need to acquire the ROM image we're going to use when we modify the VM configuration,​ which we can do one of two ways:\\  * **First**, we need to acquire the ROM image we're going to use when we modify the VM configuration,​ which we can do one of two ways:\\
  
-==== Option 1 (Easier): Use a pre-built binary from ROM-o-Matic ====+ 
 +==== Option 1 (Easier): Use a pre-built binary from ROM-o-Matic ====
 ------- -------
 {{ :​appnotes:​rom-o-matic-options.jpg?​250|A screenshot of the data you'd fill out in ROM-o-Matic}}  {{ :​appnotes:​rom-o-matic-options.jpg?​250|A screenshot of the data you'd fill out in ROM-o-Matic}}
Line 31: Line 31:
  * On the image creation page, set the options to:  * On the image creation page, set the options to:
  - Output format: **ROM binary (flashable) image (.rom)**  - Output format: **ROM binary (flashable) image (.rom)**
- - NIC type: **e1000_84250**+ - NIC type: **e1000_82540**
  - PCI Vendor Code: **8086**  - PCI Vendor Code: **8086**
  - PCI Device Code: **100f**  - PCI Device Code: **100f**
  * After you've entered all of the relavant information,​ click the "Get Image" button and you should receive a .rom file named after the combination of the latest gPXE release and the VENdor+DEVice combination entered above. ​ At the time of writing, the latest gPXE version is **1.0.0+**, and the DEV+VEN is **8086100f**. ​ As such, the file I received is:  * After you've entered all of the relavant information,​ click the "Get Image" button and you should receive a .rom file named after the combination of the latest gPXE release and the VENdor+DEVice combination entered above. ​ At the time of writing, the latest gPXE version is **1.0.0+**, and the DEV+VEN is **8086100f**. ​ As such, the file I received is:
-<​code>​gpxe-1.0.0+-8086100f.rom</​code> ​\\ +<​code>​gpxe-1.0.0+-8086100f.rom</​code>​ 
- + * Now, let's skip to [[#​locating_the_vm_s_.vmx_configuration_file|locating your VM's configuration file.]] \\ \\ 
- * Now, let's skip to [[#​locating_the_vm_s_.vmx_configuration_file|locating your VM's configuration file.]] \\ +==== Option 2 (Advanced): Compile the binary ROM from source ====
- +
----------- +
- +
-==== Option 2 (Advanced): Compile the binary ROM from source ====+
 ---------- ----------
 Building from source is obviously more complicated. ​ However, if you have a Linux machine and are comfortable building from source code, [[download/​|follow the instructions here]] to download the gPXE source. Building from source is obviously more complicated. ​ However, if you have a Linux machine and are comfortable building from source code, [[download/​|follow the instructions here]] to download the gPXE source.
Line 53: Line 49:
 user@user-ubuntu:​~/​gpxe-1.0.0+/​gpxe/​src$ user@user-ubuntu:​~/​gpxe-1.0.0+/​gpxe/​src$
 </​code>​ </​code>​
- * Now, copy the output file, **bin/​8086100f.bin**, to the directory your VM resides in+ * Now, copy the output file, **bin/​8086100f.rom**, to the directory your VM resides in
 <​code>​ <​code>​
 user@user-ubuntu:/​home/​user/​gpxe-1.0.0+/​gpxe/​src#​ cp bin/​8086100f.rom /​home/​user/​Virtual\ Machines/​WinXP/​ user@user-ubuntu:/​home/​user/​gpxe-1.0.0+/​gpxe/​src#​ cp bin/​8086100f.rom /​home/​user/​Virtual\ Machines/​WinXP/​
 </​code>​ </​code>​
 Once you've copied the ROM image file to your VM directory, skip to the section on [[#​editing_the_vmx_file|editing the .vmx file]] below. Once you've copied the ROM image file to your VM directory, skip to the section on [[#​editing_the_vmx_file|editing the .vmx file]] below.
-----+
 ===== Locating the VM's .vmx configuration file ===== ===== Locating the VM's .vmx configuration file =====
 Now we need to locate and edit the configuration file for the VM we wish to add the gPXE ROM image to. Now we need to locate and edit the configuration file for the VM we wish to add the gPXE ROM image to.
Line 69: Line 65:
  - The .vmx file will be displayed next to the **Location** section of the tab that appears on the right side of the window (see the screenshot to the right).  - The .vmx file will be displayed next to the **Location** section of the tab that appears on the right side of the window (see the screenshot to the right).
  - Navigate to that folder. ​ Using our example, we'll go to:  - Navigate to that folder. ​ Using our example, we'll go to:
-<​code>​D:​\Virtual Machines\Windows XP Professional PicoTest</​code> ​\\+<​code>​D:​\Virtual Machines\Windows XP Professional PicoTest</​code>​
  * Locate the .vmx file in that folder. ​ Here's the file I've used in our example:  * Locate the .vmx file in that folder. ​ Here's the file I've used in our example:
-{{:​appnotes:​vmx-file.jpg}}\\ +{{:​appnotes:​vmx-file.jpg}}\\ \\ 
-__Note__: If you **don'​t** see a file ending in **.vmx** like the example above, but instead see a bunch of files with exact same names and no "​**.xxx**"​ on the end, your operating system may be set to hide file extensions.\\ ​ To //turn on// display of file extensions in [[wp>​windows_vista|Windows Vista]] or newer, [[http://​windows.microsoft.com/​en-US/​windows-vista/​Show-or-hide-file-name-extensions|follow the steps here]]. ​ In [[wp>​Windows XP]] or earlier, [[http://​www.fileinfo.com/​help/​windows-show-extensions.html|follow this guide]] instead.\\+__Note__: If you **don'​t** see a file ending in **.vmx** like the example above, but instead see a bunch of files with identical ​names and no "​**.xxx**"​ on the end, your operating system may be set to hide file extensions.\\ ​ To //turn on// display of file extensions in [[wp>​windows_vista|Windows Vista]] or newer, [[http://​windows.microsoft.com/​en-US/​windows-vista/​Show-or-hide-file-name-extensions|follow the steps here]]. ​ In [[wp>​Windows XP]] or earlier, [[http://​www.fileinfo.com/​help/​windows-show-extensions.html|follow this guide]] instead.\\
  
 ===== Copy the ROM image to the VM directory ===== ===== Copy the ROM image to the VM directory =====
Line 79: Line 75:
  * You should now have your ROM image, which as per the example pictured here is **gpxe-1.0.0+-8086100f.rom**,​ in the same folder as the .vmx file.\\  * You should now have your ROM image, which as per the example pictured here is **gpxe-1.0.0+-8086100f.rom**,​ in the same folder as the .vmx file.\\
 {{:​appnotes:​rom-copied.jpg}}\\ {{:​appnotes:​rom-copied.jpg}}\\
- 
 ===== Editing the .vmx file ===== ===== Editing the .vmx file =====
 Now we need to open the .vmx file in your text editor of choice. ​ Unfortunately for us, .vmx files are set to open with VMware Workstation by default, so, if you're using Windows, you need to right click the .vmx file and click "Open With..."​.\\ ​ If a sub-menu comes up from clicking "Open With", click "​Choose Default Program..."​\\ ​ Now we need to open the .vmx file in your text editor of choice. ​ Unfortunately for us, .vmx files are set to open with VMware Workstation by default, so, if you're using Windows, you need to right click the .vmx file and click "Open With..."​.\\ ​ If a sub-menu comes up from clicking "Open With", click "​Choose Default Program..."​\\ ​
Line 90: Line 85:
  * The second line adds the gPXE ROM to the Virtual NIC's ROM:  * The second line adds the gPXE ROM to the Virtual NIC's ROM:
 <​code>​e1000bios.filename = "​gpxe-1.0.0+-8086100f.rom"</​code>​ <​code>​e1000bios.filename = "​gpxe-1.0.0+-8086100f.rom"</​code>​
-__Note__: The text "​**gpxe-1.0.0+-8086100f.rom**"​ corresponds to the file that you downloaded from ROM-o-matic and then copied to the VM's folder in the above steps. ​ Your ROM's filename will likely be different.\\ \\+__Note__: The text "​**gpxe-1.0.0+-8086100f.rom**"​ corresponds to the file that you downloaded from ROM-o-matic and then copied to the VM's folder in the above steps. ​ Your ROM's filename will likely be //​slightly// ​different.\\ \\
 {{:​appnotes:​vmx-file-modified.jpg|Example of edited .vmx file}}\\ {{:​appnotes:​vmx-file-modified.jpg|Example of edited .vmx file}}\\
  * Once you've finished adding those lines to your .vmx file, save it and close it. \\  * Once you've finished adding those lines to your .vmx file, save it and close it. \\
Line 101: Line 96:
  
 Congratulations,​ and enjoy your ROM-Based installation of gPXE! \\ Congratulations,​ and enjoy your ROM-Based installation of gPXE! \\
 +
 +==== Drivers ====
 +
 +Most modern operating systems (Windows Vista/​Server 2008 and newer and more recent versions of various Linux distros) include drivers for the Intel E1000 series NICs by default. ​ However, if your guest OS is 32 bit Windows XP or Windows Server 2003, you may need to download additional driver files from Intel'​s web site [[http://​www.intel.com/​support/​network/​sb/​cs-006120.htm|here]].
 +
 +==== Considerations ====
 +
 +The downside to this method when compared with PXE chainloading is that it //does// require you to change the NIC in your VM.  If you have any application or service running in that VM where a NIC "​swap"​ would be a problem, you may want to consider a less disruptive method of introducing gPXE into your environment. ​ It is worth pointing out that, considering the poor native driver support offered to PCNET32 or VMXNET NICs at this time, a PXE chainload that utilizes the UNDI driver is the best bet in those situations, but overhauling your DHCP/​ProxyDHCP deployment might likely be a more time consuming task than reinstalling a VM's NIC.
 +
 +Performing this procedure may cause VMware to generate a new MAC address for the virtual NIC.  You can permanently assign a MAC address either via the Workstation GUI (right click your VM, click "​Settings"​ and select your network adapter) or by changing lines in the .vmx configuration file.
 +
  
 ===== Notes for Advanced users ===== ===== Notes for Advanced users =====
Line 108: Line 114:
  * This method is particularly good when you'd like to make use of embedded gPXE scripts. ​ Of course, you could accomplish the same thing with an ISO or floppy image attached to your VM, but ROM files are nice as they aren't quite so ambiguous.  * This method is particularly good when you'd like to make use of embedded gPXE scripts. ​ Of course, you could accomplish the same thing with an ISO or floppy image attached to your VM, but ROM files are nice as they aren't quite so ambiguous.
  * To this author'​s knowledge, aside from watching while booting the VM or editing the .vmx file, there'​s no way to determine from the Workstation (or Infrastructure Manager) UI that a modified NIC ROM has been applied to a VM.  * To this author'​s knowledge, aside from watching while booting the VM or editing the .vmx file, there'​s no way to determine from the Workstation (or Infrastructure Manager) UI that a modified NIC ROM has been applied to a VM.
 + * Lines in the .vmx file can be commented out with a semicolon (;) and the next setting begins on the next non-blank new line.  If you'd like to switch back and forth between settings introduced through manual .vmx file editing, like if you had several different ROM images each with a different embedded script, you can change between them by commenting in and out different settings.

QR Code
QR Code appnotes:gpxeonvmware (generated for current page)