[Openhorst-Firmware] Projekt Horstbox mit Asterisk 1.6 od. 1.4 (kein analog)

Nein! Wie groß ist den das gepackte main-fs und das zImage?
 
Hier ein paar Screenshots vom OpenHorst!
 

Anhänge

  • OpenHorst-1.png
    OpenHorst-1.png
    52.8 KB · Aufrufe: 143
  • OpenHorst-2.png
    OpenHorst-2.png
    41.8 KB · Aufrufe: 117
  • OpenHosrt-4.png
    OpenHosrt-4.png
    47.6 KB · Aufrufe: 109
  • OpenHorst-3.png
    OpenHorst-3.png
    45.2 KB · Aufrufe: 109
Nein! Wie groß ist den das gepackte main-fs und das zImage?

main-fs 9510912
zImage 987080

Sind aus den aktuellen Quellen gebaut, iax2 und macro zusätzlich, ael und skinny raus.
Kompiliert auf frisch aktualisiertem Debian Lenny.
 
Sieht es bei dir so aus?

if [ `stat --printf '%s' horst-image-kernel-ast16.dat` -gt 16766976 ]; then \
echo "Update file for GUI update is too big!!!"; \
exit 1; \
fi
rm -f horst-image-fordat-kernel-ast16.tar.gz
rm -f horst-image.tar.gz horst-image.dat
ln -sf horst-image-kernel-ast16.tar.gz horst-image.tar.gz
ln -sf horst-image-kernel-ast16.dat horst-image.dat
rm image/version-info

Dann kannst du es ignorieren.

Von der Größe sieht es gut aus. Maximal dürf das main-fs 13631488 gross sein. Also hast noch platz :)
 
In der letzten SVN Version befindet sich jetzt ein kleiner DNS Server. => dnsmasq

Die neue Version kommt demnächst ...
 
Das wäre mit einem sip reload über einen cron-job einzufangen.
Jau, als Notlösung. Asterisk hängt halt dann während der DNS-Lookups, wenn es kene Netzverbindung gibt. Sowohl beim Start als auch bei späteren Sip-Reloads.

...ich hätte ganz gerne einen vollen Nameserver (nicht nur passthrough) laufen. Asterisk macht bei einem Ausfall der Nameserver nichts mehr. Auch die internen Verbindungen und Festnetz funktionieren nach einem DNS Ausfall nicht mehr.
Ich habe jetzt Skripte geschrieben, welche die /etc/hosts updaten, wenn sich die IP-Adressen der darin aufgeführten Hostnamen ändern. Schlägt der Lookup für einen Hostnamen fehl, dann bleiben seine Adressen unverändert.

Skript host-create liest eine Datei im /etc/hosts-Format von Stdin und gibt eine Neue mit upgedateten Adressen auf Stdout aus.
Skript hosts-update ruft hosts-create und ersetzt /etc/hosts durch eine neue Version, falls sich IP-Adressen geändert haben.

Das Skript host-create kann allerdings nicht das nslookup von BusyBox benutzen, weil dieses einige Probleme hat (siehe Kommentare am Anfang von hosts-update). Stattdessen verwendet es das Programm 'dnsip' aus der djbdns-Software (public Domain). Das läßt sich bei OpenWrt auswählen und erstellen; hab das Binary prophylaktisch hier mal angehängt (für Horst, libgcc_s.so.1, libc.so.0, ld-uClibc.so.0). Es funktioniert also auch mit der neuen Horstbox-Firmware, auf den sich dieser Thread bezieht.
Nachtrag: dnsip verwendet standardmäßig die in /etc/resolv.conf angegebenen Nameserver. Dies läßt sich allerdings mit einer Umgebungsvariable DNSCACHEIP ändern.


In der letzten SVN Version befindet sich jetzt ein kleiner DNS Server. => dnsmasq
Für das Asterisk-Hängt-Problem hilft übrigens der dnsmasq nach meiner Erfahrung nichts, weil auch der unter Umständen bis zum Timeout wartet, wenn die Netzwerkverbindung fehlt. Erst dann meldet er sich bei Asterisk zurück. Man kann natürlich die Sip-Server statisch in die /etc/hosts eintragen. Dann findet sie der dnsmasq sofort. Aber dann braucht man den dnsmasq nicht, weil die Resolver-Routine in der uClib sowieso erst die /etc/hosts konsultiert.
 

Anhänge

  • dnsip.gz
    12.1 KB · Aufrufe: 6
  • hosts-create.txt
    4.8 KB · Aufrufe: 19
  • hosts-update.txt
    452 Bytes · Aufrufe: 9
Zuletzt bearbeitet:
Damit ich die Vorgänge richtig verstehe, Konfigurationen werden in der originalen Firmware, wie auch in OpenHorst im nvram abgespeichert. Beim Booten werden die Werte aus dem nvram gelesen und daraus eine Konfiguration erstellt. Bei OpenHorst ist die Telefonie ausgeklammert, d.h. dies wird nicht ins nvram geschrieben. Wie wird die Konfiguration dann persistent gemacht?
 
... Wie wird die Konfiguration dann persistent gemacht?
Da läuft dauernd dieser nvramd-Daemon, welcher wahrscheinlich das Lesen und Schreiben cached und ggf. die nvram-Werte flasht. Abfrage und Setzen von nvram-Werte geschieht mit dem nvram-Programm, welches mit dem nvramd kommuniziert (dies war jetzt aus dem Kopf, ohne das nochmals nachzuprüfen; bitte ggf. korrigieren).
 
J Man kann natürlich die Sip-Server statisch in die /etc/hosts eintragen. Dann findet sie der dnsmasq sofort. Aber dann braucht man den dnsmasq nicht, weil die Resolver-Routine in der uClib sowieso erst die /etc/hosts konsultiert.

Da habe ich was in Erinnerung, das kann man einstellen glaube ich. Wenn dns dann ip vom dns, sonst aus der hosts.

Das muss ich raussuchen, denn das würde genau das Problem lösen.
 
Da habe ich was in Erinnerung, das kann man einstellen glaube ich. Wenn dns dann ip vom dns, sonst aus der hosts.

A) Ich hab da die letzten Tage auf der Horstbox ziemlich viel rumprobiert. Laut meinen Tests:

Normale Programme wie Asterisk (naja, so ganz normal ist der eher nicht :)) benützen die Resolver-Routine in der uClib. Üblicherweise kann man in der /etc/resolv.conf mittels "order ..." angeben, was alles zur Namensauflösung benutzt wird (DNS-Lookup, /etc/hosts), und in welcher Reihenfolge. Bei der uClib scheint es jedoch das "order ..." nicht zu geben. Die Reihenfolge ist festgelegt auf 1. /etc/hosts und 2. die in /etc/resolv.conf aufgeführten Nameserver.

Der dnsmasq kann auch hosts-Dateien verarbeiten, davon sogar mehrere, wenn man ihn so konfiguriert. Standardmäßig durchsucht er /etc/hosts, aber das läßt sich ausschalten. Wenn er hosts-Dateien benützt, dann schaut er bei ihnen zuerst nach. Wenn er dort nichts findet, dann fragt er die ihm bekannten Nameserver (standardmäßig die aus resolv.conf).


B) Der Asterisk V1.6.0 hängt immer dann, wenn er eine Auflösung Hostname->IP-Adresse macht, und wenn die Antwort auf sich warten läßt.

Die vom Asterisk benutzte Resolver-Funktion in der uClib sucht zuerst in der /etc/hosts. Das geht schnell, und wenn sie da was findet, ist alles in Butter.

Ansonsten kontaktiert die uClib die in /etc/resolv.conf aufgeführten Nameserver. Wenn ein kontaktierter Nameserver schnell antwortet, dann ist auch alles ok.

Ist der Nameserver nicht erreichbar, dann gibt es zwei Fälle: 1. von irgendeinem Router unterwegs, der es weiss, wird schnell via ICMP gemeldet "No route to host". Dann ist es insofern gut, weil die Resolver-Funktion schnell die Kontrolle an den Asterisk zurückgibt, mit dem Status "nicht gefunden". 2. Oder es gibt einen Timeout, dann hängt halt der Asterisk bis zum Timeout.


C) Diese Geschichte mit dem Timeout betrifft auch dnsmasq. Wenn dnsmasq die gesuchte Adresse in seinem Cache hat, dann antwortet es sehr schnell. Cache-Einträge werden aber rausgeschmissen, wenn ihre Time-To-Live-Zeit abgelaufen ist. Die zu verwendene TTL-Zeit wird dabei vom Upstream-Server mitgemeldet.

Ist die Adresse nicht im Cache, dann muss dnsmasq seinen Upstream-Server fragen. Ist dieser nicht erreichbar, dann wartet dnsmasq ggf. bis zu einem Timeout. Und falls entsprechend konfiguriert, fragt dnsmasq vielleicht einen zweiten Nameserver. Ist der auch nicht erreichbar, wartet dnsmasq also doppelt. Und Asterisk wartet auf die Antwort von dnsmaq und hängt solange.

Der dnsmasq kann übrigens bei mehreren Nameservern so eingestellt werden, dass er alle gleichzeitig fragt. Dann gibts die Timeout-Wartezeit wohl nur einmal.

D) Die einzige Lösung, die mir einfällt, mit der die Namensauflösung garantiert schnell abläuft, ist: die betroffenen Hostnamen alle in die /etc/hosts eintragen.

In seltenen Fällen ändern die SIP-Provider aber mal ihre IP-Adressen (ist mir einmal bei Betamax passiert). Deswegen ist es gut, wenn die /etc/hosts ab und zu upgedated wird, und dazu gibts diese Skripte aus meinem Vorposting.
 
Dann ignorire ich obige Meldung mal!

So, Meldung ignoriert. Horst läuft, aber

mnt/asterisk fehlt komplett, bekomme ich zu Fuß hin.
/var/lib/asterisk/keys fehlt
/var/lib/asterisk hat Schreibschutz, wie umgehe ich den?

Wohin müssen die horst-image-... Dateien?

Weiterwurstelnd

Karl-Heinz
 
Hi Karl-Heinz,

die horst-image-.. Dateien sind für den Original Horstbox Updater.
Wenn du schon main-fs und zImage geflasht hast bist du fertig. System läuft .. :)

/var/lib/asterisk/keys fehlt
/var/lib/asterisk hat Schreibschutz, wie umgehe ich den?

Kommt drauf an was du machen willst. Möglichkeit
1) mount -t tmpfs tmpfs /var/lib/asterisk/ -o size=1024k (Nach Reboot ist das weg)

2) in der "configs/links" oder per script ein link auf /mnt/asterisklib legen. (Nach Reboot ist das noch da)
 
2) in der "configs/links" oder per script ein link auf /mnt/asterisklib legen. (Nach Reboot ist das noch da)

Einfacher:

in build_env/configs/skel/... samt den benötigten keys hinterlegen. Dann kommt's automatisch an den richtigen Platz.

USB geht bei mir vermutlich auch nicht, komme nicht an den Stick, oder in welchem Verzeichnis steckt er?
Laut /etc/usbmount/usbmount.conf wird der nach /media/usb0 gemountet, nur das Verzeichnis /media/ gibt es schon nicht.

Wo werden denn die Files festgelegt, die nach /var/lib/asterisk/modules sollen?

Über skripts/asterisk160.mk geht es nicht.

Die von mir benötigte chan_iax2.so kommt nicht rüber, obwohl sie erstellt wurde. Trifft auch auf anderte erstelle xxx.so zu.
 
Stimmt ist auch eine Möglichkeit :)

Für USB-Storage musst du noch folgende Module laden
/lib/modules/scsi_mod.ko
/lib/modules/scsi_tgt.ko
/lib/modules/scsi_wait_scan.ko
/lib/modules/usb-storage.ko
/lib/modules/sd_mod.ko

mount /dev/sda1 /mnt/usb/

und fertig ... :)

Die Automatisierung steht noch auf meiner ToDo Liste ...
 
Ups, hab vergessen dir noch die andere Frage zu beantworten. Im skripts/asterisk160.mk werden die meisten module die erstellt worden sind, wieder gelöscht.

Gruss
 
Ups, hab vergessen dir noch die andere Frage zu beantworten. Im skripts/asterisk160.mk werden die meisten module die erstellt worden sind, wieder gelöscht.

Hallo cstux,

genau das wars. Man soll halt nicht denken. Ich hatte es zunächst genau andersherum gedacht, was ich nicht brauche wird auskommentiert.

iax2 funktioniert, mit dundi bin ich noch am kämpfen, dem fehlt anscheinend noch ein Paket. Das sollte sich aber lösen lassen.



Besten Dank für deine Hilfe!

Karl-Heinz
 
Hi Marian1982,

bisher bleibt die Asterisk Konfiguration per Hand. (d.h. der Telefonie Reiter wird nicht unterstützt).

Ich werde erstmal die alten Punkte wie System, Netzwerk migrieren.

Voicemail via E-Mail zu versenden sollte möglich sein. Hier fehlt nur ein mailer :) evtl. reicht der sendmail Dienst von der Busybox aus. Werd ich die Tage mal testen.

vielleicht kann man einfach sagen man nimmt die Asterisk-GUI und konfiguriert dann alles was PBX angeht über diese - oder ist das zu aufwändig?
 
iax2 funktioniert, mit dundi bin ich noch am kämpfen, dem fehlt anscheinend noch ein Paket. Das sollte sich aber lösen lassen.

So, jetzt läuft iax2 und dundi, zumindest die Anzeige.
Gespräche muss ich noch versuchen.


Für beides muss man in der Datei ../scripts/asterisk160.mk:

--without-ssl \ in --with-ssl \ ändern

zusätzlich braucht man ein # vor
# rm -f $(ROOTFS)/usr/lib/asterisk/modules/chan_iax2.so
# rm -f $(ROOTFS)/usr/lib/asterisk/modules/res_crypto.so

für dundi noch zusätzlich
# rm -f $(ROOTFS)/usr/lib/asterisk/modules/pbx_dundi.so

Nachtrag:

Funktioniert einwandfrei. Ich dachte zuerst, dass man evtl. die app_md5.so noch braucht. Aber die gibt es in Asterisk 1.6 nicht mehr. Die heisst jetzt func_md5.so und wird automatisch installiert.

Die Zeile für app_md5.so kann man daher aus asterisk160.mk löschen.
 
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.