Microsoft Loves Linux Deep Dive #1: Introduction to Linux and FreeBSD on Hyper-V
This post was written by Michael Kelley, Principal PM Manager, Cloud + Enterprise team
This blog post is #1 in a series of technical posts about running and managing Linux and FreeBSD in your on-premises datacenter. Other posts in the series are here:
Overview
Running Linux and FreeBSD as a guest operating system on Hyper-V
- Microsoft Loves Linux Deep Dive #1: Introduction to Linux and FreeBSD on Hyper-V
- Microsoft Loves Linux Deep Dive #2: Linux and FreeBSD Integration Services Core Features
- Microsoft Loves Linux Deep Dive #3: Linux Dynamic Memory and Live Backup
- Microsoft Loves Linux Deep Dive #4: Linux Network Features and Performance
- Microsoft Loves Linux Deep Dive #5: FreeBSD Overview and Status
Managing Linux and UNIX using System Center and PowerShell DSC
- Microsoft Loves Linux Deep Dive #6: Linux and UNIX Systems Management Overview
- Microsoft Loves Linux Deep Dive #7: Managing Linux in System Center Virtual Machine Manager
- Microsoft Loves Linux Deep Dive #8: Linux and UNIX Monitoring with Operations Manager
- Microsoft Loves Linux Deep Dive #9: Monitoring Open Source Middleware
- Microsoft Loves Linux Deep Dive #10: Managing the Software Configuration on Linux and UNIX Servers
- Microsoft Loves Linux Deep Dive #11: Linux Configuration Management with PowerShell DSC
- Microsoft Loves Linux Deep Dive #12: Summary of Running and Managing Linux and FreeBSD in Your Datacenter
Introduction
During the Ignite conference in May 2015, we posted a top level “Microsoft Loves Linux” blog article describing Microsoft’s commitment to Linux. More recently, Microsoft was a Gold Sponsor at LinuxCon North America, which was held right here in Seattle. At both conferences, we frequently heard the same question: “What is Microsoft doing with Linux?” The answer is “A lot!” We’ve continued to innovate and invest in Linux capabilities both in the Azure public cloud as well as on-premises with Windows Server, Hyper-V, and System Center. You can read about Linux in the Azure public cloud here.
For the on-premises datacenter, we're following up the May 2015 post with a weekly series of deeper technical posts about running and managing Linux in your on-premises datacenter. The first half of the series will cover running Linux and FreeBSD as a guest operating system on Hyper-V. The second half of the series will cover managing Linux and UNIX using System Center and using PowerShell DSC. Along the way, I may even have a few new things to announce!
Guest Operating Systems and Integration Services
What operating systems can run as a guest on Hyper-V? For example, I occasionally get a question like “Can I run IBM’s AIX as a guest on Hyper-V?” To help answer this question, consider this diagram:
Hyper-V is a hypervisor for the Intel/AMD x86/x64 chip architecture, so as you can see, a key requirement is that the guest operating system must run on the x86/x64 chip architecture. AIX, for example, is written for IBM’s POWER (PowerPC) architecture, so it can’t run on Hyper-V. This requirement for Hyper-V is no different from other x86/x64 hypervisors, such as VMware ESX; they can’t run AIX either.
If the operating system does run on x86/x64, the next question is whether Integration Services are available for the operating system. As described below, the Integration Services provide tight integration with the hypervisor, allowing you to get the best performance and manageability. Microsoft provides Integration Services for Windows, most Linux distros, and for FreeBSD. Other x86/x64 operating systems, such as Solaris x86, can run on Hyper-V in fully emulated mode, but the limitations of this mode make it unsuitable for most production environments. So to focus on what is useful for production workloads, this blog series will focus on the Integration Services and the associated Linux and FreeBSD distributions.
What exactly are the Integration Services? They are a set of device drivers for the guest operating system that match the synthetic devices presented by Hyper-V. These synthetic devices are the “hardware” that is seen by the guest OS, and provide an optimal interface for providing high performance networking and storage in a guest OS, as well as enhanced manageability. But just like physical devices, these synthetic devices need device drivers in the OS. Because each OS family has its own device driver model, these drivers must be specifically written for each OS family. So there are separate device drivers for Windows, Linux, and FreeBSD. This collection of device drivers (together with some user space daemons for Linux and FreeBSD) constitute the Integration Services. For Linux and FreeBSD, these are what we call Linux Integration Services (LIS) and FreeBSD Integration Services (BIS).
Developing LIS
Microsoft has developers for the Linux integration services, writing “C” code that runs in the Linux kernel. But the development and acceptance process is different from typical Microsoft products. We participate in the Linux kernel community, and submit LIS updates and bug fixes to the well-known Linux Kernel Mailing List – see https://lkml.org. Members of the Linux kernel community review the code, provide comments, suggest alternative implementations, or even tell us we’ve done it completely wrong! We make revisions, and we iterate with the community. Eventually our code is accepted by the community, and it goes into the latest version of the upstream Linux kernel code base. This is the Linux kernel code base that is organized and maintained by Linus Torvalds himself, containing all of the Linux kernel development work that is done around the world.
Once updates to the LIS code are in the upstream Linux kernel, Microsoft works with key Linux distro vendors to bring that code from the upstream Linux kernel into specific Linux distros. Linux distros are usually based on an earlier version of the Linux kernel, so some development work is often necessary to bring the code back to the earlier version. Microsoft and distro vendor developers work together to do this “backport”, and we work together to test the new distro version on Hyper-V, including both performance and management integration. We have conference calls multiple times a month with each distro vendor to discuss technical issues, resolve bugs, and track progress to ensure that the new distro version works well on Hyper-V. We also complete any distro vendor certifications on Hyper-V, such as the certification of Red Hat Enterprise Linux on Hyper-V.
LIS Packaging
As just described, Microsoft works with key Linux distro vendors to incorporate LIS directly into distro releases. When you install a distro version into a Hyper-V guest virtual machine, the Hyper-V integration services are already present – you are ready to run! But there are inherent delays in this process of working with the distro vendors. Each distro release has its own schedule, and the latest LIS features or performance improvements may miss the cut-off date for a release, and have to wait until the next release.
So as a way to offer the latest and greatest LIS changes on a faster path, Microsoft also has a standalone release of LIS that can be installed into some Linux distros. See this link to the Microsoft Download Center. This Microsoft provided LIS package can also be added into some older Linux distro versions that don’t have LIS built-in to the distro release. If you previously used the LIS 3.5 package from Microsoft, we recommend that you upgrade to this new LIS 4.0 package. Unlike LIS 3.5, LIS 4.0 can be installed even into Linux distros that already have LIS built-in. Going forward, we expect to update this Microsoft-provided LIS package every few months.
A word about version numbers: If you check the version number on the LIS modules in a Linux distro with LIS built-in, you may see version “3.1”. Don’t compare this version number with the “4.0” in LIS 4.0 and think that you are badly out-of-date. Use the Linux/FreeBSD feature grids as described below to determine the LIS features present in your distro version.
Developing BIS
I've talked about the process for developing LIS. We follow a similar process for FreeBSD. We contribute code to the FreeBSD community, iterate on feedback, and get the code into the main FreeBSD code base. One of our Microsoft developers even has committer rights within the FreeBSD community, making him part of the group that manages the FreeBSD source code base. But FreeBSD doesn’t have separate distros -- it is released directly by the FreeBSD community. So BIS is automatically part of the next FreeBSD release and no backporting is necessary, making the end-to-end process simpler.
Linux and FreeBSD Distro and Versions
For Hyper-V we have focused on enabling server-oriented Linux distros used by enterprise organizations in production datacenters. For FreeBSD, the primary focus is virtual appliance vendors that use FreeBSD as their base operating system. For both, we continually add new capabilities and performance enhancements to offer the best possible experience on Hyper-V. Because LIS and BIS release through their respective communities and the distro vendors, updates are not tied to the Windows Server/Hyper-V release cycle, and can occur more frequently. So it can be a bit daunting track the capabilities offered in different Linux and FreeBSD distros and versions, as well as the different versions of Hyper-V. To address this complexity, Microsoft provides full documentation here on TechNet, including feature grids for each of the major Linux distro families and for FreeBSD. You’ll see that our key Linux distros are:
- Red Hat Enterprise Linux
- CentOS
- SUSE Linux Enterprise Server
- Ubuntu Server
- Debian Server
- Oracle Linux
This documentation is updated frequently as new distro versions are released and as new LIS/BIS capabilities are added.
Summary
Linux and FreeBSD run great on Hyper-V! Microsoft fully participates with the Linux and FreeBSD communities, and with the Linux distro vendor eco-system, to deliver built-in integration with Hyper-V. You can install Linux or FreeBSD in a Hyper-V guest virtual machine and just run.
In the next blog post, I'll go into more detail on specific Hyper-V features that you can take advantage of when running Linux and FreeBSD guests.