Installing LinuxMCE on Virtual Machine via KVM
KVM: To badly go where (almost) no man has gone before
In this overview I will try to follow the installation path to get LCME 8.10 into a virtual machine which uses PCI(-E) devices from the host. Normally the option to install on a dedicated computer is the best, but as I want to host several systems, including LCME, websites etc and the ease of testing out new stuff combined with the fact that I want to keep it as green as possible lead me to the conclusion that virtualization was the way to go. Over the last 2 years I've been building systems that have failed in doing what I wanted (XEN and KVM based), but with the latest state of soft- and hardware I'll hope I'll have a better change. The below is my queste for the wanted setup up, step by step.
Virtualization the way I want to do it can only be done with specific hardware/firmware which uses VT-d, a virtualization PCI Passthrough technique embedded in the bios.
Status is concept from step 4
So I will state my machine details first:
- Motherboard: ASUS P5E VM DO with bios 10.1
- CPU: Q6600
- 6 Gb DDR-2 Memory
- 1 onboard GbE Nic
- 1 PCI-E GbE Nic
- 1 Hauppauge PVR-150 (for the moment)
han@obelix:~$ lspci 00:00.0 Host bridge: Intel Corporation 82Q35 Express DRAM Controller (rev 02) 00:02.0 VGA compatible controller: Intel Corporation 82Q35 Express Integrated Graphics Controller (rev 02) 00:03.0 Communication controller: Intel Corporation 82Q35 Express MEI Controller (rev 02) 00:03.2 IDE interface: Intel Corporation 82Q35 Express PT IDER Controller (rev 02) 00:03.3 Serial controller: Intel Corporation 82Q35 Express Serial KT Controller (rev 02) 00:19.0 Ethernet controller: Intel Corporation 82566DM-2 Gigabit Network Connection (rev 02) 00:1a.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 02) 00:1a.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 (rev 02) 00:1a.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 (rev 02) 00:1a.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 (rev 02) 00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 02) 00:1c.0 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 (rev 02) 00:1c.4 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 5 (rev 02) 00:1d.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 02) 00:1d.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 02) 00:1d.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 02) 00:1d.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 02) 00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 92) 00:1f.0 ISA bridge: Intel Corporation 82801IO (ICH9DO) LPC Interface Controller (rev 02) 00:1f.2 IDE interface: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA IDE Controller (rev 02) 00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 02) 00:1f.5 IDE interface: Intel Corporation 82801I (ICH9 Family) 2 port SATA IDE Controller (rev 02) 00:1f.6 Signal processing controller: Intel Corporation 82801I (ICH9 Family) Thermal Subsystem (rev 02) 01:00.0 IDE interface: JMicron Technologies, Inc. JMB368 IDE controller 02:00.0 Ethernet controller: Intel Corporation 82572EI Gigabit Ethernet Controller (Copper) (rev 06) 03:01.0 Multimedia video controller: Internext Compression Inc iTVC16 (CX23416) MPEG-2 Encoder (rev 01) 03:02.0 FireWire (IEEE 1394): Agere Systems FW323 (rev 70)
Step 1) Install Ubuntu 9.04 server AMD 64 (should be easy enough if you are able to get LMCE up and running :-) )
Step 2) Make the system current:
sudo apt-get update sudo apt-get upgrade
Step 3) Add some management tools:
sudo wget http://prdownloads.sourceforge.net/webadmin/webmin_1.480_all.deb sudo apt-get install libnet-ssleay-perl libauthen-pam-perl libio-pty-perl libmd5-perl sudo dpkg -i webmin_1.480_all.deb sudo apt-get install mc
I use webmin to give my server a fixed ip address and perform other administrative tasks. MC (Midnight Commander) is a nice tool to move files around the server.
Step 4) To be able to do remote monitoring of virtual machines, install virt-manager on your remote machine. If your are using Jaunty on your remote system, install ssh-askpass as per [[1]]
sudo apt-get install ssh-askpass
or use ssh keys
Step 5) Download the latest kernel from The Linux Kernel Archives [[2]] and unpack it into /usr/bin.
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.1.tar.bz2 sudo tar -jxvf linux-2.6.30.1.tar.bz2 -C /usr/bin
Step 6) Install dependencies for make menuconfig and configure the new kernel.
sudo apt-get install gcc ncurses kernel-package fakeroot
Change to /usr/bin
cd /usr/bin/linux-2.6.30.1
Copy over the old config to get a headstart.
sudo cp /boot/config-`uname -r` ./.config sudo make menuconfig
sudo make-kpkg clean
sudo fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
Step 7) Install The New Kernel After the successful kernel build, you can find two .deb packages in the /usr/bin directory.
ls -l linux*
Step 8) Install the 2 packages
sudo dpkg -i linux-image-2.6.30.1-custom_2.6.30.1-custom-10.00.Custom_amd64.deb sudo sudo dpkg -i linux-headers-2.6.30.1-custom_2.6.30.1-custom-10.00.Custom_amd64.deb
Step 9) Check that menu.list has been updated with your new kernel
cat /boot/grub/menu.lst sudo reboot