Hallo liebe Forengemeinde!
Ich habe mittlerweile einige Tage damit rumgebracht, eine FritzCard PCI in einer DomU unter XEN ins Rennen zu schicken. Für alle, die nicht wissen, wo sie anfangen sollen, oder ob fcpci mit CAPI in einer DomU tatsächlich funktioniert, hier ein kleines HowTo:
1) Worum geht's?
Die AVM FritzCards sind für ihre eigenartige Treiberunterstützung unter Linux bekannt (es existiert nur ein, nicht mehr gepflegter, Binary-Treiber für SUSE-Linux 9.3). Ich versuche hier zu beschreiben, wie ich es geschafft habe, eine Fritz-Card unter Fedora 8 innerhalb einer paravirtualisierten Maschine unter XEN ins Rennen zu schicken.
2) Ausgangspunkt
Ich habe folgende Hardware und Software genutzt:
Hardware (hatte auf der Arbeit gerade nichts anderes da):
- AMD Sempron 2600
- 1GB RAM
- Asus-Board (Typ ist mir gerade entfallen)
- 40GB-Platte
- Fedora 8 in der Dom0, alle Updates eingespielt und SELinux deaktiviert (dies ist nur ein Quick+Dirty-Howto, erst die Funktion, um die Sicherheit kümmere ich mich später)
- Fedora 8 in der DomU, bislang ohne Updates, nur der Kernel.
3) Vorgehensweise
Man setzte eine Fedora 8-Dom0 mittels Installer (grafisch oder Text ist egal) auf. Ich habe mir angewöhnt, grundsätzlich KEINE Dienste in der Dom0 laufen zu lassen, also muss der Asterisk nebst allen Treibern in der DomU laufen. Die FritzCard muss also vom Host in das Gastsystem durchgereicht werden. Für die Installation wählte ich keine großen Pakete/Paketgruppen aus. Defacto eigentlich nur "Base". Nach erfolgter Installation tat ich folgendes:
yum -y update kernel-xen
danach
yum -y groupinstall "Virtualization"
und für ein paar nützliche Tools:
yum -y install mc iptraf nmap tcpdump
Soviel erstmal zur Dom0.
----
Installation der DomU, um die ISDN-Karte durchzureichen. Früher habe ich meine virtuellen Maschinen immer mit virt-install aufgesetzt. Dabei kommt ein Image-File und eine schlecht dokumentierte .sxp-Config-Datei heraus, die mir persönlich NICHT weitergeholfen hat. Also fange ich vom Anfang an.
1) Erstellen einer Image-Datei für die Asterisk-DomU (2GB reichten bei mir):
dd if=/dev/zero of=/var/xenimages/asterisk bs=1M count=2048
2) Config-File für die Installation der DomU erstellen (ich gehe davon aus, dass das Netzwerk innerhalb der XEN-Umgebung bereits eingerichtet ist und die Installations-RPMS auf einem lokalen FTP-Server vorliegen. Ich habe dazu einfach die F8-DVD in ein Verzeichnis auf unserem internen FTP kopiert und anonymous Zugriff auf das Verzeichnis aktiviert, bei mir heißt es fc8i386).
Ich lege die Datei /etc/xen/asterisk an, die ich mit diesem Inhalt füttere:
Danach kopiere ich von der Fedora8-DVD die Dateien "/images/xen/vmlinuz" und "/images/xen/initrd" in das /boot-Verzeichnis der Dom0 und nenne sie in "vmlinux-xen-install" und "initrd-xen-install" um, ansonsten wird die DomU nicht installieren wollen. Auf dem FTP erstelle ich im Verzeichnis "fc8i386" die Datei "minimal-ks.cfg". Hier schreibe ich folgendes rein:
Danach werfe ich die Installation an:
xm create -c asterisk
Das ganze schaut dann aus, wie eine ganz normale Fedora-Installation, ich habe wieder nur einige Pakete aus "Base" und den YUM installiert. Mehr benötige ich für die weiteren Schritte nicht.
Nachdem die Installation fertig ist fahre ich die DomU mit "halt" herunter und tue ich folgendes:
- Ich ändere als erstes die /etc/xen/asterisk in der Dom0 ab, damit nicht bei jedem Anwerfen der DomU der Installer lädt. Ich habe aus der o.g. Config einfach die "extra"-Zeile gelöscht.
Danach tue ich in der Dom0 folgendes:
lspci eingeben um herauszufinden, welche PCI-ID meine ISDN-Karte hat. Bei mir steht dann:
in /etc/rc.d/rc.local füge ich ein:
modprobe pciback;
echo -n 0000:02:0e.0 > /sys/bus/pci/drivers/pciback/new_slot;
echo -n 0000:02:0e.0 > /sys/bus/pci/drivers/pciback/bind;
damit wird die FCPCI an das PCIBACK-Modul von Xen gebunden, um sie später in der DomU nutzen zu können. Die Dom0 starte ich danach neu.
Nun geht's ans Eingemachte. Ich nehme erneut die /etc/xen/asterisk und füge an:
pci = ['02:0e.0']
Anschließend wird die DomU angeworfen:
xm create -c asterisk
Ich logge mich auf der DomU ein, deaktiviere SELinux und update als erstes den Kernel und installiere den Compiler.
yum -y update kernel-xen
yum -y install mc iptraf tcpdump nmap isdn4k-utils kernel-xen-devel
yum -y groupinstall "Development Tools"
yum -y groupinstall "Development Libraries"
und werfe dann einen Blick in lspci. Bei mir steht hier nun:
Damit ist die Karte schonmal in der DomU. Noch kurz die DomU rebooten, um den aktuellen Kernel am Start zu haben.
Nun compiliere ich das FCPCI-Modul:
cd /usr/src
wget ftp://ftp.avm.de/cardware/fritzcrd.pci/linux/suse.93/fcpci-suse93-3.11-07.tar.gz
tar -xf fcpci-suse93-3.11.07.tar.gz
ich lade mir folgenden Patch herunter:
wget http://mephistopheles.homelinux.org//fcpci/fcpci-suse93-3.11-07-twelter-v2.patch
Danach wird der Patch eingespielt.
patch -p0 < fcpci-suse93-3.11-07-twelter-v2.patch
nun wechsle ich ins Verzeichnis "fritz" und mache ein normales "make". Das Compilieren sollte glatt durchlaufen, ein paar Warnungen hin oder her. Zum Schluss bricht das ganze ab, irgendeine gnu.irgendwas könne nicht geschrieben werden. Macht nix, das benötigte fcpci.ko-Modul finden wir in /usr/src/fritz/src/fcpci.ko. Mehr brauchen wir gar nicht.
Danach tue ich dieses:
modprobe capi
MAKEDEV /dev/capi
insmod /usr/src/fritz/src/fcpci.ko
capiinit
capiinfo zeigt dann auch ganz brav alle B-Kanäle und alles was man für einen erfolgreichen Betrieb der CAPI unter einer DomU braucht. Nun können wir Asterisk und chan_capi (habe Ver. 1.1.1 genommen) installieren.
That's it. Ein Test-Telefonat mit meiner Freundin über 3 Stunden (ja, es ging unter anderem auch um ihr Gewicht und um Schuhe) verlief einwandfrei.
Was noch zu tun ist:
- SELinux hinfriemeln
- Stabilitätstest
- Prioritätsgewichtung gegenüber anderen VMs, damit keine Timing-Probleme entstehen.
Ich hoffe aber, es hat ein wenig geholfen!
Grüße,
Euer Hahni
Ich habe mittlerweile einige Tage damit rumgebracht, eine FritzCard PCI in einer DomU unter XEN ins Rennen zu schicken. Für alle, die nicht wissen, wo sie anfangen sollen, oder ob fcpci mit CAPI in einer DomU tatsächlich funktioniert, hier ein kleines HowTo:
1) Worum geht's?
Die AVM FritzCards sind für ihre eigenartige Treiberunterstützung unter Linux bekannt (es existiert nur ein, nicht mehr gepflegter, Binary-Treiber für SUSE-Linux 9.3). Ich versuche hier zu beschreiben, wie ich es geschafft habe, eine Fritz-Card unter Fedora 8 innerhalb einer paravirtualisierten Maschine unter XEN ins Rennen zu schicken.
2) Ausgangspunkt
Ich habe folgende Hardware und Software genutzt:
Hardware (hatte auf der Arbeit gerade nichts anderes da):
- AMD Sempron 2600
- 1GB RAM
- Asus-Board (Typ ist mir gerade entfallen)
- 40GB-Platte
- Fedora 8 in der Dom0, alle Updates eingespielt und SELinux deaktiviert (dies ist nur ein Quick+Dirty-Howto, erst die Funktion, um die Sicherheit kümmere ich mich später)
- Fedora 8 in der DomU, bislang ohne Updates, nur der Kernel.
3) Vorgehensweise
Man setzte eine Fedora 8-Dom0 mittels Installer (grafisch oder Text ist egal) auf. Ich habe mir angewöhnt, grundsätzlich KEINE Dienste in der Dom0 laufen zu lassen, also muss der Asterisk nebst allen Treibern in der DomU laufen. Die FritzCard muss also vom Host in das Gastsystem durchgereicht werden. Für die Installation wählte ich keine großen Pakete/Paketgruppen aus. Defacto eigentlich nur "Base". Nach erfolgter Installation tat ich folgendes:
yum -y update kernel-xen
danach
yum -y groupinstall "Virtualization"
und für ein paar nützliche Tools:
yum -y install mc iptraf nmap tcpdump
Soviel erstmal zur Dom0.
----
Installation der DomU, um die ISDN-Karte durchzureichen. Früher habe ich meine virtuellen Maschinen immer mit virt-install aufgesetzt. Dabei kommt ein Image-File und eine schlecht dokumentierte .sxp-Config-Datei heraus, die mir persönlich NICHT weitergeholfen hat. Also fange ich vom Anfang an.
1) Erstellen einer Image-Datei für die Asterisk-DomU (2GB reichten bei mir):
dd if=/dev/zero of=/var/xenimages/asterisk bs=1M count=2048
2) Config-File für die Installation der DomU erstellen (ich gehe davon aus, dass das Netzwerk innerhalb der XEN-Umgebung bereits eingerichtet ist und die Installations-RPMS auf einem lokalen FTP-Server vorliegen. Ich habe dazu einfach die F8-DVD in ein Verzeichnis auf unserem internen FTP kopiert und anonymous Zugriff auf das Verzeichnis aktiviert, bei mir heißt es fc8i386).
Ich lege die Datei /etc/xen/asterisk an, die ich mit diesem Inhalt füttere:
Code:
kernel = "/boot/vmlinuz-xen-install"
ramdisk = "/boot/initrd-xen-install"
extra = "text ks=ftp://ip.zum.ftp.server/fc8i386/minimal-ks.cfg"
name = "asterisk"
memory = "256"
disk = [ 'file:/var/xenimages/asterisk,xvda,w', ]
vif = [ 'bridge=virbr0', ]
vcpus=1
Danach kopiere ich von der Fedora8-DVD die Dateien "/images/xen/vmlinuz" und "/images/xen/initrd" in das /boot-Verzeichnis der Dom0 und nenne sie in "vmlinux-xen-install" und "initrd-xen-install" um, ansonsten wird die DomU nicht installieren wollen. Auf dem FTP erstelle ich im Verzeichnis "fc8i386" die Datei "minimal-ks.cfg". Hier schreibe ich folgendes rein:
Code:
install
url --url ftp://ip.zum.ftp.server/fc8i386
Danach werfe ich die Installation an:
xm create -c asterisk
Das ganze schaut dann aus, wie eine ganz normale Fedora-Installation, ich habe wieder nur einige Pakete aus "Base" und den YUM installiert. Mehr benötige ich für die weiteren Schritte nicht.
Nachdem die Installation fertig ist fahre ich die DomU mit "halt" herunter und tue ich folgendes:
- Ich ändere als erstes die /etc/xen/asterisk in der Dom0 ab, damit nicht bei jedem Anwerfen der DomU der Installer lädt. Ich habe aus der o.g. Config einfach die "extra"-Zeile gelöscht.
Danach tue ich in der Dom0 folgendes:
lspci eingeben um herauszufinden, welche PCI-ID meine ISDN-Karte hat. Bei mir steht dann:
Code:
02:0e.0 Network controller: AVM Audiovisuelles MKTG & Computer System GmbH Fritz!PCI v2.0 ISDN (rev 01)
in /etc/rc.d/rc.local füge ich ein:
modprobe pciback;
echo -n 0000:02:0e.0 > /sys/bus/pci/drivers/pciback/new_slot;
echo -n 0000:02:0e.0 > /sys/bus/pci/drivers/pciback/bind;
damit wird die FCPCI an das PCIBACK-Modul von Xen gebunden, um sie später in der DomU nutzen zu können. Die Dom0 starte ich danach neu.
Nun geht's ans Eingemachte. Ich nehme erneut die /etc/xen/asterisk und füge an:
pci = ['02:0e.0']
Anschließend wird die DomU angeworfen:
xm create -c asterisk
Ich logge mich auf der DomU ein, deaktiviere SELinux und update als erstes den Kernel und installiere den Compiler.
yum -y update kernel-xen
yum -y install mc iptraf tcpdump nmap isdn4k-utils kernel-xen-devel
yum -y groupinstall "Development Tools"
yum -y groupinstall "Development Libraries"
und werfe dann einen Blick in lspci. Bei mir steht hier nun:
Code:
00:00.0 Network controller: AVM Audiovisuelles MKTG & Computer System GmbH Fritz!PCI v2.0 ISDN (rev 01)
Damit ist die Karte schonmal in der DomU. Noch kurz die DomU rebooten, um den aktuellen Kernel am Start zu haben.
Nun compiliere ich das FCPCI-Modul:
cd /usr/src
wget ftp://ftp.avm.de/cardware/fritzcrd.pci/linux/suse.93/fcpci-suse93-3.11-07.tar.gz
tar -xf fcpci-suse93-3.11.07.tar.gz
ich lade mir folgenden Patch herunter:
wget http://mephistopheles.homelinux.org//fcpci/fcpci-suse93-3.11-07-twelter-v2.patch
Danach wird der Patch eingespielt.
patch -p0 < fcpci-suse93-3.11-07-twelter-v2.patch
nun wechsle ich ins Verzeichnis "fritz" und mache ein normales "make". Das Compilieren sollte glatt durchlaufen, ein paar Warnungen hin oder her. Zum Schluss bricht das ganze ab, irgendeine gnu.irgendwas könne nicht geschrieben werden. Macht nix, das benötigte fcpci.ko-Modul finden wir in /usr/src/fritz/src/fcpci.ko. Mehr brauchen wir gar nicht.
Danach tue ich dieses:
modprobe capi
MAKEDEV /dev/capi
insmod /usr/src/fritz/src/fcpci.ko
capiinit
capiinfo zeigt dann auch ganz brav alle B-Kanäle und alles was man für einen erfolgreichen Betrieb der CAPI unter einer DomU braucht. Nun können wir Asterisk und chan_capi (habe Ver. 1.1.1 genommen) installieren.
That's it. Ein Test-Telefonat mit meiner Freundin über 3 Stunden (ja, es ging unter anderem auch um ihr Gewicht und um Schuhe) verlief einwandfrei.
Was noch zu tun ist:
- SELinux hinfriemeln
- Stabilitätstest
- Prioritätsgewichtung gegenüber anderen VMs, damit keine Timing-Probleme entstehen.
Ich hoffe aber, es hat ein wenig geholfen!
Grüße,
Euer Hahni
Zuletzt bearbeitet: