Vista on Xen: Using NE2000 in favor to RTL8139
I finally took the time getting Vista to work in Xen.
Unfortunately there is a bug which prevents the emulated RTL8139 NIC from working properly in Vista (32-bit version concerned only, 64-bit version worked properly).
This seems a known issue after all and there exist several workarounds on the net concerning this case. So far they basically cover how alternate drivers may be patched together to go along with Vista.
The main reason for this is simple: the RTL8139 runs at 100 mbit/s and is required to get decent speeds.
However there is also the possibility to run the guest domain with NE2000 NIC emulation. Albeit this will only give you a network connection speed of 10 mbit/s full-duplex it is easier to get working right away without fiddling around with INF files and such.
Even though Microsoft dropped NE2000 driver support in Vista the NIC may still be used along with the NE2000 Drivers for Windows 2000.
To enable the use of NE2000 NIC emulation I changed my HVM configuration file accordingly:
vif = [ 'type=ioemu, bridge=xenbr0, model=ne2k_pci0 ]
Since my Vista lacked networking support I placed my driver image into an ISO image and changed the HVM to assign a virtual CD-ROM drive:
disk = [ 'file:/mnt/vm/Xen/Vista/disk1_vol1.img,hda,w', 'file:/mnt/vm/Xen/Vista/drivercd.iso,hdc:cdrom,r' ]
The ISO image was created as follows:
mkisofs -o drivercd.iso -J -r /path/to/w2k_8029.zip
The NE2000 Driver ISO is also available as download from my site.
After starting up Vista skip the ‘Add New Hardware Wizard’ in the first. Instead extract the ZIP file from the (virtual) CD-ROM drive to a temporary location.
Afterwards go to Device Manager and select the (yet) unknown pci device and choose the ‘Update Driver’ option from the Drivers tab.
From there go along with ‘Browse My Computer for Software’ and ‘List of Drivers on My Computer’ and clich the ‘Have Disk’ button.
Open the folder containing the extracted ZIP file’s contents and locate the NETRTP5.INF file. You should be given the choice of the ‘Realtek RTL8029 PCI Ethernet NIC’ which you are to accept.
After completing driver installation you should go device properties’ Extended tab and set ‘Duplex Mode’ to be ‘Full Duplex’ for best performance.
Using NE2000 NIC emulation Windows Vista will get basic network connectivity. It is easy enough to install for everybody and provides modest network speed.
If you need FastEthernet performance there is no way around patching drivers, using Vista64, waiting for an updated official driver or some guru to fix it in Xen itself (even if they didn’t screw it up in the first place…).
Here’s one thing I forget to note when I wrote the article in the first place.
Xen (at least 3.0.3 which I run) seems to have a bug which resets the NIC emulation from NE2000 to RTL8139 upon reset of the HVM.
Because of this I changed my HVM config file to destroy the HVM so I won’t end up with a non-working NIC emulation.
on_reboot = "destroy" on_crash = "destroy"