====== Asterisk auf die FritzBox - HowTo ======
Bisher scheint Asterisk die beste Lösung für die perfekte Erweiterung der Fritzbox zu sein. Wir nutzen das schon bestehende Add-On von [[http://spblinux.de/fbox/]], da es Asterisk für die FritzBox aufbereitet zur Verfügung stellt.
===== Einführung =====
Wenn man keine besonderen Zusätze, z.B. Voicemail, für Asterisk benötigt, dann kann man auf das meiste der Anleitung verzichten. Das Installations- und Konfigurationsskript erledigt dann alles.
FIXME Hier sollte noch was hin!
Unsere Änderungen sind im Hinblick auf das einfache Installieren einer neuen Asterisk-Software entstanden. Dabei ist uns klar, daß auch wir einen Kompromiss eingehen, den jemand anderes nicht so machen würde. Wir sind offen für Vorschläge, die unsere HowTo und die Asterisk Nutzung verbessern. Dafür haben wir eine [[avmfritzboxasterisk_diskussion|Diskussion]] angelegt, in der man aber auch für die verschienen Bereiche ausführlichere Anmerkungen schreiben kann.
===== Gründe für die Änderungen =====
Die Standardinstallation kann nicht mit dem Voicemail Modul für Asterisk umgehen. Das liegt an der Direktive, die der Maintainer sich auferlegt hat. Es will, daß man Asterisk mit möglichst wenig Umständen installieren kann.
Voicemail benötigt aber ein Unix Dateisystem, in dem es die Aufnahmen speichern kann. Desweiteren ist in der aktuellen Version das //tmp//-Verzeichnis des Asterisk-Root ins RamFS der Fritzbox gelinkt. Da es für den Versand der Mails benötigt wird, könnte es "vollaufen" und damit die FirtzBox "lahmlegen".
===== Vorbereitung =====
Das wichtigste ist, daß man sich einen USB-Sick in mittlerer Größe besorgt. Mit 64 MB oder 128 MB reichen sicher aus, doch gibt es sie kaum noch auf dem Markt. Man sollte sich nach der gewünschten Größe der Mailbox richten.
:!: Da der USB-Stick in dieser Konfiguration öfters beschrieben wird, sollte man darauf achten, regelmäßig die Daten zu sichern. Die Schreibzyklen eines Sticks sind stark begrenzt!
Den USB-Stick muß man partitionieren:
- Am Anfang des USB-Sticks **muß** eine primäre vFAT Partition sein. (Größe: 32 MB)
- Der Rest wird zu einer primären ext2 Partition.
- Erstellen der Dateisysteme
Da dieses auf einem normalen PC gemacht wird, kann man auch gleich die aktuelle [[http://spblinux.de/fbox/cfg_asterisk|Asterisk-Installationsdatei]] auf die FAT-Partition speichern.
Jetzt kann man den USB-Stick in die Fritzbox stecken, die diesen auch gleich mountet.
===== Installation =====
==== Standard ====
Für die Installation muß man sich per //telnet// auf der FritzBox anmelden. Dazu muß man diesen Zugang erstmal [[avmfritzbox_howto#telnet|aktivieren]].
Nach dem Einloggen wechselt man in das Verzeichnis ''/var/media/ftp/FlashDisk-Partition-0-1/''((Das Verzeichnis wird von der FritzBox automatisch erstellt und ist von dem USB-Stick abhängig. Es kann zu Namensabweichungen kommen)) und ruft das Script zur Installation auf und übergibt den Parameter für USB:
chmod +x cfg_asterisk
./cfg_asterisk usb_install
Nun ist //asterisk// fertig installiert und automatisch gestartet.
==== Speziell ====
Nun kommen die Änderungen für die flexiblere Nutzung.
Zum Einrichten haben wir eine Skript geschrieben, daß entweder auf der Konsole Zeile für Zeile ausgeführt, oder in eine Datei auf dem USB-Stick abgespeichert und ausgeführt werden kann.
#!/bin/sh
## Asterisk Stoppen!
....
## Ext2 Partition einbinden
mkdir /var/ext
mount /dev/sda2 /var/ext
## Benötigte Verzeichnisse erstellen
# Die bezeichnungen orientieren sich zum Asterisk Root
mkdir /var/ext/asterisk_root
mkdir /var/ext/asterisk_tmp
mkdir /var/ext/asterisk_vartmpasterisk
mkdir /var/ext/asterisk_spool
## Kopieren der Konfigurationsdateien
# Das macht das cfg_asterisk auch :(
# Es sind die Dateien, die im etc des Asterisk-Root verlinkt sind.
cp -p /var/asterisk/etc/*.conf /var/ext/asterisk_vartmpasterisk/
cp -p
## Unmounten der Asterisk-Mounts
# Ein Kopieren ohne umount führt in ein Loop
...
## "Kopieren" des gemounteten Squashfs
# Der cp Befehl kann nichts, daher eine tar-pipe
tar cf - /var/asterisk/* | tar xf /var/ext/asterisk_root/
## Startskript erstellen
## debug.cfg eintragen
## Rebooten
==== Startskript ====
===== Konfiguration =====
===== nrls Text =====
Die Fritzbox ist eine gute Grundlage für den Aufbau einer kleinen Asterisk basierten Telefonanlage. [[http://spblinux.de/fbox/|spblinux]] hat eine umfangreiche Erweiterung für die Fritzbox erstellt die ein auf der openwrt-Version basiertes Asterisk installiert.
Die Installation erfolgt wahlweise in eine RAM-Disk oder auf ein USB-Stick. Bei der USB-Stick Installation wird davon ausgegangen, dass die erste Partition des USB-Sticks eine FAT Partition ist und dass keine ext2 Partition vorhanden ist. Außerdem wird aus Kompatibilitätsgründen zu der älteren FritzBox-Firmware eine chroot Umgebung erstellt.
Dieses chroot wird als squashfs-lzma in eine RAM-Disk geladen und gemountest. Die benötigten Verzeichnisse werden mit ''-o bind'' eingebunden.
Diese Konstruktion führt jedoch bei der Verwendung der voicemail-Lib von Asterisk zu ein paar Problemen:
* Die RAM-Disk benötigt Speicher der für Asterisk+Voicemail nicht mehr zur Verfügung steht
* Voicemail benötigt ein spool-Verzeichnis, dass lock-Files unterstützt (unter FAT nicht möglich).
* Voicemail legt zu verschickende Mails unter ''/tmp'' an. Dieses Verzeichnis muß vorhanden sein und über genügend Platz verfügen
Eine Lösung für all diese Probleme bietet eine eigene ext2-Partition auf dem USB-Stick. Es darf jedoch nicht die erste Partition sein, da sonst die Skripte der Fritz-Box alle Daten beim einbinden des Sticks löschen.
Der Stick sollte also folgendermaßen partitioniert werden:
Device Boot Start End Blocks Id System
/dev/sda1 1 978 250352 e W95 FAT16 (LBA)
/dev/sda2 979 1956 250368 83 Linux
Die FAT-Partition kann natürlich auch kleiner gewählt werden.
===Asterisk Installation===
Zur Vorbereitung der Installation wird der USB-Stick nach der Partitionierung auf einem Linux-Rechner gemountet:
mount /dev/sda2 /media/mnt
außerdem benötigen wir noch ein passendes unsquashfs-tool:
cd /tmp
wget http://spblinux.de/fbox/unsquashfs-lzma.x86
chmod +x unsquashfs-lzma.x86