Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android OS Entwicklung / Customize

Kernel-Module kompilieren - erster Versuch

Das Thema "Kernel-Module kompilieren - erster Versuch" befindet sich unter Android OS Entwicklung / Customize auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 31.08.2009, 21:28   #21 (permalink)
Junior Mitglied

Registriert seit: 30.08.2009
Beiträge: 32
Abgegebene Danke: 4
Erhielt 3 Danke für 3 Beiträge
Standard AW: Kernel-Module kompilieren - erster Versuch

Hat denn mittlerweile schon mal jemand den Kernel zum Laufen gebracht?
Wenn ja, wäre eine kleine Erklärung nett
Trass3r ist offline   Mit Zitat antworten
Alt 31.08.2009, 21:41   #22 (permalink)
Erfahrener Benutzer

Registriert seit: 08.07.2009
Beiträge: 200
Abgegebene Danke: 1
Erhielt 14 Danke für 12 Beiträge
Standard AW: Kernel-Module kompilieren - erster Versuch

Ja, geht ganz einfach:
  • Zipfile von Samsung runterladen, dann auf alle Files dos2unix anwenden: find -type f | xargs dos2unix
  • vom Galaxy /proc/config.gz runterkopieren und als .config extrahieren
  • Cross-Compiler installieren, z.B. vom Android SDK (git checkout notwendig, beim Binary ist der nicht dabei) oder NDK; oder von CodeSourcery
  • im Kernel dir: make ARCH=arm menuconfig
  • make ARCH=arm CROSS_COMPILE=/dein/cross/compiler/arm-eabi-
    (oder wie auch immer er heißt, geht um das target prefix; beim SDK arm-eabi-gcc)
  • fastboot flash:raw boot arch/arm/boot/zImage
  • bcm4325.ko, dpram.ko und multipdp.ko nach /system/libmodules kopieren
leromarinvit ist offline   Mit Zitat antworten
Alt 03.09.2009, 09:26   #23 (permalink)
Android-Hilfe.de Mitglied

Registriert seit: 31.07.2009
Beiträge: 75
Abgegebene Danke: 1
Erhielt 25 Danke für 13 Beiträge
Standard AW: Kernel-Module kompilieren - erster Versuch

Geht leider nicht so einfach:

Erstens: "dos2unix" konvertiert in diesem Fall nicht richtig. Besser mit sed -i -e 's/\r//g', sonst kompiliert irgend ein *.h nicht.

Zweitens: es gibt ein paar "echte" Binaries (siehe Anhang), da darf man das CRLF nicht einfach ersetzen.

Drittens: es fehlt die initrd. Die ist in den Kernel hineinkompiliert und wird nicht vom Bootloader als Datei hinzugeladen. Das muesste in .config die Einstellung CONFIG_INITRAMFS_SOURCE sein.

Bin auf der Suche nach dem Original-Initrd.img; kann man sicher aus einen existierendem Kernel rausholen. Heute aber keine Zeit mehr.

// Sven-Ola
Angehängte Dateien
Dateityp: txt non-biinaries.txt (1,5 KB, 94x aufgerufen)
sven-ola ist offline   Mit Zitat antworten
Alt 03.09.2009, 17:02   #24 (permalink)
Erfahrener Benutzer

Registriert seit: 08.07.2009
Beiträge: 200
Abgegebene Danke: 1
Erhielt 14 Danke für 12 Beiträge
Standard AW: Kernel-Module kompilieren - erster Versuch

Zitat:
Zitat von sven-ola Beitrag anzeigen
Geht leider nicht so einfach:

Erstens: "dos2unix" konvertiert in diesem Fall nicht richtig. Besser mit sed -i -e 's/\r//g', sonst kompiliert irgend ein *.h nicht.
Bei mir hat dos2unix funktioniert. Mit welchem Header hast du Probleme?

Zitat:
Zitat von sven-ola Beitrag anzeigen
Zweitens: es gibt ein paar "echte" Binaries (siehe Anhang), da darf man das CRLF nicht einfach ersetzen.
Stimmt natürlich, einfach alles konvertieren ist nicht wirklich sauber. Aber die aufgelisteten Files sind zum Kompilieren alle nicht notwendig, daher störts nicht wirklich (die Scripts hab ich nicht verwendet, ging auch so).

Zitat:
Zitat von sven-ola Beitrag anzeigen
Drittens: es fehlt die initrd. Die ist in den Kernel hineinkompiliert und wird nicht vom Bootloader als Datei hinzugeladen. Das muesste in .config die Einstellung CONFIG_INITRAMFS_SOURCE sein.

Bin auf der Suche nach dem Original-Initrd.img; kann man sicher aus einen existierendem Kernel rausholen. Heute aber keine Zeit mehr.

// Sven-Ola
Die hab ich aus dem Kernel-Image vom 1. Update (IG8) extrahiert. Dafür gibts hier ein fertiges Script.
leromarinvit ist offline   Mit Zitat antworten
Alt 04.09.2009, 10:42   #25 (permalink)
Android-Hilfe.de Mitglied

Registriert seit: 31.07.2009
Beiträge: 75
Abgegebene Danke: 1
Erhielt 25 Danke für 13 Beiträge
Standard AW: Kernel-Module kompilieren - erster Versuch

So - jetzt hab' ich es auch hin. Mit swap und iptables. Hier meine Notizen, falls jemand selbst kompilieren will kann's ja hilfreich sein. Dateien sind hier:
Code:
http://81.89.105.192/linux-2.6.27-galaxy.patch.lzma
http://81.89.105.192/initrd-galaxy-2.6.27-GT-i7500I7500VIAIG6I7500XXIG8I7500XXIG8_500.tgz
Dieser Text bezieht sich auf http://img.kr.samsungmobile.com/imag...OpenSource.zip. Hinweis: alle ASCII-Dateien in diesem ZIP haben CRLF als Zeilenende. Konvertierung mit "find -type f | xargs sed -i -e '/\r//g'" (das erwischt auch ein paar Binärdateien, diese sollten für das Kompilieren aber nicht wichtig sein).

70e0eb7961110ff6a01eff8781333c8d GT-I7500_OpenSource.zip

Hinweise: der Samsung-Kernel ist ein Stock-2.6.27, allerdings wurde ein "Infinite Retry Loop in IP-Config" mit einer Änderung behoben (aus 2.6.27.14, siehe LKML 9d8dba6c979fa99c96938c869611b9a23b73efa9). Außerdem sind die Kernel-Sourcen wohl über einen Windows-Rechner gegangen, es fehlen großgeschriebene Dateien z.B. net/netfilter/xt_TCPMSS.c (das gibts auch als kleingeschriebene Datei net/netfilter/xt_tcpmss.c im Kernel-Tree und ein typisches Windows überschreibt dann).

* Den Kernel linux-2.6.27.tar.bz2 von kernel.org herunterladen. Auspacken und den Patch anwenden (der Patch enthält nur die Unterschiede vom Stock-2.6.27er Kernel auf das oben angeführte ZIP-Archiv):
tar xvjf linux-2.6.27.tar.bz2
lzcat linux-2.6.27-galaxy.patch.lzma | patch -p1 -d linux-2.6.27

* Vom Telefon die Konfiguration ziehen (bin faul und mache als "root" weiter):
sudo bash
cd linux-2.6.27
adb pull /proc/config.gz .
gunzip config.gz
mv config .config

* Die Initrd holen, auspacken und den Pfad in der .config eintragen, z.B. CONFIG_INITRAMFS_SOURCE="initrd/". Meine Initrd habe ich aus GT-i7500I7500VIAIG6I7500XXIG8I7500XXIG8_500.zip (später zurückgezogenes Update aus Aug 2009). In der Datei "/default.prop" sind außerdem die Einstellungen auf "ro.secure=0" und "ro.debuggable=1" geändert, damit der "root"-Zugriff funktioniert.

* Kompilieren, dabei 2 * mit [Return] den Benutzer "root" fuer die Initrd bestätigen:
make CROSS_COMPILE=/usr/src/android/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-

* Aufspielen mit "fastboot":
(Galaxy an USB stoepseln)
fastboot flash:raw boot arch/arm/boot/zImage
(Fastboot wartet, Galaxy ausschalten)
(Warten bis die Ladeanzeige die volle Batterie zeigt)
(Mit der Tastenkombination Annehmen + Powertaste halten und damit einschalten)
(Schwarzer Bildschirm, das Fastboot beginnt mit dem Flashen, 5 Sekunden)
(Mein Galaxy startet und läuft ganz normal [freu])

* Jetzt kommt die Kür: "make menuconfig", einschalten was man haben will. Wirklich wichtig: General/SWAP[*], Net/Opt/Netfilter[*], Net/Opt/Netfilter/Adv[ ] ("Advanced" ausschalten schaltet die einfachen Sachen automatisch als Modules ein). Konfiguration speichern und aufräumen mit "make CROSS_COMPILE=[siehe oben] clean". Dann noch einmal Kompileren/Aufspielen.

* Nun noch ein Swapfile. SSH in das Galaxy und dann:
dd if=/dev/zero of=/sdcard/swap.img bs=1048576 count=96
mkswap /sdcard/swap.img
swapon /sdcard/swap.img

Das wars, meine Kiste läuft...

Code:
localhost:/sdcard# free -m
             total       used       free     shared    buffers     cached
Mem:            93         92          1          0          0         22
-/+ buffers/cache:         69         24
Swap:           95          0         95
* Jetzt noch die Module hochladen (rfs.ko fehlt...!):
adb remount
for i in drivers/net/wireless/broadcom/bcm4325.ko drivers/dpram/dpram.ko drivers/dpram/multipdp.ko;do adb push $i /system/libmodules/;done

* Dann noch meine zusätzlichen Module für mein Debian hochladen:
tar cvzf /tmp/bla.tgz $(find -name "*.ko")
adb push /tmp/bla.tgz /tmp/
(zur Debian-Shell auf dem Galaxy wechseln)
mkdir /lib/modules/$(uname -r)/
cd /lib/modules/$(uname -r)/
tar xvzf /tmp/bla.tgz
depmod -a
iptables -nvL
(sollte die iptables-Module laden und was anzeigen)

Geändert von sven-ola (04.09.2009 um 10:59 Uhr) Grund: Module hochladen falsch
sven-ola ist offline   Mit Zitat antworten
Folgende Benutzer bedanken sich bei sven-ola für diesen Beitrag:
Cynob (12.11.2011), Trass3r (08.09.2009)
Alt 06.09.2009, 13:50   #26 (permalink)
Android-Hilfe.de Mitglied
 
Benutzerbild von sonic

Modell: Samsung Galaxy S2 (I9100)

Registriert seit: 03.09.2009
Beiträge: 56
Abgegebene Danke: 16
Erhielt 13 Danke für 6 Beiträge
Unglücklich AW: Kernel-Module kompilieren - erster Versuch

Hmm, mein kernel (config angehängt) schickt das Galaxy in eine Endlosschleife beim booten. Nach einigen Durchläufen der Android-Animation startet es neu. Gibt es irgendeine Möglichkeit, sich die kernel messages anzusehen?
Angehängte Dateien
Dateityp: zip config.zip (10,0 KB, 26x aufgerufen)
sonic ist offline   Mit Zitat antworten
Alt 06.09.2009, 13:58   #27 (permalink)
Android-Hilfe.de Mitglied

Registriert seit: 31.07.2009
Beiträge: 75
Abgegebene Danke: 1
Erhielt 25 Danke für 13 Beiträge
Standard AW: Kernel-Module kompilieren - erster Versuch

Hey,

keine Ahnung, warum das beim ersten mal gleich funktioniert hat. Beim weiter basteln hatte ich dasselbe. Die Kernel-Module unter /system/libmodules/ passen nicht (sind für SWAP=NO) und stürzen wohl ab. Ich hab's dann so gemacht:

* Orig-Kernel draufmachen, Neustart
* adb remount
* adb shell mv /system/libmodules /system/libmodules.orig
* adb shell mkdir /system/libmodules
* Herunterfahren und Kernel-mit-Swap draufspielen
* Starten (ohne Module==Kein Dienst, läuft aber)
* adb remount
* for i in $(find -name bcm4325.ko -or -name dpram.ko -or -name multipdp.ko);do adb push $i /system/libmodules/;done

Und schon läuft's auch bei mir wieder:
Code:
root@pcacer:/usr/src/galaxy-kernel/linux-2.6.27# adb shell
# deb
su: access granted, courtesy of www.magicandroidapps.com
e2fsck 1.40.8 (13-Mar-2008)
/sdcard/debian.img: clean, 40884/73728 files, 160023/262144 blocks
root@localhost:/# free -m
             total       used       free     shared    buffers     cached
Mem:            93         91          2          0          0         23
-/+ buffers/cache:         68         25
Swap:           95          0         95
HTH
// Sven-Ola

Geändert von sven-ola (06.09.2009 um 14:10 Uhr) Grund: Noch'n Nachtrag
sven-ola ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei sven-ola für diesen Beitrag:
sonic (06.09.2009)
Alt 08.09.2009, 16:48   #28 (permalink)
Junior Mitglied

Registriert seit: 30.08.2009
Beiträge: 32
Abgegebene Danke: 4
Erhielt 3 Danke für 3 Beiträge
Standard AW: Kernel-Module kompilieren - erster Versuch

Was ist eig mit dem Middle-Ordner, der das Bluetoothzeug enthält?
Trass3r ist offline   Mit Zitat antworten
Alt 08.09.2009, 16:51   #29 (permalink)
Erfahrener Benutzer

Registriert seit: 08.07.2009
Beiträge: 200
Abgegebene Danke: 1
Erhielt 14 Danke für 12 Beiträge
Standard AW: Kernel-Module kompilieren - erster Versuch

Zitat:
Zitat von Trass3r Beitrag anzeigen
Was ist eig mit dem Middle-Ordner, der das Bluetoothzeug enthält?
Das hat nichts mit dem Kernel zu tun, bluez steht einfach nur auch unter der GPL und daher mussten sie das auch veröffentlichen.
leromarinvit ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei leromarinvit für diesen Beitrag:
Trass3r (08.09.2009)
Alt 08.09.2009, 17:29   #30 (permalink)
Junior Mitglied

Registriert seit: 30.08.2009
Beiträge: 32
Abgegebene Danke: 4
Erhielt 3 Danke für 3 Beiträge
Standard AW: Kernel-Module kompilieren - erster Versuch

Ah, danke für die Aufklärung
Muss man denn nun eigentlich den Weg über den Originalkernel+Patch gehn oder kann man auch die unveränderten aus dem Samsungarchiv nehmen (bis auf die initrd)?
Trass3r ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

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




Du liest gerade: "Kernel-Module kompilieren - erster Versuch" unter "Android OS Entwicklung / Customize" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.