2019-01-31

My hypervisor project

I used Oracle VM VirtualBox when I took several programming courses at a local school. I downloaded the application and installed it on my PC running Windows. I also downloaded an ISO image of the operating system (OS), Ubuntu, to run in a VirtualBox virtual machine (VM). I was amazed that I could run Linux on Windows.

When I was choosing projects to apply for the Outreachy internship, the experience of using VirtualBox attracted me to the project, "Improve Linux kernel support for running as a guest on the Hyper-V hypervisor" because I wanted to learn how hypervisors, such as VirtualBox and Microsoft Hyper-V, make running guest OS' possible.

To virtualize the guest Linux environment on the Windows host, first, I enabled Hyper-V on Windows after confirming that my PC configuration met the requirements. It is easy to create a new Linux VM, but I learned the hard way that I had to set aside quite a lot of disk space after I used up the space I had reserved for it.

Hyper-V is not open source; however, its Linux drivers are. The Linux drivers are used for Linux VM's on Azure, Hyper-V on Windows, and System Center.

After I followed my mentor's instructions and changed part of the Hyper-V Linux driver code, I saw the result. That was a line displayed by printk(), but it was fascinating to see it on my Hyper-V Linux VM. When I made a mistake using a structure in C, my Azure Linux VM gave me tons of errors. I was disappointed when the VM didn't launch as I expected; then, I realized the impact that I could have. That moment gave me a chill.

The Linux driver code is very difficult. My project, so far, does not include an integrated development environment to make the code easier for me to understand and work with. However, I'm really excited to contribute to such a big project as this.