| | #1 (permalink) |
| Android-Hilfe.de Mitglied Registriert seit: 31.07.2009
Beiträge: 75
Abgegebene Danke: 1
Erhielt 25 Danke für 13 Beiträge
| (gehört evnt. in die Entwickler-Ecke. Ich benutze das Forum mal als Notizblock, evnt. hilft es jemanden ja) Das hier habe ich gelesen: Building Android kernel images Es gibts 2 verschiedene Cross-Compile toolchains: 1 Für faule Leute bietet eine Firma "G++ Lite für ARM-GNU/Linux Target" Download Sourcery G++ Lite Edition for ARM Der Java-Installer ist recht huebsch und es installiert dann einen "gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203)" für das Target "arm-none-linux-gnueabi". Will ich aber nicht benutzen. 2 Für nicht-so-faule wird mit dem Auschecken der Quelltexte eine Toolcain mitinstalliert. Ich habe ein neues Verzeichnis angelegt: /usr/src/android. Hineinwechseln und "repo init", "repo sync". Es finden sich dann verschiedene Versionen unter ./prebuild, beispielsweise unter linux-x86/toolchain/arm-eabi-4.4.0/bin/, Target ist arm-eabi, diese Version ist offenbar etwas neuer: "gcc version 4.4.0 (GCC)". Instruktionen, um die Quellen zu installieren finden sich dann hier: Get source ?(Android Open Source Project)? 3 Jedenfalls braucht man einen Linux-Kernel-Quellbaum. Der war beim Checkout (siehe Punkt 2) nicht dabei. Also das hier ausführen: cd /usr/src/android git clone git://android.git.kernel.org/kernel/msm.git In dem lokalen GIT repo sollten mehrere Branches bereits drin sein. Die Suche nach einem speziellen Samsung-Galaxy-Branch startet ich mit: sven-ola@pcacer:/usr/src/android/msm$ git branch -a * android-msm-2.6.27 origin/HEAD origin/android-msm-2.6.25 origin/android-msm-2.6.27 origin/android-msm-2.6.29 origin/android-msm-2.6.29-donut origin/android-msm-htc-2.6.25 origin/msm-2.6.25 Schade, kein Samsung da. Evnt. auch brauchbar - der 2.6.27 Branch, der ja bereits aktiviert ist (der mit dem Stern). Die 2.6.27 steht auch im ./Makefile oben drin - ist ist offenbar gleich alles passend da. 4 Das dmesg auf dem Mobiltelefon behauptet, dass GCC 4.2.1 benutzt wurde: "Linux version 2.6.27 (hudson@andy) (gcc version 4.2.1)". Damit stehen aus Schritt 2 für Linux und MAC-OS diese Compiler zur Verfügung: /usr/src/android/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-gcc -v oder /usr/src/android/prebuilt/darwin-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-gcc -v (Eins von beiden lässt sich ausführen - falls du nicht mehr weisst ob bei dir ein Linux oder ein MAC-OS drauf ist <ggg>) 5 Wir brauchen eine .config-Datei. Die ziehe ich mir vom Telefon: adb pull /proc/config.gz /dev/stdout | gunzip -c > .config (Vom 17.Juli, also noch nicht mal einen Monat her. Wow). Erstmal den Cross-Compiler in den Pfad aufnehmen: export PATH=$PATH:/usr/src/android/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin Die Konfiguration kann man mit "make ARCH=arm CROSS_COMPILE=arm-eabi- menuconfig" anpassen. Ich habe einfach das Programm wieder beendet und gespeichert. Dann noch ein Test-Compile: make ARCH=arm CROSS_COMPILE=arm-eabi- Scheint zu laufen. Ctrl-C. Jetzt ein Unionfs dazu, das gibt es auf Unionfs: A Stackable Unification File System. Passende Diff-Datei herunterladen und draufspielen: zcat unionfs-2.5.2_for_2.6.27.24.diff.gz | patch -p1 --dry-run OK - sieht gut aus, also nochmal ohne "--dry-run". Das UnionFS einschalten mit "make ARCH=arm CROSS_COMPILE=arm-eabi- menuconfig" (steht unter File systems -> Layered file systems -> Unionfs = Module). Speichern. Kompilieren mit "make ARCH=arm CROSS_COMPILE=arm-eabi- modules". 6 Schnell mal draufspielen: adb push fs/unionfs/unionfs.ko /sdcard adb shell insmod /sdcard/unionfs.ko dmesg Mist: Unresolved symbols. Das kann jetzt heiter werden ![]() <4>[ 5693.336535] unionfs: Unknown symbol vfs_splice_from <4>[ 5693.341992] unionfs: Unknown symbol vfs_splice_to <4>[ 5693.357345] unionfs: Unknown symbol release_open_intent |
| | |
| | #2 (permalink) |
| Junior Mitglied Registriert seit: 30.07.2009
Beiträge: 42
Abgegebene Danke: 2
Erhielt 1 Danke für 1 Beitrag
|
Ich habe auch schon versucht meinen eigenen Kernel für das Samsung Galaxy zu kompilieren. Nach ein paar Klimmzügen ging der dann durch, aber er startet nicht. Die erste Fehleranalyse zeigte dann, dass mein kernel nur 1,4mb hat, der von Samsung 1,9mb. Da fehlt also doch so einiges. Wenn man die Samsung config.gz mit den Sourcen von android-msm-2.6.27 vergleicht, tauchen Einträge auf die gibt es gar nicht. So verwendet das Samsung einen Melfas Touchscreen für den es praktisch keine open source Treiber gibt (vielleicht passen die von MELPAS MCS-5000 Touchscreen, mehr zu Multitouch für Galaxy in meinen Blog) Ich hab jetzt erst mal eine Anfrage an Samsung geschickt mit der Frage nach dem Quellcode für den Galaxy-Linux-Kernel. Habe sie aber über samsungmobile.co.uk schicken müssen, weil die deutsche Variante kennt im Email-Formular das Galaxy nicht. Eine internationale Samsung Seite gibt es ja nicht, und die von Korea ist nicht in Englisch. Die Antwort steht noch aus. O2 werde ich auch noch anfragen, sie haben das Galaxy schließlich verkauft, bin aber noch nicht dazu gekommen. Wie es aussieht müssen wir also erst mal auf die sourcen warten. multioptionSDK |
| | |
| | #3 (permalink) |
| Android-Hilfe.de Mitglied Registriert seit: 31.07.2009
Beiträge: 75
Abgegebene Danke: 1
Erhielt 25 Danke für 13 Beiträge
|
Hey, ich warte aber nicht gern Dass in dem Google-GIT-Repo die Hälfte fehlt, fällt schon beim config.gz auf, welches man sich ja von dem Telefon laden kann, z.B. sowas: "CONFIG_SAMSUNG_CAPELA=y".Ich habe jetzt ein laufendes unionfs.ko, aber das ist ein *GANZ ÜBLER HACK*. Der Unionfs-Patch ändert dies und das im Kernel. Und das erfordert wiederum, dass man den Kernel neu übersetzt (z.B. werden nicht-exportierte Symbole kurzerhand mit EXPORT_SYMBOL_GPL() herausgeführt. Das wiederum erfordert normalerweise eine Bitte-Bitte-Mail auf der LKML. Egal - wenn man den unionfs-2.6.27.patch einspielt und dann meinen Hack oben drauf (Attached). Noch kein kleines "arm-eabi-strip --strip-debug" und man hat ein Modul (ebenfalls Attached). Wozu? Ich möchte diesen Debian-Krams ausprobieren (siehe Debian & Android Together on G1 - Jay Freeman (saurik)). Die Busybox von da läuft, ext2 ist bereits im Kernel und loop-mounten geht auch (unter der busybox). An sich hab' ich also alles beineinander. HTH // Sven-Ola |
| | |
| | #4 (permalink) |
| Erfahrener Benutzer Registriert seit: 08.07.2009
Beiträge: 200
Abgegebene Danke: 1
Erhielt 14 Danke für 12 Beiträge
|
Netter Hack! ![]() @Touchscreen: aus irgendeinem Grund hab ich gestern nicht dran gedacht ins config zu schauen und einfach Samsung-Leute, die einen Melfas-Touchscreen-Treiber posten, mit dem Galaxy assoziiert... Von der Config-Option her sind die Treiber doch nicht gleich, also wohl doch warten. Vielleicht haben sie ihn aber auch einfach nur umbenannt: die anderen Controller können laut Melfas alle keine Interrupts, aber in meinem dmesg find ich das hier: Code: melfas_ts_probe: Start touchscreen melfas-tsi-touchscreen in interrupt mode Code: switch (buffer[READ_INPUT_INFO]) {
[...]
case INPUT_TYPE_SINGLE:
[...]
case INPUT_TYPE_DUAL:
/* TODO */
break;
case INPUT_TYPE_PALM:
/* TODO */
break;
case INPUT_TYPE_PROXIMITY:
/* TODO */
break; Aber auf jeden Fall brauchen wir dafür den Sourcecode von Samsung. Hab in den letzten Wochen schon 2 Mails geschickt, aber noch keine Antwort bekommen. Werd am Montag dann mal die Hotline anrufen und mich solange weiterleiten lassen, bis ich wen kompetenten erwisch. Zumindest so kompetent, dass er weiß, was eine Strafanzeige wegen gewerblicher Urheberrechtsverletzung ist. |
| | |
| | #5 (permalink) | |
| Android-Hilfe.de Mitglied Registriert seit: 17.07.2009
Beiträge: 50
Abgegebene Danke: 8
Erhielt 1 Danke für 1 Beitrag
| Zitat:
Floe | |
| | |
| | #6 (permalink) |
| Android-Hilfe.de Mitglied Registriert seit: 17.07.2009
Beiträge: 50
Abgegebene Danke: 8
Erhielt 1 Danke für 1 Beitrag
|
Hab grad in Deinen Patch reingeschaut: Code: + /* + * This is an ugly hack. The Samsung kernel does not + * export the release_open_intent function. We know, that + * it resides somewhere between path_put and filp_open... + */ Hut ab, das ist mal echt Hardcore.Ich probier jetzt einfach mal aus, ob/wo der Kernel bei den Netfilter-Modulen mault. Vielleicht klappt der Trick ja auch da, wer weiss.. |
| | |
| | #7 (permalink) |
| Android-Hilfe.de Mitglied Registriert seit: 31.07.2009
Beiträge: 75
Abgegebene Danke: 1
Erhielt 25 Danke für 13 Beiträge
|
Kein CONFIG_NETFILTER? Das sieht schlecht aus. Dann fehlen die entsprechenden Haken im System, die kann man nicht einfach 'reinpatchen. Das Init in net/socket.c bekaeme man wohl noch hin, aber z.B. ipv4/ip_output.c oder ipv4/ip_sockglue.c sehen uebler aus. Suche mal mit Code: grep -w CONFIG_NETFILTER $(find net -name "*.c") |
| | |
| | #8 (permalink) | |
| Android-Hilfe.de Mitglied Registriert seit: 17.07.2009
Beiträge: 50
Abgegebene Danke: 8
Erhielt 1 Danke für 1 Beitrag
| Zitat:
Das ist ja schon fast wie Rootkit spielen.. Parallel dazu sollte man aber weiterhin Samsung nerven, dass sie den Source rausrücken. Gibts da schon was neues?Floe | |
| | |
| | #9 (permalink) |
| Android-Hilfe.de Mitglied Registriert seit: 17.07.2009
Beiträge: 50
Abgegebene Danke: 8
Erhielt 1 Danke für 1 Beitrag
|
So, Teilerfolg: Code: # lsmod xt_tcpudp 3072 0 - Live 0xbf041000 xt_NFQUEUE 1792 0 - Live 0xbf03f000 x_tables 13572 2 xt_tcpudp,xt_NFQUEUE, Live 0xbf03a000 bcm4325 135600 0 - Live 0xbf017000 multipdp 12724 15 - Live 0xbf012000 dpram 67352 6 - Live 0xbf000000 Code: --- linux/Makefile +++ linux/Makefile @@ -563,6 +563,11 @@ # disable invalid "can't wrap" optimzations for signed / pointers KBUILD_CFLAGS += $(call cc-option,-fwrapv) +# gcc-4.4 defaults to generating .eh_frame sections, but we aren't +# interested in those currently. additionally, it causes issues on some +# architectures. +KBUILD_CFLAGS += $(call cc-option,-fno-dwarf2-cfi-asm) + # Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments # But warn user when we do so warn-assign = \ Code: [20122.321198] ip_tables: Unknown symbol nf_register_sockopt [20122.330656] ip_tables: Unknown symbol nf_unregister_sockopt Floe |
| | |
| | #10 (permalink) |
| Junior Mitglied Registriert seit: 30.07.2009
Beiträge: 42
Abgegebene Danke: 2
Erhielt 1 Danke für 1 Beitrag
| Habe gerade Antwort vom Samsung Service der Insel erhalten. Ich soll "contact Android to resolve this enquiry". Lustig, mein Betriebssystem weiß also wo die sourcen zu finden sind. Naja, wer hat da auch was anderes erwartet. Bei O2 verweisen die auf Samsung. Bleibt also nix weiter übrig, als die noch ein wenig zu nerven. Gibt es eigentlich eine Sammelstelle für GPL-Verstöße? multioptionSDK |
| | |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Aktivierung des Root-Accounts | mjrgens | Root / Hacking / Modding für Samsung Galaxy | 334 | 05.05.2012 07:17 |
| Kernel patchen? | The One | Android OS Entwicklung / Customize | 1 | 04.10.2010 11:02 |
| iPhone 3.0 GS vs Android 1.5 - ein Versuch in Fairness | Autarkis | Smalltalk und Offtopic | 69 | 23.10.2009 18:48 |
| FUSE Kernelmodul kompilieren? [Gelöst] | wonder75 | Android OS Entwicklung / Customize | 1 | 01.08.2009 20:27 |
| tuntap-module für Android? | z0rc | Android App Entwicklung | 0 | 18.03.2009 23:20 |