Install SUSE Linux Enterprise 10 SP1 & Component Integration for Linux on Hyper-V

In this article, I am planning to cover how to Install SUSE Linux Enterprise 10 on Hyper-V, but what make it different than other articles that I will try to cover how to install the Hyper-V Component Integration for Linux as well Inject the Xen Hyper-Visor into the SUSE Linux Enterprise 10 which is running as a guest OS to try to show how to unleash the claimed performance of Linux on Hyper-V.

The reason behind me writing this article is that I came across many articles who show you how to install Hyper-V. Then many others which show how to install Linux as a guest OS on hyper-V, but I have not seen any that show you how to do the full install of Linux on hyper-V to include the Linux Component Integration for Hyper-V and Xen Hypervisor. In addition, I have came across many other articles which mention that being not easy such as Fedore Core 8 on Hyper-V not so easy as it seems and MS Hyper-V vs VMware VI3 , but they still have not mention how to do it to let us figure out how hard its. So I decided to try it out and post my experience and try to prove the opposite if possible, but If you want to head to the last few lines to find out the conclusion before going over the full article “yes, its not as easy as I thought Microsoft product would run.”

Before I head on with Installing SUSE Linux Enterprise 10 SP1 & the integration component, if you have not installed Hyper-V yet & need the instruction to do so, you might want to check our Microsoft Windows 2008 Hyper-V RTM Installation & Configuration Step By Step Tour by going through the following posts:

Intro: Introduction to Microsoft Windows 2008 Hyper-V RTM & Our Discovery Trip.
Part one: Microsoft Windows 2008 Hyper-V RTM Installation
Part Two: MS Hyper-V Virtual Networks Configuration & Hyper-V Server settings.
Part Three: MS Hyper-V Virtual Machine Creation.
Part Four: MS Hyper-V Virtual Machine Settings.
Part Five: Microsoft Hyper-V Snapshots Technology.

Back to our topic. At start I decided to install SUSE Linux Enterprise 10 in a child partition of Hyper-V Beta1 (found in RC1 of Windows Server 2008) and then to try Linux Integration Components for Microsoft Windows Server 2008 Hyper-V (Beta1) – now IC. Then try to inject Xen kernel trying to meet the planned MS installation path for acceptable performance of a Linux Virtual machine on Hyper-V. For this excersize I decided to use a small server that my company had at its lab (shhhhhhh!!!):

·Intel Xeon 2 Core

·4GB RAM

·HD 1TB

·Ethernet 2X1GB network cards

This seemed to be a good testing to install Windows Server 2008 RC1 with Hyper-V and try to run some virtual machines on it. For my testing I had to suffer with the x64 version of SUSE as that the only DVD I had, and did not have the time neither the bandwidth needed to get the 32-bit version of SUSE (Though most of the steps illustrated held the same for 32-bit version of SUSE). In Hyper-V manager, I created a virtual machine with 512 MB RAM, 1 CPU with the only special setting is that I used a network adapter type emulated (Legacy Network Adapter) and not to assign SCSI controller. I have assigned the ISO of SUSE Linux Enterprise 10 SP1 to the DVD virtual and initiated the virtual machine. The installation was spun smooth: the installation program has correctly recognized the network card emulated (DEC 21140), the graphics card emulated (S3 Trio 64) and the rest of the hardware. I only had to move the switch linux vga = 0x314 “auitare” during Setup to set the proper video mode (this is a preventive technique).

After that I had available a SUSE server fully functional, capable of accessing the network and also with its beautiful graphical user interface: although GNOME is Not brilliant when it come to performance, it still acceptable. And here I had felt the first signs of satisfaction. At this point I have moved to install the IC (downloadable from here) to have greater integration between the Linux machine and Hyper-V and to verify the improvement of performance. The IC mainly provide two things:

·Support for synthetic devices and in particular for network cards and SCSI controller. In this way Hyper-V can exploit the vmbus for dialogue with the parent partition and thus increase performance

·Hypercall adapter. This is a thin layer software that position “under” the Xen amended kernel that translates Xen Virtualization calls to functions that understandable to Hyper-V (hypercall)

Warning:

Linux Integration Components for Microsoft Windows Server 2008 Hyper-V At the current versions only support the following Linux verisons:

·SUSE Linux Enterprise Server 10 SP1 (x86)

·SUSE Linux Enterprise Server 10 SP1 (x64)

The support is provided only through this newsgroup: microsoft.bet.windowsserver.hyper-v.linux

Before installing the IC for Linux we exported (special menu item in Hyper-V Manager) VM in order to have a “rescue copy” in case something goes wrong and also to have two virtual machines that diverge “only” the presence or absence of IC.

 

Hyper-V Export

                                                                                                                                                  

The first step of the IC is to … read the attached document (Integration Components for Linux Read Me.docx) that contains a description of all the steps to be done.

I know, I know … most systems administrators prefers starting by inserting the CD directly – virtual or not – and see how everything crashes, but I decided to save my self the headache and read : the first read me. I assure you that in this case a prior reading of readme helps …

Choosing the X64 version operating system has been proven to be the most problematic: In fact, the Xen Kernel included in x64-based version of SUSE LE 10 SP1 does not start after the installation of the hypercall adapter x2v (the component that translates Xen calls into into Hyper-V calls).

Then you must run patching for the kernel. The special patches are available on the ISO containing the IC.

The seceret behind the Xen kernel with hyper-V is that one of the main objectives of Hyper-V is to be a virtualization platform that is “open” as much as possible, and able to perform at best for the different operating systems.

You can run Linux on Hyper-V without any modification (the list of versions of Linux supported by Microsoft in production will be made public with the RTM of Hyper-V). This will however use the device emulated (basically the same as Virtual Server 2005 R2) and performances are not particularly bright. This method is what unfortunetly most documented on the web for being so easy and most administrators being not aware of the required modification to boast the performance which is the aim of this article.

To improve the performance of virtual machines run in Linux partitions child of Hyper-V, Microsoft and XenSource (now Citrix) are working together to develop device drivers synthetic the vmbus and a hypercall adapter for use with Linux kernel Xen-enabled (child) . In particular hypercall adapter is a thin layer of software that arises under the Xen kernel (child) and translates calls to Xen virtualization subsystem into calls understandable by Hyper-V.

Hyper-V Hypercall Adapter
(Architecture of Integration Component for Linux with Hypercall Adapter)

Let me briefly cover the procedure that I followed to install the IC in SUSE LE 10 SP1 x64 (For full descriptions look at the documentation included with the IC):

  1. Copying the contents of the ISO file with the IC for Linux into a directory on your system.
    Using Hyper-V Manager assign the ISO file to a virtual DVD. Then run the following on your SUSE virtual machine to mount the virtual DVD to SUSE (eg: mount /dev/cdrom /mnt/cdrom). Copy at this point the content of ISO file in the /opt/linux_ic (which you have to create)
    $ mkdir /opt/linux_ic
    $cp /mnt/cdrom/* /opt/linux_ic -R
  2. Find the development tools and kernel sources in your SUSE packages which have the rpm format and then you can install these development tools and kernel sources using the command rpm or if you prefer Yast2
  3. To Instal the Xen kernel using command line. For the x64 platform use the following command (assuming that the ISO for your SUSE is mounted in /mnt/cdrom): $ rpm -ivh /mnt/cdrom/suse/x86_64/kernel-xen-2.6.16.46-0.12.x86_64.rpm
  4. To apply the required patches to the Xen kernel which for Xen X64 are present in the IC ISO and at this point we already had copied to the file system of SUSE. Run the following commands.
    $ cd /usr/src/linux-2.6.16.46-0.12
    $ cp /opt/linux_ic/patch/x2v-x64-sles.patch .
    $ patch -l -p1 < x2v-x64-sles.patch
  5. Rebuilding the Xen kernel and “install” it in place of the existing kernel
    $ cp /boot/config-2.6.16.46-0.12-xen ./.config
    $ make oldconfig
    $ make vmlinuz
  6. Install the hypercall adapter
    At this point, you can install the hypercall adapter with the following commands
    $ cd /opt/linux_ic
    $ perl setup.pl x2v /boot/grub/menu.lst

    It is necessary at this point to restart the virtual machine and SUSE will load the amended Xen kernel
  7. Installing the device driver synthetic (VSC) and the vmbus
    The last operation is the installation of synthetic device drivers (VSC):

    During the installation of VSC I received three warnings and two errors in the script startup vmbus(/etc/init.d/vmbus). You can safely ignore both the warning and the errors showing on the startup of vmbus which are the “problems of youth” script (it’s still a Beta1), but not in any way it jeopardize the success of the installation. A final restart to the SUSE VM close the phase of the IC Installation.

Hyper-V Linux IC Errors
                                                                                                                                                  (Warning and error messages)

 

I believe error messages caused by vmbus are linked to the fact that the startup script is written for RedHat and not for SUSE.
Indeed in the script the row /etc/init.d/functions for SUSE should be /etc/rc.status. Similarly, instead of calling success, as fixed in RedHat, should be called, SUSE, rc_status -v.
If someone wants to try to make these changes to the script before you run it and put in a comment to this post the results, that would be grateful.

8. Reconfiguration of Graphics:
The installation of IC causes the loss of Server X configuration that can be restored by running SaX2.
At this point we shut down the virtual machine SUSE, and then from the Hyper-V Manager:

I removed the VM network adapter emulated (Legacy Network Adapter) from the hardware configuration and we added a network card-type synthetic (Network Adapter) instead of it
As well, I added a SCSI controller and connected it to the virtual hard disk
Re-starting the virtual machine with SUSE we found the new hardware (based on synthetic devices) to be fully functional.

Hyper-V Linux IC ifconfig

(Output of ifconfig: seth0 is the card which based on device synthetic)
Hyper-V Linux IC scsi
(SCSI Devices summary: Note the vendor MSFT)

The configuration of the Integration Component for Linux is “all here,” and remember that we are only at Beta.

After the test we had run few load stress tests on both virtual machines the one with IC & Xen Kernel installed & the unmodified VM. The Performance of the one with IC & Xen Kernel seemed to perform 25 – 35% better than the non modified one. Its a great improvement. Though the stress tool that we had are too basic to conclude the result. Though you really can feel the difference. If hyper-V end up to be your choice it worth considering IC & Xen Kernel injection if you are using Linux VMs.

Yes As I said in the begining getting IC & Xen Kernel correctly working inside the Virtual Machines on Hyper-V is not as easy as I expected. Though if Hyper-V is going to be your virtualization platform & you plan for Linux VMs you better be ready to put up with it.

I hope this article was helpfull for everyone and people will leave comment on things I missed or things they would like to add to it. Share the knowledge!!!!!!!!

WhataVM,

This article has been highly inspired by Giorgio e Article

Comments

  1. Just what i was looking for. Really good article. Thanks, you save hours of my time.

  2. Thanks. Very useful article. But what you also imply is that I can’t have a SUSE VM created with a SCSI disk (with associated SCSI controller). Is it documented that we cannot have SUSE installed on such a disk setup?

  3. Hi PKS,

    Actually in Hyper-V you can’t boot any Virtual machine from Virtual SCSI at the time I tested. I am not sure if that has even been fixed yet. You can see the below quote from the MSDN Blog. In addition, for Linux hosts SCSI controllers for additional disks seems not to function well till the IC is installed. So you really can’t used it through the installation process of your Linux Guest OS. As you need to install the IC after the OS has been installed to be able to use Virtual SCSI Controller.

    “Each IDE controller can have two devices. You can not boot from a SCSI controller. This means an IDE disk will be required. The boot disk will be IDE controller 0 Device 0. If you want a CDROM it will consume an IDE device slot.” Source: MSDN Blog

    I hope that answer your question.
    Yours,
    Whatavm

  4. hi, can anyone supply me with the integration components rc2?

    i accidently deleted them and now the download link on the microsoft site is gone

    email would be blescha@yahoo.de. hanks

  5. Hi,

    I tried installing linu IC on hyper-v. Everything went fine but I got stuck at hypercall adapter installation.
    When I run the command “perl setup.pl x2v /boot/grub/menu.lst” I get an message XEN VIRTUALIZATION NOT INSTALLED. PLEASE CHECK XEN VIRTUALIZATION & RERUN”

    Can anyone help me on this.
    Thanks,

  6. Hi Hiren,

    Sorry for the late reply, but the site comments was not available as informed by one of the site admins, due to transferring it to a new hosting. Ok that said lets answer your question.

    Hiren, did you install the Xen Kernel? It seems from your post you did not do that? Please follow step 1-6 in the post above to do that before you try to install the hypercall adapter.

    I hope that helped. Please comment back the result.

  7. Hi Markus,

    I doubt any one can fulfill your request in here, as its against Microsoft Agreement when you sign up for the IC testing. Sorry.

    Yours,
    Whatavm

  8. MS has pulled the beta and RC linux integration tools from its Connect site back in July. Here is the note on their site:

    All –

    I just wanted to provide an update on the Linux Integration Components. We
    had to pull them down rather unexpectedly last month. While I can’t go into
    details as to why they were pulled, I can say with confidence that we’ll be
    posting a new version – the RTM version of the Integration Components – this
    month.

    All users who are registered with the Connect site will recieve a mail when
    the binaries are available for download.

    Regards –

    Mike Sterling
    Hyper-V Program Manager
    Microsoft

    So no one can/could install Linux VMs in hyper-V for the past month and a half! There’s a week left in August, so hopefully MS will come through with an RTM of the integration tools. Way to show your support to the linux community, MS…

  9. It looks like IC is back at MS Connect site but I can not tell if the version is any different.

    I am wondering if this would work for SLES10 *SP2*, if anyone tried that or there is no chance ‘cos the kernel is different and we have to wait again till it is supported ?

  10. The integration services are working in suse ent 10 sp1 . But the virtual cd/dvd isn’t working.

  11. Great article, just wondering whether you found any problems with the System clock on the non Component Integration virtual machine? i.e. did it run fast and not at a consistent frequency (sometimes going backwards) and if so did installing the Component Integrations fix that?

  12. VMbloggie says

    Hi Andy,

    You are correct the integration Components will have the time synchronization feature integrated in it.
    Please note: Its normal that virtual machines slip on time if you don’t sync their time to an external source, as they don’t see the full cycles of the physical CPUs; only see a part of it.

    I hope that help.

Speak Your Mind

*