Sangoma Xen Configuration
Unsupported Configuration
This documents provide a step by step guide for running Sangoma Hardware on a paravirtualized guest OS under the Xen hypervisor. Since Debian provides Xen 4.0 in package management, Debian Lenny has been used as GNU/Linux distribution for the Host operating System.
If you have any problems please contact http://support.sangoma.com
Tutorial Created By:
Bruno Salzano (bruno@brunosalzano.com)
We sincerely appreciate Bruno Salzano assistance in this project.
1. Install Xen 4.0 on Debian Lenny
At the moment we wrote this tutorial, Xen 4.0 is only availabe in Sid (unstable repository). So, it's necessary to enable Sid repositories to install Xen 4.0.
Another choice is to build Xen4 from sources following the instructions from Xen wiki, but this goes outside of the goals of this tutorial. We'll show how to install using Sid repositories.
Add “deb http://ftp.it.debian.org/debian/ unstable main contrib non-free” in /etc/apt/sources.list
Sample: /etc/apt/sources.list
------------------------------------------------------------------------
#
# deb cdrom:[Debian GNU/Linux 5.0.6 _Lenny_ - Official i386 NETINST Binary-1 20100905-11:24]/ lenny main
#deb cdrom:[Debian GNU/Linux 5.0.6 _Lenny_ - Official i386 NETINST Binary-1 20100905-11:24]/ lenny main
deb http://ftp.ca.debian.org/debian/ lenny main
deb-src http://ftp.ca.debian.org/debian/ lenny main
deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main
deb http://volatile.debian.org/debian-volatile lenny/volatile main
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main
deb http://ftp.us.debian.org/debian/ unstable main contrib non-free
----------------------------------------------------------------------------
Run following command to sync repository.
root@lenny# apt-get update
Note: if you get an error like "E: Wow, you exceeded the number of descriptions this APT is capable of." from apt-get update command, you may want to give a look at this link. Anyway, try to run "export LANG=C" and run apt-get update again.
Install Xen 4.0 and Xen-tools running the following command:
root@lenny# apt-get install xen-hypervisor-4.0-amd64 linux-image-2.6.32-5-xen-amd64 xen-tools xen-linux-system-2.6.32-5-xen-amd64
Note: For 32 bit OS use "non -amd64" packages (ex. linux-image-2.6.32-5-xen-amd64 2.6.32-15 and xen-hypervisor-4.0-amd64 4.0.0-2 instead of linux-image-2.6.32-5-xen-686 and xen-linux-system-2.6.32-5-xen-686)
Once Xen 4.0 is installed, disable sid repositories by adding a pound sign (#) in front of the line "deb http://ftp.us.debian.org/debian/ unstable main contrib non-free" in /etc/apt/sources.list. You may want to use it again, but it's safe to leave it disabled.
To apply changes run following command:
root@lenny# apt-get update
Now reboot the system.
root@lenny# reboot
2. Create domU image using xen-create-image
Before all, we have to enable network bridge for xend. This will require to un-comment the line “(network-script network-bridge)” in /etc/xen/xend-config.sxp by removing “#” from front of the line.
Restart xend by running following command:
root@lenny# xend restart
Now, you should be able to see a bridge:
root@lenny# brctl show
bridge name bridge id STP enabled interfaces
eth0 8000.0022195825c8 no peth0
Create local directory for VM image.
root@lenny# mkdir /home/xen
For a test system VM is created with following specifications:
boot partition space = 4GB
swap pace = 512MB
hostname = sangomatest
distro type = lenny
4GB of boot partition space, 512 MB swap space and 512M of RAM using host name “sangomatest” and mirror "http://ftp.ca.debian.org/debian/". If You prefer, a mirror nearest your location can be used. For production systems You may increase ram, swap and disk space as You prefer.
root@lenny# xen-create-image --dhcp --mirror=http://ftp.ca.debian.org/debian/ --passwd --hostname=sangomatest --dist=lenny --size=4G --swap=512M --dir=/home/xen/ --memory=256M --role=udev
(Be patient this might take some time)
This will create configuration file sangomatest.cfg in /etc/xen directory
Start VM in console mode by running command:
root@lenny# xm create sangomatest.cfg -c
You should see you domU booting. At the prompt, after login, run following commands to have your domU Lenny updated:
root@sangomatest# apt-get update && apt-get upgrade
To switch back to your Dom0 Xen OS, use key combination: Ctrl + ]
To get back to guest OS sangomatest console run command “xm console sangomatest”.
Tip: If you've correctly setup networking and sshd daemon is running on DomU you can connect to your DomU through network and ssh client.
3. Find Sangoma Hardware and Make it available for PV Guest DomU VM
Since version 3.0, on Xen You can use PCI passthru to assign a PCI device to a virtual machine guest, giving it full and direct access to the PCI device. For more informations you can read this link.
On Dom0 find out Sangoma’s hardware PCI ID. Run following command.
root@lenny# lspci | grep -i sangoma
or
root@lenny# lspci -n | grep 1923
For example:
---------------------------------------------
root@lenny# lspci | grep -i sangoma
06:04.0 Network controller: Sangoma Technologies Corp. A200/Remora FXO/FXS Analog AFT card
---------------------------------------------
In above example PCI ID of Sangoma hardware is 06:04.0. PCI ID can be different on your machine.
Now edit /boot/grub/menu.lst configuration file and add "irqpoll xen-pciback.hide=(06:04:0)" in the end of “module/boot...” line of Xen 4.0 section.
For example:
-----------------------------------------------------------------------------------------------------------------
title Xen 4.0-amd64 / Debian GNU/Linux, kernel 2.6.32-5-xen-amd64
root (hd0,0)
kernel /boot/xen-4.0-amd64.gz
module /boot/vmlinuz-2.6.32-5-xen-amd64 root=UUID=41b96025-ba58-4938-b118-a492542ac786 ro console=tty0 irqpoll xen-pciback.permissive xen-pciback.hide=(0000:06:04.0) pci=resource_alignment=0000:06:04.0
-----------------------------------------------------------------------------------------------------------------
Tip: for verbose logging of the xen kernel, you may add "loglvl=all guest_loglvl=all" on kernel line of the above configuration. Once booted, from Dom0 you may read xen boot messages invoking the "xm dmesg" command.
Add Sangoma Hardware PCI ID to VM by adding “pci=['06,04,0']” and “extra = 'swiotlb=force iommu=soft'” in /etc/xen/sangomatest.cfg
Example:
-----------------------------------------------------------------------------------------------------------------
#
# Configuration file for the Xen instance sangomatest, created
# by xen-tools 4.2rc1 on Mon Sep 13 13:13:06 2010.
#
#
# Kernel + memory size
#
kernel = '/boot/vmlinuz-2.6.32-5-xen-amd64'
ramdisk = '/boot/initrd.img-2.6.32-5-xen-amd64'
vcpus = '1'
memory = '512'
#
# Disk device(s).
#
root = '/dev/xvda2 ro'
disk = [
'file:/home/xen//domains/sangomatest/disk.img,xvda2,w',
'file:/home/xen//domains/sangomatest/swap.img,xvda1,w',
]
pci=['06,04,0']
#
# Hostname
#
name = 'sangomatest'
#
# Networking
#
dhcp = 'dhcp'
vif = [ 'mac=00:16:3E:C3:C3:95' ]
#
# Behaviour
#
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'
extra = 'swiotlb=force iommu=soft'
-----------------------------------------------------------------------------------------------------------------
Shutdown domU (guest OS) and reboot dom0 (host machine).
root@lenny# xm destroy sangomatest
root@lenny# reboot
Once Xen system is restarted run the command “xm pci-list sangomatest” to check PCI passthrough for VM.
For example:
root@lenny# xm pci-list sangomatest
domain bus slot func
0x0000 0x06 0x04 0x0
Note: Please stop here if you cannot see pci back device. Please check “xm demsg” or /var/log/xen/xend.log .
4. Install development tools and kernel-headers on PV Guest DomU VM
Start the DomU (PV Guest OS) with hostname sangomatest
root@lenny# xm create sangomatest.cfg
Install PCI utils package to see pci devices.
root@sangomatest# apt-get install pciutils
Run “lspci” to confim that VM can see the Sangoma Hardware.
For example:
--------------------------------------------------------
# lspci
00:00.0 Network controller: Sangoma Technologies Corp. A200/Remora FXO/FXS Analog AFT card
-------------------------------------------------------
Update /etc/apt/sources.list file on VM to install linux-header files for the installed xen kernel. Header files are required to compile wanpipe drivers and dahdi-linux.
So, add “deb http://ftp.us.debian.org/debian/ unstable main contrib non-free” in /etc/apt/sources.list as you've already done when installing xen4 on dom0.
Save your sources.list file and run “apt-get update” to sync with Sid repository .
root@sangomatest# apt-get update
Install linux-headers files by running following command.
root@sangomatest# apt-get install linux-headers-$(uname -r)
Once kernel-headers are installed disable sid repositories by adding a pound sign (#) in front of the line "deb http://ftp.us.debian.org/debian/ unstable main contrib non-free" in /etc/apt/sources.list. You may want to use it again, but it's safe to leave it disabled.
To apply changes run following command:
root@sangomatest# apt-get update
Install required packages to install wanpipe drivers, dahdi-linux and asterisk:
root@sangomatest# apt-get install build-essential automake autoconf bison flex libtool libncurses5-dev libssl-dev subversion svn-buildpackage sox curl libsox-fmt-all libxml2-dev doxygen
5.Install Sangoma drivers and applications
Sangoma added Xen support in Wanpipe TDM driver from version 3.5.16 and above. Please make sure to use latest version of the driver.
For Asterisk follow wiki instructions at Telephony Cards for Asterisk
For FreeSWITCH follow wiki instructions at Telephony Cards for FreeSWITCH