Catch part I here if you missed it.
PCI-passthough did not function correctly in XEN 3.2 which is what resides in Debians' stable repositories. I could have made my system a mixed bag and tried the unstable repositories where 3.4 and I think 4.0 as well reside, but I have broken one too many systems mixing testing and or unstable with stable and decided against it.
With XEN 3.2 I was able to hide my PCI device from the dom0 using
pciback.hide=(0000:de:vi.d)
But when I assigned it in the HVM configuration it wouldn't take and wouldn't pass through. It was aggravating hours of research and a cycle of try solution then fail, I even decided to try using a newer xen aware backport kernel from the Debian backports site. I installed the 2.6.32 kernel from backports which required an updated version on linux-base which for some reason can't be configured properly, and results in the 2.6.32 kernel not being configured properly either. ARGH!!!! Eventually I made an executive decision, it was based my failures and on the fact that 3.2 was the first version of XEN to support PCI passthrough to HVM guests, sometimes a technology in it's infancy doesn't always work well. Since I did not want to mix testing or unstable branches with my stable branch and a newer version of XEN was not available in backports, I decided I should get the newest version of XEN. So off I go to XENs website and download the tarball for XEN 4.0, and untar it on my system.
Now the build system for XEN is pretty easy, and this was my second foray into building XEN from source. My last time was with my laptop and XEN 3.0.4 this resulted in a 2.6.18 version kernel, now a very outdated kernel and it even caused me some headaches with stuff on my laptop at that time, namely I ended up having to use ndiswrapper for wireless. But i digress, with XEN 4.0 you have the option to build the legacy 2.6.18 version kernel, but there is also a new pvops kernel which includes all the XEN patches this is a 2.6.31 or .32 based kernel and is automatically downloaded by the XEN make script for use compiling XEN and the XEN kernel. Make note you need to have the ability to have the git protocol through your firewall or a proper proxy configured to allow git because I had issues downloading the kernel due to Internet access of the server being through a squid proxy. Also make sure you download ALL the packages required for building XEN otherwise you'll end up trying to compile 6 times like I did only to receive errors because I was missing some dev library. The build itself consisted of little more than
Make world
Make dist
./install.sh
It took some time but the make world executed and finished, then make dist did it's magic and finally the install script installed the kernel and modules onto the system, then it was as simple as
depmod 2.6.31.13
update-initramfs -c -k 2.6.31.13
update-grub
depmod to build the module dependencies, update-iniramfs to create the image file for boot and update-grub to add the entries to my grub list. I rebooted my server and voila, it froze while booting while trying to assign some IRQ addresses. Can't life be simple?!?!?!
Be sure to join us for our next exciting installment of XEN adventures. Same Xen Time same XEN channel. |