Kernel Modul erstellen... HELP!

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

Antworten
inspire
Beiträge: 120
Registriert: 16.09.2009, 07:41

Kernel Modul erstellen... HELP!

Beitrag von inspire » 21.09.2009, 11:20

Moin Zusammen!

Ich versuche gerade, ein Kernel Modul für die Homematic an den Start zu kriegen. Konkret geht es um ein TUN Device.
Die Toolchain habe ich kompiliert bekommen, dirch seiner Anleitung sei Dank! Die dort generierte Software startet auch, jedoch quengelt sie nach dem TUN Device. Jetzt könnte man das ja einersteits in den Kernel kompilieren, aber wer will schon eine komplett selbst gebaute Firmware betreiben!? Dann gibt es die Möglichkeit, ein Modul zu bauen. Habe dazu das Firmware Image genommen, und im linux-2.6 Verzeichnis mittels make menuconfig den Support für TUN als Modul aktiviert. Nach ein paar Anpassungen (eine Download URL stimmte nicht mehr und eine Typen-Deklaration in einem Source-File fehlte) ist das make für das Image auch durch gelaufen. Ein make install habe ich danach allerdings nicht mehr erfolgreich hinebkommen. Habe auber eine kompilierte tun.ko entdecken können und die auf die Homematic geschoben. Leider sagt er mir, die Datei wäre in einem ungültigen EXE Format...
Und da verließen sie mich dann :(
Gedankenansätze: Kann es sein, dass er trotz allem keinen Cross Compiler für das Erzeugen der tun.ko genommen hat?
Die Toolchain ist so konfiguriert, dass sie für einen 2.4er Kernel generiert. Den aktuell laufenden 2.6er Kernel finde ich in der Auswahl der Toolchain nicht. Kann ich die auf der 2.4er lassen, oder besser auf eine 2.6er Version stellen.

Jede Hilfe ist willkommen!

LG, Boris

dirch
Beiträge: 579
Registriert: 24.10.2008, 03:26
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Re: Kernel Modul erstellen... HELP!

Beitrag von dirch » 21.09.2009, 13:57

Hallo Boris,
inspire hat geschrieben: Gedankenansätze: Kann es sein, dass er trotz allem keinen Cross Compiler für das Erzeugen der tun.ko genommen hat?
Das waere moeglich. Hast Du das Makefile in base/linux-2.6/ genommen oder einfach make im Verzeichnis base/linux-2.6/linux-2.6 aufgerufen? Ersteres sollte cross compilieren, letzteres vermutlich nicht.

So sollte es aussehen:
dirch@compiler:~/cdk/source/base/linux-2.6$ make install
make ARCH=arm CROSS_COMPILE=arm-linux- -C linux-2.6 oldconfig
inspire hat geschrieben: Die Toolchain ist so konfiguriert, dass sie für einen 2.4er Kernel generiert. Den aktuell laufenden 2.6er Kernel finde ich in der Auswahl der Toolchain nicht. Kann ich die auf der 2.4er lassen, oder besser auf eine 2.6er Version stellen.
Das versteh ich nun nicht, weiter oben schreibst Du doch schon was von Kernelversion 2.6. Auf der CCU laeuft in aktuellen originalimages der 2.6.21, den sollte die Toolchain auch erzeugen, macht sie zumindest bei mir :wink:

Ich hab fix mal das tun modul gebaut, schau mal ob du das laden kannst. Hoffentlich beschwert sich der Kernel beim laden nicht ueber fehlende dependencies, ich drueck die Daumen.
tun.tar.gz
(5.42 KiB) 109-mal heruntergeladen
Gruss,
Dirk

PS: rein aus Interesse, was baust Du da eigentlich?
Neun von zehn Stimmen in meinen Kopf sagen ich bin nicht verrückt. Die andere summt die Melodie von Tetris . ...

inspire
Beiträge: 120
Registriert: 16.09.2009, 07:41

Re: Kernel Modul erstellen... HELP!

Beitrag von inspire » 21.09.2009, 14:35

Hey Dirk,

EIN GANZ DICKES DANKE!
Werde ich heute Abend direkt mal austesten. Wäre dann quasi der Durchbruch ... ;-)

Wozu das Ganze? Ich sitze an einem Projekt, um einen Zugriff von überall auf die Homematic zu ermöglichen, OHNE dass Du Dir Portweiterleitungen in Deinem heimischen Router bauen musst.

Du unterwegs mit Webbrowser <---> Server im Rechenzentrum <---> VPNTUNNEL <---> Deine Homematic

Der Server im RZ wird über Firewalling (Netzwerk und Application) gegen Angriffe geschützt. Hier läuft zusätzlich ein Reverse proxy. Dieser nimmt die Anfragen entgegen und leitet sie an DEINE Homematic weiter. Das Ganze dann mit entsprechender Benutzer - Authentisierung etc.

Da mit der nächsten Firmware auf der Homematic wohl von Haus aus Firewalling unterstützt wird, kannst Du auch lokal sicher stellen, dass über den Weg wirklich nur DU zugreifen kannst. Entsprechende Filter wird es zusätzlich auf der anderen Seite des VPN Tunnels im RZ geben. Man braucht also keine Sorge haben, dass die lokale Konfiguration sonst wo hin geschickt wird. (Siehe Spekulationen zu http://www.fernzugriff.com)
Ich komme beruflich aus dem IT Sicherheitsbereich und denke, dass das als fertige Komplettlösung auch für einige User ohne tiefgehende Systemkenntnisse spannend sein könnte...

Ggf auch interessant für Dein iPhone Touch UI!? ;-) Falls ja, PN.

LG, Boris

dirch
Beiträge: 579
Registriert: 24.10.2008, 03:26
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Re: Kernel Modul erstellen... HELP!

Beitrag von dirch » 21.09.2009, 15:43

inspire hat geschrieben: Da mit der nächsten Firmware auf der Homematic wohl von Haus aus Firewalling unterstützt wird, kannst Du auch lokal sicher stellen, dass über den Weg wirklich nur DU zugreifen kannst. Entsprechende Filter wird es zusätzlich auf der anderen Seite des VPN Tunnels im RZ geben. Man braucht also keine Sorge haben, dass die lokale Konfiguration sonst wo hin geschickt wird. (Siehe Spekulationen zu http://www.fernzugriff.com)
Ich bin mir momentan schon ziemlich sicher dass nichts von der CCU rausgeschickt wird was ich nicht erlaube, zum einen hat die CCU ein nicht existierendes default GW eingetragen (kein default GW einzutragen ist keine gute Idee weil die CCU dann kein NTP mehr macht) und nur fuer bestimmte externe hosts Routen gesetzt, und diese sind auch nur ganz explizit auf der Firewall freigeschaltet.
inspire hat geschrieben: Ich komme beruflich aus dem IT Sicherheitsbereich und denke, dass das als fertige Komplettlösung auch für einige User ohne tiefgehende Systemkenntnisse spannend sein könnte...
Das ganze als Komplettpaket finde ich eine gute Idee, nur in wie weit vertraue ich demjenigen der den Server im RZ unter seiner Kontrolle hat? Weil der haette ja vollen Zugriff auf meine CCU, zumindest netzwerktechnisch.
inspire hat geschrieben: Ggf auch interessant für Dein iPhone Touch UI!? ;-) Falls ja, PN.
Fuer mich selber nicht, danke. Ich komm vom iPhone per VPN nach hause. Aber fuer andere koennte es durchaus interessant sein. Wenn du Hilfe dabei brauchst das ganze in ein Paket zu packen was man direkt als Zusatzsoftware auf der CCU installieren kann sag bescheid.

Gruss,
Dirch
Neun von zehn Stimmen in meinen Kopf sagen ich bin nicht verrückt. Die andere summt die Melodie von Tetris . ...

inspire
Beiträge: 120
Registriert: 16.09.2009, 07:41

Re: Kernel Modul erstellen... HELP!

Beitrag von inspire » 22.09.2009, 08:18

Moin Dirch,

ich kann zumindest von einem Teilerfolg berichten. Das TUN Device läd soweit, ich kämpfe aber noch mit dem Openvpn.
Guckst Du hier:

Code: Alles auswählen

Tue Sep 22 06:01:12 2009 110[0]: OpenVPN 1.5.0 arm-linux [SSL] [LZO] [PTHREAD] built on Sep 20 2009
Tue Sep 22 06:01:12 2009 111[0]: WARNING: file '/usr/local/addons/openvpn/static.key' is group or others accessible
Tue Sep 22 06:01:12 2009 112[0]: Static Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Tue Sep 22 06:01:12 2009 113[0]: Static Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Tue Sep 22 06:01:12 2009 114[0]: Static Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Tue Sep 22 06:01:12 2009 115[0]: Static Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Tue Sep 22 06:01:12 2009 116[0]: TUN/TAP device tun0 opened
Tue Sep 22 06:01:12 2009 117[0]: /sbin/ifconfig tun0 10.8.0.2 pointopoint 10.8.0.1 mtu 1256
Tue Sep 22 06:01:13 2009 118[0]: Data Channel MTU parms [ L:1300 D:1300 EF:44 EB:0 ET:0 ]
Tue Sep 22 06:01:13 2009 119[0]: Local Options String: 'V3,dev-type tun,link-mtu 1300,tun-mtu 1256,proto UDPv4,ifconfig 10.8.0.1 10.8.0.2,cipher BF-CBC,auth SHA1,keysize 128,secret'
Tue Sep 22 06:01:13 2009 120[0]: Expected Remote Options String: 'V3,dev-type tun,link-mtu 1300,tun-mtu 1256,proto UDPv4,ifconfig 10.8.0.2 10.8.0.1,cipher BF-CBC,auth SHA1,keysize 128,secret'
Tue Sep 22 06:01:13 2009 121[0]: Local Options hash (VER=V3): '4c6bd189'
Tue Sep 22 06:01:13 2009 122[0]: Expected Remote Options hash (VER=V3): 'd67610d7'
Tue Sep 22 06:01:13 2009 123[0]: PTHREAD support initialized
Tue Sep 22 06:01:13 2009 124[0]: UDPv4 link local (bound): [undef]:1194
Tue Sep 22 06:01:13 2009 125[0]: UDPv4 link remote: 172.16.1.61:1194
Tue Sep 22 06:01:23 2009 126[0]: UDPv4 WRITE [60] to 172.16.1.61:1194:  DATA len=60
Tue Sep 22 06:01:23 2009 127[0]: UDPv4 READ [180] from 172.16.1.61:1194:  DATA len=180
Tue Sep 22 06:01:23 2009 128[0]: Assertion failed at integer.h:95
Tue Sep 22 06:01:23 2009 129[0]: Exiting
Das Openvpn habe ich über die Toolchain gebaut gehabt, die Version die dabei ist.
Zum Fehler habe ich im Netz Hinweise gefunden, dass das verwendete SSL wohl nicht mit aktiven threads kompiliert ist.
http://lists.uclibc.org/pipermail/uclib ... 32002.html
It looks like openvpn wants threads, but the openssl.mk file configures
with no-threads.
Just remove the no-threads from the openssl build and try again.
Also muß ich moch wohl oder übel dran machen das Thema openssl unter die Lupe zu nehmen. Und dann am Besten gleich noch zu schauen, ob ich nicht eine aktuelle 2er Version vom Open VPN zum laufen bekomme.
Habe mir jetzt 'ne neue, saubere Debian Maschine als VM aufgesetzt und werde noch mal ganz sauber von vorne anfangen. Prio1 ist da erst mal, dass er das Ganze Homematic Zeug sauber kompiliert, denke ich. Danach geht es dann weiter an ein Openvpn Modul. Na ja, ich hoffe ich bekomme das hin oder darf weiter fragen ;-)
Das ganze als Komplettpaket finde ich eine gute Idee, nur in wie weit vertraue ich demjenigen der den Server im RZ unter seiner Kontrolle hat? Weil der haette ja vollen Zugriff auf meine CCU, zumindest netzwerktechnisch.
Berechtigter Einwand! Ich selber sage immer: TRAUE NIEMANDEM!
Mein Ansatz zu dem Thema:
a) Offene Dokumentation, mit welchem System das Ganze wie umgesetzt ist.
b) Aktive Paketfilter - Firewall auf Server Seite Richtung VPN Tunnel, die Pakete blockt
c) Paketfilter auf Seiten der CCU. Wenn die nächste Firmware das nicht passend hat, dann im Rahmen des Paketes.
d) Gerne auch ein Blick unter die Haube für entsprechende Experten. Da finden sich hier im Forum genug, die das Thema überblicken könnten, denke ich...

Vom Server aus kommt man somit nur per Port 443 auf die lokale Homematic. Und das nur jeder Nutzer auf seine Eigene, versteht sich.
Wenn Du nicht zu faul bist, Deiner Homematic ein Passwort zu verpassen, sollte das Risiko wirklich überschaubar sein.
Und bedenke eines: Der Tod so eines Angebots wäre, dass ein unberechtigter Zugriff passiert. ;-)
Wenn du Hilfe dabei brauchst das ganze in ein Paket zu packen was man direkt als Zusatzsoftware auf der CCU installieren kann sag bescheid.
Darauf komme ich auf jeden Fall zurück!

LG, Boris

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“