Fonera 2.0n e Asterisk – PARTE 4
Finalmente in questa quarta puntata arriviamo al nocciolo della questione:
installiamo asterisk sulla Fonera 2.0n
Dopo aver infatti predisposto tutto quanto necessario, ora possiamo passare all’installazione di asterisk 1.4.
La scelta di installare asterisk 1.4 e non 1.6 deriva dal fatto che i pacchetti presenti nel repository per asterisk 1.6 sono molto pochi e carenti di diversi moduli che personalmente ritengo indispensabili.
Installare Asterisk 1.4
Per installare Asterisk 1.4 sulla Fonera , dovremo connetterci in ssh con l’utilizzo di un terminale come Putty, loggandoci come utente root e procedere in questo modo:
opkg update opkg -dest usb install asterisk14
Installare moduli aggiuntivi
Installiamo ora i moduli aggiuntivi relativi alla voicemail ed i suoni:
opkg -dest usb install asterisk14-voicemail asterisk14-sounds
Suoni in italiano
Se vogliamo possiamo ora anche installare i suoni in italiano.
Sarà necessario scaricare i suoni in italiano da QUI e poi metterli nella cartella /var/mounts/Disc-A2/usr/lib/asterisk/sounds . Per fare ciò dovremo eseguire da terminale i seguenti comandi:
cd /tmp/mounts/Disc-A2 wget http://www.voip.ammdomus.it/pub/asterisk-core-sounds-it-gsm-1.4.15-mm20090405.tar.gz tar xzvf ./asterisk-core-sounds-it-gsm-1.4.15-mm20090405.tar.gz -C ./usr/lib/asterisk/sounds/ rm asterisk-core-sounds-it-gsm-1.4.15-mm20090405.tar.gz
Per far si che asterisk usi di default i suoni in italiano è necessario che nel file sip.conf (che si trova in /var/mounts/Disc-A2/etc/asterisk )si modifichi la seguente riga:
;language=en
togliendo il ; e mettendo it al posto di en, come di seguito:
language=it
Modifica file di configurazione
Avendo installato asterisk su chiavetta USB dobbiamo ora correggere i percorsi di default di asterisk al fine di permetterne la corretta esecuzione.
asterisk.conf
Il primo file da modificare sarà asterisk.conf che si trova nella cartella:
/var/mounts/Disc-A2/etc/asterisk/asterisk.conf
Questi sono i percorsi inseriti di default e che troverete nel file asterisk.conf
[directories] astetcdir => /etc/asterisk astmoddir => /usr/lib/asterisk/modules astvarlibdir => /usr/lib/asterisk astdatadir => /usr/lib/asterisk astagidir => /usr/lib/asterisk/agi-bin astspooldir => /var/spool/asterisk astrundir => /var/run astlogdir => /var/log/asterisk
Dobbiamo modificare i percorsi in asterisk.conf che puntano a dei riferimenti locali, con il nuovo percorso sulla chiavetta USB, come di seguito:
[directories] astetcdir => /var/mounts/Disc-A2/etc/asterisk astmoddir => /var/mounts/Disc-A2/usr/lib/asterisk/modules astvarlibdir => /var/mounts/Disc-A2/usr/lib/asterisk astdatadir => /var/mounts/Disc-A2/usr/lib/asterisk astagidir => /var/mounts/Disc-A2/usr/lib/asterisk/agi-bin astspooldir => /var/mounts/Disc-A2/var/spool/asterisk astrundir => /var/mounts/Disc-A2/var/run astlogdir => /var/mounts/Disc-A2/var/log/asterisk
Per i più pigri QUI potete scaricare direttamente il file asterisk.conf modificato come sopra.
/etc/init.d/asterisk
Anche per questo file (che si trova nella cartella: /var/mounts/Disc-A2/etc/init.d/asterisk ) sarà necessario inserire i riferimenti alla chiavetta USB come di seguito indicato.
Inoltre volendo poi avviare asterisk al boot della fonera, ed essendo asterisk installato su USB è stato inserito un controllo che prima di eseguire asterisk verifica se la chiavetta USB è stata correttamente montata (operazione che di solito avvviene in 5-6 secondi).
FILE ORIGINALE
#!/bin/sh /etc/rc.common # Copyright (C) 2008 OpenWrt.org START=50 DEST= DEFAULT=$DEST/etc/default/asterisk OPTIONS="" start() { [ -f $DEFAULT ] && . $DEFAULT [ -d $DEST/var/run ] || mkdir -p $DEST/var/run [ -d $DEST/var/log/asterisk ] || mkdir -p $DEST/var/log/asterisk [ -d $DEST/var/spool/asterisk ] || mkdir -p $DEST/var/spool/asterisk [ -d /var/spool/asterisk ] || mkdir -p /var/spool/asterisk [ -h $DEST/usr/lib/asterisk/astdb ] || ln -sf /var/spool/asterisk/astdb $DEST/usr/lib/asterisk/astdb $DEST/usr/sbin/asterisk $OPTIONS } stop() { [ -f $DEST/var/run/asterisk.pid ] && kill $(cat $DEST/var/run/asterisk.pid) >/dev/null 2>&1 }
FILE MODIFICATO
#!/bin/sh /etc/rc.common # Copyright (C) 2006 OpenWrt.org START=97 DEST=/var/mounts/Disc-A2 DEFAULT=$DEST/etc/default/asterisk OPTS=-vvvg start() { rdate -s time.inrim.it echo "Tentativo di avvio "$(date) >> /var/asterisk.boot CONTA=0 while [ ! -x $DEST/usr/sbin/asterisk ] && [ $CONTA -le 30 ] do let CONTA++ sleep 1 done if [ $CONTA -gt 30 ]; then echo "Time Out raggiunto: $CONTA sec " >> /var/asterisk.boot echo "Asterisk non avviato! "$(date) >> /var/asterisk.boot exit 1 fi echo "Montata USB in $CONTA tentativi" >> /var/asterisk.boot [ -f $DEFAULT ] && . $DEFAULT [ -d $DEST/var/run ] || mkdir -p $DEST/var/run [ -d $DEST/var/log/asterisk ] || mkdir -p $DEST/var/log/asterisk [ -d $DEST/var/spool/asterisk ] || mkdir -p $DEST/var/spool/asterisk [ -d /var/spool/asterisk ] || mkdir -p /var/spool/asterisk export LD_LIBRARY_PATH=/lib:/usr/lib:$DEST/usr/lib:$DEST/lib [ -h $DEST/usr/lib/asterisk/astdb ] || ln -sf /var/spool/asterisk/astdb $DEST/usr/lib/asterisk/astdb $DEST/usr/sbin/asterisk $OPTS & echo "Asterisk avviato "$(date) >> /var/asterisk.boot } stop() { [ -f $DEST/var/run/asterisk.pid ] && kill $(cat $DEST/var/run/asterisk.pid) >/dev/null 2>&1 echo "Fermato "$(date) >> /var/asterisk.boot }
Sempre per i pigri QUI il file modificato.
Avvio automatico di Asterisk
Per far sì che asterisk si avvii correttamente ed in automatico quando riavviamo la Fonera, dovremo copiare sulla Fonera alcuni file presenti sulla chiavetta USB.
mkdir /etc/default mkdir /etc/asterisk cp /var/mounts/Disc-A2/etc/default/asterisk /etc/default cp /var/mounts/Disc-A2/etc/init.d/asterisk /etc/init.d cp /var/mounts/Disc-A2/etc/asterisk/asterisk.conf /etc/asterisk ln -s /etc/init.d/asterisk /etc/rc.d/S97asterisk
A questo punto se abbiamo fatto tutto correttamente potremo riavviare la Fonera digitando da terminale il comando:
reboot
Se tutto è stato eseguito correttamente al riavvio della Fonera, asterisk dovrebbe essere partito in automatico.
Per verificare ciò basterà verificare i processi in esecuzione digitando il comando
ps
Verrà visualizzata tutta la lista dei processi attualmente in esecuzione sulla Fonera. Se fra questi compare anche asterisk, significa che è stato regolarmente avviato con l’avvio della Fonera.
Accedere alla linea di comando di Asterisk
Se tutto è stato eseguito correttamente e Asterisk si avvia in automatico al boot, possiamo riconnetterci alla console di asterisk digitando:
asterisk –r
e possiamo anche specificare il livello di verbosità con l’opzione v
asterisk -rvvvv
con più “v” otterremo più informazioni dalla console sulle attività, sullo stato e sugli eventuali errori.
Una volta entrati nella console di asterisk, potremo avere una lista dei comandi disponibili digitando:
help
ed eventualmente digitando
help nome_comando
per avere un aiuto di dettaglio sul comando digitato.
Directory usate da Asterisk
Di seguito elenchiamo le principali directory utilizzate da Asterisk sulla Fonera 2.0n:
/var/mounts/Disc-A2/etc/asterisk: contiene tutti i file di configurazione che riguardano Asterisk.
NOTA: Ricordiamo che alcuni file conf sono stati copiati in locale sulla Fonera come visto in precedenza ai fini dell’avvio automatico di asterisk al boot
/var/mounts/Disc-A2/usr/lib/asterisk/modules: contiene tutti i moduli di Asterisk. In questa cartella vi sono le varie applicazioni, codec, tipi di canale supportati da Asterisk.
/var/mounts/Disc-A2/usr/lib/asterisk/moh: cartella che contiene gli mp3 da usare come musica d’attesa.
/var/mounts/Disc-A2/usr/lib/asterisk/sounds: contiene tutti i file sonori usati da asterisk per comporre le frasi e fornire i menu vocali all’utente. Contiene anche i file registrati da asterisk.
/var/mounts/Disc-A2/var/log/asterisk: contiene i log di asterisk
Nella prossima puntata vedremo come realizzare una configurazione di base con alcuni interni e provider voip per iniziare ad utilizzare il nostro Fonera IP PBX
Ciao! Ti ringrazio tantissimo per la guida!
Ho seguito tutti i passi, ma quando eseguo:
asterisk –r
mi compare l’errore:
-ash: -ash:: not found
quest la lista dei processi attivi:
PID USER VSZ STAT COMMAND
1 root 1992 S init
2 root 0 SWN [ksoftirqd/0]
3 root 0 SW [watchdog/0]
4 root 0 SW< [events/0]
5 root 0 SW< [khelper]
6 root 0 SW< [kthread]
21 root 0 SW< [kblockd/0]
25 root 0 SW< [khubd]
38 root 0 SW< [kswapd0]
39 root 0 SW [pdflush]
40 root 0 SW [pdflush]
41 root 0 SW< [aio/0]
53 root 0 SW [mtdblockd]
205 root 0 SWN [jffs2_gcd_mtd6]
217 root 1992 S logger -s -p 6 -t
218 root 1992 S init
221 root 1992 S init
337 root 2004 S syslogd -C16
339 root 1984 S klogd
350 root 1144 S /sbin/hotplug2 –override –persistent –max-children
656 root 0 SW< [dwc_otg]
678 root 0 SW< [scsi_eh_0]
679 root 0 SW< [usb-storage]
1511 root 1184 S /usr/bin/miniupnpd -i eth0.2 -a 192.168.10.1 -p 5000
1746 nobody 3228 S avahi-daemon: running [Fonera.local]
1892 root 1968 S /sbin/fonstated -D
1925 root 1984 S < /sbin/watchdog -t 5 -F /dev/watchdog
1961 root 1724 S /sbin/mountd
1975 root 4476 S /usr/bin/lua /Apps/lucid
1992 root 1940 S /usr/sbin/dropbear -F -p 22
2003 root 3840 S N /bin/smbd -D
2009 root 1408 S /sbin/onlined
2089 root 3180 S /bin/nmbd
2101 root 0 SW /dev/null &
2407 root 3196 S /usr/bin/lua /etc/fonstated/Offline
2439 root 1988 S sh -c /etc/fonstated/RestartDnsmasq
2440 root 2080 S /bin/sh /etc/fonstated/RestartDnsmasq
2458 root 2004 R udhcpc -n -q -R -s /bin/true -t 1 -i eth0.2
2460 root 1992 R ps
Ti ringrazio tantissimo.
Enrico
Aggiungo quelli mancanti:
2101 root 0 SW< [kjournald]
2144 root 20564 S /var/mounts/Disc-A2/usr/sbin/asterisk -vvvg
2148 root 20564 S /var/mounts/Disc-A2/usr/sbin/asterisk -vvvg
2149 root 20564 S /var/mounts/Disc-A2/usr/sbin/asterisk -vvvg
2156 root 20564 S /var/mounts/Disc-A2/usr/sbin/asterisk -vvvg
2171 root 20564 S /var/mounts/Disc-A2/usr/sbin/asterisk -vvvg
2172 root 20564 S /var/mounts/Disc-A2/usr/sbin/asterisk -vvvg
2173 root 20564 S /var/mounts/Disc-A2/usr/sbin/asterisk -vvvg
2174 root 20564 S /var/mounts/Disc-A2/usr/sbin/asterisk -vvvg
2175 root 20564 S /var/mounts/Disc-A2/usr/sbin/asterisk -vvvg
2176 root 20564 S /var/mounts/Disc-A2/usr/sbin/asterisk -vvvg
2177 root 20564 S /var/mounts/Disc-A2/usr/sbin/asterisk -vvvg
2178 root 20564 S /var/mounts/Disc-A2/usr/sbin/asterisk -vvvg
2179 root 20564 S /var/mounts/Disc-A2/usr/sbin/asterisk -vvvg
2180 root 20564 S /var/mounts/Disc-A2/usr/sbin/asterisk -vvvg
2181 root 20564 S /var/mounts/Disc-A2/usr/sbin/asterisk -vvvg
2182 root 20564 S /var/mounts/Disc-A2/usr/sbin/asterisk -vvvg
2183 root 20564 S /var/mounts/Disc-A2/usr/sbin/asterisk -vvvg
2184 root 20564 S /var/mounts/Disc-A2/usr/sbin/asterisk -vvvg