Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
vmwarebios [2006/06/26 16:51] mcb30 Remove childish obscenities |
vmwarebios [2009/03/13 06:10] (current) mcb30 |
||
---|---|---|---|
Line 3: | Line 3: | ||
===== EtherBoot ROM in VMware and Bochs - The tutorial ===== | ===== EtherBoot ROM in VMware and Bochs - The tutorial ===== | ||
- | (updated on 25.06.2006) | + | (updated on 07.07.2006) |
+ | **Declarations** | ||
+ | * Expansion ROM / ExpansionROM , Extension ROM / ExtensionROM , Option ROM / OptionROM , Extension BIOS / ExtensionBIOS | ||
+ | ... describes a binary executable in a special format, which can be loaded and started by mainboard's System BIOS | ||
+ | This binary executably is genereally stored in the (Flash)-EEPROM of a graphics card, network card, RAID controller and inside a modular System BIOS / module based BIOS.\\ | ||
+ | |||
+ | **Introduction** | ||
In the past and in the present, many people were/are interested in using EtherBoot for virtual machines, like VMware or Bochs: | In the past and in the present, many people were/are interested in using EtherBoot for virtual machines, like VMware or Bochs: | ||
Line 21: | Line 27: | ||
* put EtherBoot to a floppy disk / CD or into a flopy disk image / CD image | * put EtherBoot to a floppy disk / CD or into a flopy disk image / CD image | ||
* store the CD image / floppy disk image to a file | * store the CD image / floppy disk image to a file | ||
- | * start Bochs/VMware and wait for the CD / floppy disk boot process. | + | * start Bochs/VMware and wait for the CD / floppy disk boot process |
But there are faster/alternative methods to use EtherBoot in VMware and Bochs. | But there are faster/alternative methods to use EtherBoot in VMware and Bochs. | ||
Line 28: | Line 34: | ||
Now, I will show you the methods to make EtherBoot testing/developing faster and easier: | Now, I will show you the methods to make EtherBoot testing/developing faster and easier: | ||
+ | |||
+ | |||
==== Alternative Methods: ==== | ==== Alternative Methods: ==== | ||
Line 33: | Line 41: | ||
=== 1. Putting EtherBoot into the VMware BIOS === | === 1. Putting EtherBoot into the VMware BIOS === | ||
- | VMware is currently the only PC emulator with a commercial modular BIOS which can be easily modified. | + | VMware is currently the only PC emulator with a commercial modular BIOS which can be easily modified.\\ |
Beside bochs, VMware is currently the best emulator for BIOS related developments, like building/testing user-made Option ROMs ideas/projects. | Beside bochs, VMware is currently the best emulator for BIOS related developments, like building/testing user-made Option ROMs ideas/projects. | ||
- | ( Inside the "Microsoft Virtual PC" executable you can find an AMIBIOS resource which can also be modified with AMIBIOS modification utilities. | + | \\ |
+ | ( Inside the "Microsoft Virtual PC" executable you can find an AMIBIOS resource which can also be modified with AMIBIOS modification utilities.\\ | ||
But there are huge restrictions: | But there are huge restrictions: | ||
* never try any Option ROM / Extension ROM experiments --> after the modification Microsoft's Virtual PC hangs while P.O.S.T. | * never try any Option ROM / Extension ROM experiments --> after the modification Microsoft's Virtual PC hangs while P.O.S.T. | ||
* Virtual PC is generally just for Windows. ) | * Virtual PC is generally just for Windows. ) | ||
+ | \\ | ||
+ | It is recommended to read the message threads below for an introduction: | ||
+ | * [[http://www.vmware.com/community/thread.jspa?threadID=10817&start=0&tstart=0|VMWare BIOS Modification / translation]] | ||
+ | * [[http://www.vmware.com/community/thread.jspa?threadID=28149&tstart=0|VMware BIOS modification - for Linux users]] | ||
+ | After this, compile or download an EtherBoot ROM for the PCNET32 adapter (Vendor ID: 0x1022, DeviceID: 0x2000), because VMware emulates an AMD LANCE / PCNET adapter by default. | ||
- | It is recommended to read the message threads below for an introduction: | + | After downloading/compiling the AMD LANCE / PCNET32 EtherBoot ROM, open the extracted VMware BIOS file with the Phoenix BIOS Editor and add the EtherBoot ROM as a new Option ROM. |
- | [[http://www.vmware.com/community/thread.jspa?threadID=10817&start=0&tstart=0|VMWare BIOS Modification / translation]] | + | |
- | [[http://www.vmware.com/community/thread.jspa?threadID=28149&tstart=0|VMware BIOS modification - for Linux users]] | + | |
- | + | ||
- | After this, compile or download an EtherBoot ROM for the PCNET32 adapter (Vendor ID: 0x1022, DeviceID: 0x2000). Then open the extracted VMware BIOS file with the Phoenix BIOS Editor and add EtherBoot ROM as a new Option ROM. | + | |
Next, save the modified BIOS file to a certain place and keep the path/filename in mind. | Next, save the modified BIOS file to a certain place and keep the path/filename in mind. | ||
Line 52: | Line 62: | ||
The last step is to add following line: | The last step is to add following line: | ||
<file>bios440.filename = "path to the modified BIOS file/BIOS file name"</file> | <file>bios440.filename = "path to the modified BIOS file/BIOS file name"</file> | ||
- | |||
...to VMware's configuration file. | ...to VMware's configuration file. | ||
=== 2. Using EtherBoot as replacement for VMware's build-in network boot ROMs === | === 2. Using EtherBoot as replacement for VMware's build-in network boot ROMs === | ||
- | VMware usually emulates an AMD Lance network interface card. But with some non-official switches, VMware 5 is able to emulate three different network card types: | + | VMware usually emulates an AMD LANCE network interface card. But with some non-official switches, VMware 5 is able to emulate three different network card types: |
* AMD Am79C970A - PCnet LANCE PCI Ethernet Controller | * AMD Am79C970A - PCnet LANCE PCI Ethernet Controller | ||
* Intel E1000 | * Intel E1000 | ||
* VMXNET - VMware PCI Ethernet Adapter | * VMXNET - VMware PCI Ethernet Adapter | ||
- | In VMware, each emulated network card has its own emulated network boot ROM. In this case the VMware developers decided to use Intel's PXE as network boot ROM code. | + | In VMware, each emulated network card has its own emulated network Boot ROM. In this case the VMware developers decided to use the Intel PXE as network boot ROM code. |
- | So, when it is already possible to choose between three different emulated network cards why not also getting the control of their emulated BOOTROM / BOOTROM content? :) | + | So, when it is already possible to choose between three different emulated network cards, why not also getting the control of their emulated BOOTROM / BOOTROM content? :) |
And why not replacing the default (PXE) network boot ROM with EtherBoot? :) | And why not replacing the default (PXE) network boot ROM with EtherBoot? :) | ||
Line 73: | Line 82: | ||
Well, after playing/testing with VMware, I could see that I also figured out sine new undocumented switches. | Well, after playing/testing with VMware, I could see that I also figured out sine new undocumented switches. | ||
Most of them were sent to [[http://sanbarrow.com/vmx.html|Sanbarrow]]. | Most of them were sent to [[http://sanbarrow.com/vmx.html|Sanbarrow]]. | ||
- | But I could see that I figured out some switches which are usefully for Option ROM / Extension ROM testing and usefully for EtherBoot development. | + | But I could see that I also figured out some switches which are usefully for Option ROM / Extension ROM testing and usefully for EtherBoot development. |
Here are the results: | Here are the results: | ||
First, download or compile EtherBoot ROM for one or all of following network cards: | First, download or compile EtherBoot ROM for one or all of following network cards: | ||
- | * a)<file> + e1000:e1000-82545em-copper -- [0x8086,0x100f] | + | * a)<file>e1000:e1000-82545em-copper -- [0x8086,0x100f] |
- | ("Intel E1000", Vendor ID: 8086 , Device ID: 100F)</file> | + | ("Intel E1000", Vendor ID: 8086 , Device ID: 100F)</file> |
- | * b)<file> + pcnet32:pcnet32 -- [0x1022,0x2000] | + | * b)<file>pcnet32:pcnet32 -- [0x1022,0x2000] |
- | ("AMD Am79C970A - PCnet LANCE PCI Ethernet Controller", Vendor ID: 1022 , Device ID: 2000 )</file> | + | ("AMD Am79C970A - PCnet LANCE PCI Ethernet Controller", Vendor ID: 1022 , Device ID: 2000 )</file> |
- | + | \\ | |
- | ( Hint: There is currently no EtherBoot sourcecode for the VMXNET - VMware PCI Ethernet Adapter Vendor ID: 15AD , Device ID: 0720 ) | + | * <file>( Hint: There is currently no: "c)", because EtherBoot sourcecode for the |
+ | VMXNET - VMware PCI Ethernet Adapter [Vendor ID: 15AD , Device ID: 0720] does not exist at the time. )</file> | ||
Line 91: | Line 101: | ||
ethernet0.virtualDev = "e1000" | ethernet0.virtualDev = "e1000" | ||
e1000bios.filename = "path/etherboot-for-E1000" | e1000bios.filename = "path/etherboot-for-E1000" | ||
+ | ethernet0.opromsize = 70144 | ||
ethernet1.present = "TRUE" | ethernet1.present = "TRUE" | ||
Line 97: | Line 108: | ||
</file> | </file> | ||
- | I spent nearly two hours to also prepare a [[http://bnobtc.pix-art.com/images/borgbios/vmware/etherboot-in-vmware.gif|decent animation]], which shows the described method. :) | + | I spent nearly two hours to also prepare a [[http://img220.imageshack.us/img220/7897/etherbootinvmwaredx5.gif|decent animation]], which shows the described method. :) |
PS: | PS: | ||
Line 106: | Line 117: | ||
=== 3. Putting EtherBoot into Bochs === | === 3. Putting EtherBoot into Bochs === | ||
- | The PC emulator (x86 emulator) Bochs emulates a NE2000-compatible network card. Because Bochs is also able to use additional Option ROMs, you can simply use this feature for EtherBoot testing and development. | + | The PC emulator (x86 emulator): "Bochs" generally emulates a NE2000-compatible network card. Because Bochs is also able to use additional Option ROMs, you can simply use this feature for EtherBoot testing and development. |
After compiling or downloading a suitable EtherBoot ROM (for a NE2000-compatible Ethernet adapter), just add following line to a Bochs configuration file: | After compiling or downloading a suitable EtherBoot ROM (for a NE2000-compatible Ethernet adapter), just add following line to a Bochs configuration file: | ||
Line 113: | Line 124: | ||
</file> | </file> | ||
Regarding to: "loading Option ROMs", the current Bochs releases use an emulated BIOS which is not squeamish like general and commercial (Award/AMI/Phoenix) BIOS code. | Regarding to: "loading Option ROMs", the current Bochs releases use an emulated BIOS which is not squeamish like general and commercial (Award/AMI/Phoenix) BIOS code. | ||
- | This means that the Option ROM header (correct PCI vendor / Device ID / PCI class ID) will not be checked by Bochs' BIOS. | + | This means that the Option ROM header (correct PCI vendor / Device ID / PCI class ID) will not be checked by Bochs' BIOS.\\ |
So, Bochs can load and run any kind of ISA/PCI Option ROMs without changing / modifying the Option ROM header before. | So, Bochs can load and run any kind of ISA/PCI Option ROMs without changing / modifying the Option ROM header before. | ||
- | + | \\ | |
Used links in the article and further interesting links: | Used links in the article and further interesting links: | ||
* a) EtherBoot inside emulators/VMs: | * a) EtherBoot inside emulators/VMs: | ||
Line 126: | Line 136: | ||
* b) | * b) | ||
- | * EtherBoot Option ROM in VMware and further Option ROM related screenshots / animations [[http://bnobtc.pix-art.com/images/borgbios/vmware/etherboot-in-vmware.gif]] | + | * EtherBoot Option ROM in VMware and further Option ROM related screenshots / animations |
- | * [[http://bnobtc.pix-art.com/images/borgbios/vmware]] | + | [No longer available] |
- | * [[http://bnobtc.pix-art.com/images/borgbios/romos]] | + | |
* c) | * c) | ||
Line 137: | Line 146: | ||
* e) Option ROM projects: | * e) Option ROM projects: | ||
- | * [[http://bnobtc.pix-art.com/en|"Already realized Option ROM ideas"]] | + | * [[[No longer available] --> "Already realized Option ROM ideas"]] |
+ | * f) | ||
+ | * [[http://rayer.ic.cz/romos/romose.htm|ROMOS]] | ||
This article was created to help users, who want to use EtherBoot in VMware and/or bochs. | This article was created to help users, who want to use EtherBoot in VMware and/or bochs. | ||
Furthermore it shows fast methods to test new added EtherBoot features with emulators / virtual machines. | Furthermore it shows fast methods to test new added EtherBoot features with emulators / virtual machines. | ||
I decided to publish this article in the EtherBoot Mailing List, because this is the right place. | I decided to publish this article in the EtherBoot Mailing List, because this is the right place. | ||
+ | |||
+ | The Etherboot Wiki author Anselm (username: "Stockholm") was allowed to add this article to the the EtherBoot Wiki. | ||
If you want to provide this article on other sites / in computer magazines, then get in contact with me before. | If you want to provide this article on other sites / in computer magazines, then get in contact with me before. | ||
Line 158: | Line 170: | ||
--BIOS modification and realtime desktop help service-- | --BIOS modification and realtime desktop help service-- | ||
- | [[http://bnobtc.pix-art.com]] | + | [No longer available] |
--BIOS Logo Gallery-- | --BIOS Logo Gallery-- | ||
- | [[http://bnobtc.pix-art.com/bioslogo]] | + | [No longer available] |
- | + | ||
- | [[http://bnobtc.pix-art.com/images/bioslogo]] | + | |
- | + |