Dec
18
Written by:
Matthew.Mattoon
Friday, December 18, 2009
In this post I will be detailing the steps needed to compile a new kernel in Debian Linux 5. This particular case we are purpose building a kernel with the drivers necessary for Hyper-V Guests to take advantage of synthetic devices. Additionally I plan on expanding this series with instructions for manual compiles of other distributions as well as some pre-compiled image based installs.
DISCLAIMER: These instructions are not provided with any guarantee of support. Microsoft (company behind Hyper-V) does not acknowledge Debian as a supported guest operating system.
BEFORE YOU BEGIN
- Install Debian 5 amd64 inside of a Hyper-V VM.
- My Hyper-V VM was 40GB IDE VHD with 1 Processor, 1GB of RAM, and 1 Emulated Network Adapter (I will later swap for a Synthetic once the kernel is installed) - other configs may work, but have not been tested.
- If you are on a network which requires a proxy server ensure you export http_proxy before attempting to use apt or wget.
INSTALL SOFTWARE PREREQUISITES
# apt-get install build-essential ncurses-dev kernel-package fakeroot
DOWNLOAD KERNEL SOURCE
# cd /usr/src
# wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.1.tar.bz2
PREPARE KERNEL SOURCE
# bzip2 -d linux-2.6.32.1.tar.bz2
# tar xf linux-2.6.32.1.tar
# cd linux-2.6.32.1
BUILD KERNEL CONFIGURATION
# make menuconfig



Device Drivers > Staging Drivers > Microsoft Hyper-V Client Drivers
COMPILE KERNEL (takes about 1 hour)
# make-kpkg clean
# fakeroot make-kpkg --initrd --revision=hv.custom.1.0 kernel_image
INSTALL KERNEL
# cd ../
# ls -l
# dpkg -i linux-image-2.6.32.1_hv.custom.1.0_amd64.deb
SWITCH CONFIGURATIONS FROM EMULATED TO SYNTHETIC NETWORK ADAPTER
# sed -i 's/eth/seth/g' /etc/network/interfaces
CONFIGURE MODULES TO LOAD AT BOOT
# echo –e “hv_vmbus\nhv_storvsc\nhv_blkvsc\nhv_netvsc” >> /etc/initramfs-tools/modules
# update-initramfs –u –k 2.6.32.1
SHUTDOWN GUEST TO SWAP VIRTUAL HARDWARE
# init 0
REPLACE NETWORK ADAPTER AND POWER ON GUEST
In Hyper-V: Copy the MAC address from the Network Adapter (Emulated) to be used on the newly created Network Adapter.
VERIFY CORRECT KERNEL
# uname -a
VERIFY MODULES LOADED
# lsmod | grep hv
VERIFY NETWORK CONFIGURATION
# ifconfig | grep seth -C 1
VERIFY STORAGE PERFORMANCE
# dd if=/dev/zero of=/root/testfile bs=4M count=1000
| |
Windows 2008 Hyper-V with SP2
|
Windows 2008 R2 Hyper-V
|
|
Ubuntu 9.10 amd64
2.6.31.14 (stock)
|
85MB/s, 89MB/s, 79MB/s
|
93MB/s, 88MB/s, 100MB/s
|
|
Ubuntu 9.10 amd64 2.6.32.1
|
388MB/s, 345MB/s, 377MB/s
|
393MB/s, 417MB/s, 389MB/s
|
|
Debian 5 amd64
2.6.26.1 (stock)
|
81MB/s, 67MB/s, 67MB/s
|
89MB/s, 92MB/s, 93MB/s
|
|
Debian 5 amd64
2.6.32.1
|
285MB/s, 119MB/s, 188MB/s
|
353MB/s, 207MB/s, 181MB/s
|
NOTES
- If you are not able to boot into the correct kernel you may need to change the default in grub. Ubuntu 9.10 + uses grub2 which has different files and procedures to update it. Grub simply update the /boot/grub/menu.lst with the correct number of your kernel as default. Grub2 update /boot/grub/grub.cfg and update with the correct version of your kernel as default, then execute update-grub to write the change to the boot sector.
Tags:
2 comment(s) so far...
Re: Hyper-V Guests: Compile Linux 2.6.32 on Debian
Hi,
I've compiled and installed the new kernel. But unfortunately I've noticed an problem with synthetic network adapter. It seems that everything is OK, the network card gets IP from DHCP but when I try to download the ISO file with 'wget' the transfer freezes and the system becomes unresponsible. So it's neccessary to reset the virtual machine. I've tried several ISO test files, sometimes the download is OK.
There are'nt problems with NICs on Windows guests virtual machines.
I use Hyper-v R2.
Regards Hercous
By hercous on
Thursday, February 04, 2010
|
Re: Hyper-V Guests: Compile Linux 2.6.32 on Debian
Great Howto. All working fine but I don't get the disk performance like You: 353MB/s, 207MB/s, 181MB/s
I get
~ 31MB/s
why so slow? Have all the same like You
By Santos on
Wednesday, February 10, 2010
|