Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
vmwarebios [2006/06/26 03:06] stockholm created |
vmwarebios [2009/03/13 06:10] (current) mcb30 |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ... waiting for the author of an e-mail to give publishing permission ... | + | ===== Using Etherboot inside the VMware BIOS ===== |
+ | The following mail has been posted on June 26, 2006 by Borg Number One in the EtherBoot mailing list. | ||
+ | |||
+ | ===== EtherBoot ROM in VMware and Bochs - The tutorial ===== | ||
+ | (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: | ||
+ | |||
+ | [[http://sourceforge.net/mailarchive/forum.php?thread_id=11504279&forum_id=48022]] | ||
+ | [[http://sourceforge.net/mailarchive/forum.php?thread_id=11529915&forum_id=48022]] | ||
+ | [[http://sourceforge.net/search/?ml_name=etherboot-discuss&type_of_search=mlists&group_id=4233&words=vmware]] | ||
+ | [[http://sourceforge.net/search/?ml_name=etherboot-discuss&type_of_search=mlists&group_id=4233&words=bochs]] | ||
+ | |||
+ | Using Virtual Machines is a really good and really fast way to test and improve EtherBoot (and other extension ROM projects). | ||
+ | But in previous virtual machine related requests in the EtherBoot Mailing Lists, I could see that only time consuming methods are known. | ||
+ | |||
+ | ==== Already known general method: ==== | ||
+ | |||
+ | Currently, EtherBoot developers/testers who use VMware or Bochs, have to take a certain time to: | ||
+ | * 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 | ||
+ | * 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. | ||
+ | |||
+ | In the last years, I acquired many BIOS and Option ROM related skills with real hardware and VMware and I also figured out different hints/undocumented VMware switches which were not published anywhere before. | ||
+ | |||
+ | Now, I will show you the methods to make EtherBoot testing/developing faster and easier: | ||
+ | |||
+ | |||
+ | |||
+ | ==== Alternative Methods: ==== | ||
+ | |||
+ | === 1. Putting EtherBoot into the VMware BIOS === | ||
+ | |||
+ | 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. | ||
+ | |||
+ | \\ | ||
+ | ( 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: | ||
+ | * 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. ) | ||
+ | \\ | ||
+ | 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. | ||
+ | |||
+ | 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. | ||
+ | |||
+ | Next, save the modified BIOS file to a certain place and keep the path/filename in mind. | ||
+ | |||
+ | The last step is to add following line: | ||
+ | <file>bios440.filename = "path to the modified BIOS file/BIOS file name"</file> | ||
+ | ...to VMware's configuration file. | ||
+ | |||
+ | === 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: | ||
+ | * AMD Am79C970A - PCnet LANCE PCI Ethernet Controller | ||
+ | * Intel E1000 | ||
+ | * 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 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? :) | ||
+ | |||
+ | And why not replacing the default (PXE) network boot ROM with EtherBoot? :) | ||
+ | |||
+ | The answer is easy: nobody knew the undocumented network related switches in VMware's configuration file before. | ||
+ | |||
+ | |||
+ | 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]]. | ||
+ | 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: | ||
+ | |||
+ | First, download or compile EtherBoot ROM for one or all of following network cards: | ||
+ | * a)<file>e1000:e1000-82545em-copper -- [0x8086,0x100f] | ||
+ | ("Intel E1000", Vendor ID: 8086 , Device ID: 100F)</file> | ||
+ | * b)<file>pcnet32:pcnet32 -- [0x1022,0x2000] | ||
+ | ("AMD Am79C970A - PCnet LANCE PCI Ethernet Controller", Vendor ID: 1022 , Device ID: 2000 )</file> | ||
+ | \\ | ||
+ | * <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> | ||
+ | |||
+ | |||
+ | Second, open your VMware configuration file and add following lines: | ||
+ | <file> | ||
+ | ethernet0.present = "TRUE" | ||
+ | ethernet0.virtualDev = "e1000" | ||
+ | e1000bios.filename = "path/etherboot-for-E1000" | ||
+ | ethernet0.opromsize = 70144 | ||
+ | |||
+ | ethernet1.present = "TRUE" | ||
+ | ethernet1.virtualDev = "vlance" | ||
+ | nbios.filename = "path/etherboot-for-AMD-lanCE" | ||
+ | </file> | ||
+ | |||
+ | 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: | ||
+ | VMware is also able to use/load larger Option ROMs (32KB and more) as network BootROM. | ||
+ | I could successfully configure and use " ROMOS " (64KB) as VMware E1000 network BootROM replacement too. | ||
+ | <file>( e1000bios.filename = "C:\BIOS\romospci.bin" )</file> | ||
+ | |||
+ | |||
+ | === 3. Putting EtherBoot into Bochs === | ||
+ | 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: | ||
+ | <file> | ||
+ | optromimage1: file=../etherboot.rom, address=0xd0000 | ||
+ | </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. | ||
+ | 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. | ||
+ | |||
+ | \\ | ||
+ | Used links in the article and further interesting links: | ||
+ | * a) EtherBoot inside emulators/VMs: | ||
+ | * [[http://sourceforge.net/mailarchive/forum.php?thread_id=11504279&forum_id=48022]] | ||
+ | * [[http://sourceforge.net/mailarchive/forum.php?thread_id=11529915&forum_id=48022]] | ||
+ | * [[http://sourceforge.net/search/?ml_name=etherboot-discuss&type_of_search=mlists&group_id=4233&words=vmware]] | ||
+ | * [[http://sourceforge.net/search/?ml_name=etherboot-discuss&type_of_search=mlists&group_id=4233&words=bochs]] | ||
+ | |||
+ | * b) | ||
+ | * EtherBoot Option ROM in VMware and further Option ROM related screenshots / animations | ||
+ | [No longer available] | ||
+ | |||
+ | * c) | ||
+ | * [[http://www.vmware.com/community/thread.jspa?threadID=10817&start=0&tstart=0|VMWare BIOS Modification / translation]] | ||
+ | |||
+ | * d) | ||
+ | * [[http://www.vmware.com/community/thread.jspa?threadID=28149&tstart=0|VMware BIOS modification - for Linux users]] | ||
+ | |||
+ | * e) Option ROM projects: | ||
+ | * [[[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. | ||
+ | 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. | ||
+ | |||
+ | 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. | ||
+ | Unauthorized publication on other sites, outside the EtherBoot Mailing List and/or in different print media is prohibited. | ||
+ | |||
+ | If you have questions referring to EtherBoot Option ROMs or Option ROMs in general, then do not hesitate to ask your question here in the EtherBoot Mailing List. | ||
+ | |||
+ | |||
+ | |||
+ | Borg Number One | ||
+ | |||
+ | --BIOS Tool Collection-- | ||
+ | |||
+ | --BIOS modification and realtime desktop help service-- | ||
+ | |||
+ | [No longer available] | ||
+ | |||
+ | --BIOS Logo Gallery-- | ||
+ | |||
+ | [No longer available] |