Original article Source
(update 1-3-2011 This list of steps was also tested with 10.04 Desktop on Win2k8R2 non SP1)
Last July, Microsoft announced the drivers for Linux source code is available in the Hyper-V virtualization environment. In practice, the 2.6.32 of the Linux kernel version now contains drivers for synthetic Hyper-V, virtual machine including the VMBus, storage, and network components. In detail, it's hv_vmbus, hv_storvsc, hv_blkvsc and hv_netvsc modules: these modules are described in this article.
Out configurations "officially supported", I tested the activation of these modules in new Ubuntu Server 10.04, provided recently with the 2.6.32 kernel. To do this I found this article which explains how to enable these modules, and which I inspire me thus far.
Firstly it must ensure that the Hyper-V modules are loaded at startup. To do this, edit the file /etc/initramfs-tools/modules and add the following four lines:
Then, update the initramfs image:
$ sudo update-initramfs - u
Finally, configure the network by changing the/etc/network/interfaces file to configure the network interface named seth0. Indeed, a synthetic NIC would be named seth n instead of eth n for "legacy" network adapter.
For example for a DHCP configuration, add the following to /etc/network/interfaces:
iface eth0 inet dhcp
or, for a static IP address:
iface eth0 inet static
It remains only to restart, and check the proper loading of drivers using the command:
$ lsmod | grep hv_ (lower case L) in lsmod
For my test I used Windows Server 2008 R2 Hyper-V, and 32-bit Ubuntu Server 10.04 (ubuntu-10. 04 - server - i386 .iso).
Because I set up the VM with a synthetic network adapter, it is not detected the installation. This is not serious; it will be when it has made steps outlined previously after installation.
On this error message, choose <Continue>.
Once the virtual machine installed and started, the steps outlined above are fairly simple to implement:
After a reboot (sudo reboot), we have many assets on the network map seth0 synthetic, and other drivers loaded:
That is what servers run Linux under Hyper-V with decent performance. Have to wait for integration into the Linux kernel the next features (multi-processors, clock synchronization and stop integrated), these features are currently available in the beta integration services 2.1, SUSE Linux Enterprise Server Red Hat Enterprise Linux.
How does this work with VLAN devices? I have Hyper-V set up with the network adapter (that the VMs use) connected to a cisco switch configured to be a VLAN trunk. I tried doing this with VLAN 2 enabled and setting the static address to 192.168.2.250 and gateway 192.168.2.1 (VLAN gateway) and rebooted but ifconfig doesn't display the new seth0 adapter at all... Any idea why?
Under Ubuntu 10.10, if I add a synthetic NIC it is appearing as eth1 instead of seth1. I am starting out with a legacy NIC and sythentic NIC during the initial install and then I remove the legacy NIC.
In Ubuntu 11.04 the network is identified as eth1 as I did the same steps as kevin.
If you install all the way with one default (synthetic) network adapter the device name is "eth0" not "seth0".
No such luck for me, I followed exactly and now it crashes on boot. Oh well, thank you for the write up, I will just setup 12.04 LTS.
I am running Server 2012 HyperV v. 6.2.9200.16384
Thanks for this post, I updated the initramfs and removed the legacy adapter from Hyper-V but I'm seeing a strange issue where the server loses network connectivity, I'm using the VM to host a Big Blue Button server and after around 45 minutes of usage the server drops the network connection and is only re-established upon reboot...has anyone come across this?
Apart from that 'minor' issue the difference in performance of switching on the hyper-v drivers partly solved our performance issues with the legacy adapter...