[Custom-Kernel] - Anleitung zum erstellen eines eigenen Kernels

  • 75 Antworten
  • Letztes Antwortdatum
Ich hatte es schon offen!

Du musst nur rechts und links die beiden Plastik Schienen mit einem spitzen Gegenstand raus hebeln. Das geht ganz leicht sind nur geklipst.
Dann sind jeweils zwei Schrauben drunter, die auf schrauben und dann kannst du ganz leicht die Rückwand ab nehmen.
Auf einer der Schrauben ist ein Aukleber ist wohl so eine Art Siegel, also Garantie ist dann wohl futsch!
 
  • Danke
Reaktionen: vetzki
lieckedeeler schrieb:
Wir können das Kompilieren Starten

Code:
cd kernel
make -j4
Zur Erläuterung sei gesagt, die Option -j4 ist für die Anzahl der CPU's. Diese hatte ich vorher mit

Code:
cat /proc/cpuinfo
auf dem Tablet ausgelesen.

Code:
make -j4
gibt an, wie viele Jobs make beim Build parallel startet. Die 4 macht also nur dann Sinn, wenn die Build-Maschine 4 Kerne hat. Die Anzahl der Kerne auf dem Tablett ist vollkommen belanglos.

Der ursprüngliche Beitrag von 14:56 Uhr wurde um 15:01 Uhr ergänzt:

Vetzki schrieb:
Super, wird ja immer mehr.
Ich schau momentan wegen overclocking, aber ich glaube aufgrund mangelnder Programmier kenntnisse weiß ich nicht ob das was wird, bzw. wo ich genau ansetzen muss.
Aber ihr werdet es schon machen, v.a. da jpo234 ja wirklich nen Plan von der Materie (vor allem Linux) hat.

@jpo234
Kein Interesse evtl. cm9 aufs Tablet zu bringen?

Kann man drüber nachdenken. Wenn wir das ernsthaft in Angriff nehmen, bräuchten wir aber zuerst etwas Infrastruktur, primär einen github-Account.

Vetzki schrieb:
Wären das überhautp die richtigen Dateien (in Ordner ~/Dokumente/kernel/arch/arm/mach-tegra) ?
tegra3.clocks.c:
348-static const struct utmi_clk_param utmi_parameters[] =
349-{
350:/* OSC_FREQUENCY, ENABLE_DLY, STABLE_CNT, ACTIVE_DLY, XTAL_FREQ_CNT */
351- {13000000, 0x02, 0x33, 0x05, 0x7F},
352- {19200000, 0x03, 0x4B, 0x06, 0xBB},
353- {12000000, 0x02, 0x2F, 0x04, 0x76},
354- {26000000, 0x04, 0x66, 0x09, 0xFE},
355- {16800000, 0x03, 0x41, 0x0A, 0xA4},
356-};
357-
358-static void __iomem *reg_clk_base = IO_ADDRESS(TEGRA_CLK_RESET_BASE);
359-static void __iomem *reg_pmc_base = IO_ADDRESS(TEGRA_PMC_BASE);
360-static void __iomem *misc_gp_hidrev_base = IO_ADDRESS(TEGRA_APB_MISC_BASE);
.....

tegra3.dfvs.c:
31-static bool tegra_dvfs_cpu_disabled;
32-static bool tegra_dvfs_core_disabled;
33-static struct dvfs *cpu_dvfs;
34-
35:static const int cpu_millivolts[MAX_DVFS_FREQS] = {
36- 800, 825, 850, 875, 900, 912, 975, 1000, 1025, 1050, 1075, 1100, 1125, 1150, 1175, 1200, 1212, 1237};
37-
38:static const unsigned int cpu_cold_offs_mhz[MAX_DVFS_FREQS] = {
39- 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50};
40-
41:static const int core_millivolts[MAX_DVFS_FREQS] = {
42- 950, 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350};
43-
44-#define KHZ 1000
45-#define MHZ 1000000
46-
47-/* VDD_CPU >= (VDD_CORE - cpu_below_core) */
48-/* VDD_CORE >= min_level(VDD_CPU), see tegra3_get_core_floor_mv() below */
49-#define VDD_CPU_BELOW_VDD_CORE 300
50-static int cpu_below_core = VDD_CPU_BELOW_VDD_CORE;
......

Oder bin ich komplett auf dem falschen Dampfer ?

Die Tegra3 Hardware kenne ich nicht. Aber das Nexus 7 mit dem gleichen Prozessor wurde ja schon auf 1,7GHz übertaktet. Nach dem Kernel sollte man mal suchen.
 
  • Danke
Reaktionen: vetzki
lieckedeeler schrieb:
@jpo234

Danke für den Hinweis... das hab' dann wohl missverstanden....

Btw... Ist zwar OT, aber kannst Du nochmal die history Deiner bash posten bezüglich Einrichtung der Toolchain? Ich hab' das jetzt mal mit der Standalone Toolchain versucht, allerdings paßt das bei mir mit den Pfaden immer irgendwie nicht...

Code:
tar jxvf ../origs/android-ndk-r8b-linux-x86.tar.bz2
android-ndk-r8b/build/tools/make-standalone-toolchain.sh --platform=android-14 --install-dir=$HOME/android/tools/cross-tools
export PATH=$PATH:/home/jpo/android/tools/cross-tools/bin
 
lieckedeeler schrieb:
@jpo234

Das hatte ich bereits probiert... Egal... ich werd' mir erstmal ein gutes C/C++ Buch kaufen und bis dahin die Entwicklung einstellen....:biggrin:.

Kannst Du mir eins empfehlen?

???
C/C++-Bücher behandeln die Sprache und die Bibliotheken. Das Aufsetzen von Cross-Compilern wird da drin nicht behandelt.

Ansonsten: zu C++ natürlich der Stroustrup: http://www.amazon.de/C-Programming-Language-Special/dp/0201700735
Zu C fällt mir nicht so recht was ein, dazu habe ich nie ein Buch gebraucht.

Aber nochmals zur Warnung: Antworten zu Deinen aktuellen Problemen findest Du nicht in Büchern.
 
Zuletzt bearbeitet von einem Moderator:
lieckedeeler schrieb:
@jpo234

Das habe ich mir schon gedacht. Leider weiss ich nicht so recht, wo man dazu eine Antwort kriegen soll... Hab' heute als erstes Deine Anregung probiert... Danach dies hier... Was - wie ich festgestellt habe - ziehmlich ähnlich ist... Leider haute das alles nicht hin. Mit der Standalone Toolchain konnte er nichtmal den Unterordner "bitstream" finden, der included werden sollte... Irgendwann hatte ich das soweit hingefummelt, dass der build - soweit ich das beurteilen kann - durchlief, allerdings ist er dann beim linken der Dateien ausgestiegen, weil er den Pfad nicht finden konnte... Nunja... einen VDR aufsetzen ist eben etwas anderes als das hier.... BTW... auf welchem System bist Du unterwegs... Sicherlich LFS oder Gentoo, was... :smile:

Ganz ehrlich... ich würde das schon gern alles lernen, hab' aber keinen blassen Schimmer wo ich da ansetzen soll.... daher dachte ich... wenn ich mich mit C++ beschäftige mach ich im Zweifel zumindest erstmal nichts falsch..... Gibst Du Nachhilfe...? Wie hoch ist Dein Stundensatz...:biggrin:

Du bastelst also grade wieder am DVBlast...
Beim Linken gab's ein paarProbleme:
1) Android hat keine separate pthread und rt library. Ist alles in Bionic (Android libc)
2) DVBlast verwendet eine komische glibc-Funktion timegm. Da habe ich die portable Ersatzfunktion von timegm(3) - Linux manual page verwendet
3) SUN_LEN fehlte, Google hat das hier vorgeschlagen: Androids NDK does not have SUN_LEN macro - Stack Overflow
 
Hallo zusammen...

Mit Hilfe der Infos aus diesem Thread habe ich mir eine Umgebung aufgesetzt, in der ich einen Android-Kernel compilieren kann. Ich habe mir die Sourcen von Acer vom 16.11.2012 gezogen und das config.gz aus dem james-ROM 2.3.

Ein paar doofe Fehler später hatte ich tatsächlich ein zImage erzeugt:ohmy:

Bevor ich das ganze jetzt in ein Boot.img packe und auf das A210 flashe hätte ich noch ein paar Fragen:

Bisher dachte ich, wenn ich einen 'Nicht lauffähigen Kernel' geflasht hätte, könnte ich ins Fastboot booten und den originalen Kernel wieder flashen und alternativ könnte ich ins CWM booten und ein CWM Recovery einspielen. Beide dieser Möglichkeiten sollten mein verbasteltes Boot.img wieder überschreiben.

Ist das zutreffend oder habe ich da was übersehen?

Liekedeeler scheint da ja gewisse Bedenken gehabt zu haben:

lieckedeeler schrieb:
@Vetzki

also wenn ich ganz ehrlich bin... ich würde bevor ich eine Partition lösche - vor allem weil's boot ist - gern das Image temporär testen.... :biggrin:. Im übrigen... wozu soll eine Developer-Funktion wie
Code:
fastboot boot img
gut sein, wenn sie nicht geht :blink:. Aber trotzdem Danke, das Du das fastboot-Verhalten bestätigen kannst. Frage ist nur.... wie kann man die eigenen Kernel gefahrlos testen. Jemand ne Idee...?

lieckedeeler schrieb:
...

Vielleicht sollte ich das generell nochmal klarstellen... wenn ich zur Vorsicht aufrufe, was Kernel-Modifikationen angeht, dann tue ich dies, weil ich nicht möchte, das jemand aus seinem ACER ein Küchenbrett macht. Dafür ist das Ding mal echt zu teuer....

Ich denke hierbei insbesondere an Overclocking und so Zeug... Wenn man da nicht aufpasst, kann man anschließend nur noch Getränke auf dem ACER servieren.

Zum Thema 'insecured Kernel': Das habe ich doch so verstanden, daß das 'mount /system rw' Problem durch eine Änderung in der config Datei beseitigt werden konnte richtig?

Noch eine Frage zum Thema Overclocking:

Der Kernel im james.ROM läuft ja mit 1.3 GHz, ich nehme jedoch nicht an, daß das nur durch Änderungen in der .config erreicht wurde:

Vetzki schrieb:
...Ich schau momentan wegen overclocking, aber ich glaube aufgrund mangelnder Programmier kenntnisse weiß ich nicht ob das was wird, bzw. wo ich genau ansetzen muss.
...
Wären das überhautp die richtigen Dateien (in Ordner ~/Dokumente/kernel/arch/arm/mach-tegra) ?
tegra3.clocks.c:
348-static const struct utmi_clk_param utmi_parameters[] =
349-{
350:/* OSC_FREQUENCY, ENABLE_DLY, STABLE_CNT, ACTIVE_DLY, XTAL_FREQ_CNT */
351- {13000000, 0x02, 0x33, 0x05, 0x7F},
352- {19200000, 0x03, 0x4B, 0x06, 0xBB},
353- {12000000, 0x02, 0x2F, 0x04, 0x76},
354- {26000000, 0x04, 0x66, 0x09, 0xFE},
355- {16800000, 0x03, 0x41, 0x0A, 0xA4},
356-};
357-
358-static void __iomem *reg_clk_base = IO_ADDRESS(TEGRA_CLK_RESET_BASE);
359-static void __iomem *reg_pmc_base = IO_ADDRESS(TEGRA_PMC_BASE);
360-static void __iomem *misc_gp_hidrev_base = IO_ADDRESS(TEGRA_APB_MISC_BASE);
.....

tegra3.dfvs.c:
31-static bool tegra_dvfs_cpu_disabled;
32-static bool tegra_dvfs_core_disabled;
33-static struct dvfs *cpu_dvfs;
34-
35:static const int cpu_millivolts[MAX_DVFS_FREQS] = {
36- 800, 825, 850, 875, 900, 912, 975, 1000, 1025, 1050, 1075, 1100, 1125, 1150, 1175, 1200, 1212, 1237};
37-
38:static const unsigned int cpu_cold_offs_mhz[MAX_DVFS_FREQS] = {
39- 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50};
40-
41:static const int core_millivolts[MAX_DVFS_FREQS] = {
42- 950, 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350};
43-
44-#define KHZ 1000
45-#define MHZ 1000000
46-
47-/* VDD_CPU >= (VDD_CORE - cpu_below_core) */
48-/* VDD_CORE >= min_level(VDD_CPU), see tegra3_get_core_floor_mv() below */
49-#define VDD_CPU_BELOW_VDD_CORE 300
50-static int cpu_below_core = VDD_CPU_BELOW_VDD_CORE;
......

Oder bin ich komplett auf dem falschen Dampfer ?

Wer hat denn den Kernel des jamesROMs gebaut? Wurden da die Sourcen geändert oder nur die .config Datei?

Falls die Sourcen geändert wurden, darf ich erfahren, wie? Oder ggf die geänderten Sourcen bekommen?

Und noch eine Frage zum /proc/config.gz: Wie kommt das da hin? Wird die .config mit in den Kernel eincompiliert und von dem dann dort hinkopiert?

Danke für alle Informationen vorab,

Grüsse Uwe
 
Vetzki hat den kernel kompiliert :)
Schreib mir mal ne Pn , wäre toll :)

Gruß

Gesendet von meinem Evo 3D GSM mit der Android-Hilfe.de App
 
Kann ich heut abend gerne machen. Is recht einfach. Wär cool wenn du auch was machst du hast glaub ich eh mehr Ahnung als ich :)

Gesendet von meinem Nexus 4 mit der Android-Hilfe.de App
 
Vetzki schrieb:
Kann ich heut abend gerne machen. Is recht einfach.

Das wäre super!
Wär cool wenn du auch was machst du hast glaub ich eh mehr Ahnung als ich :)
Wen meinst Du den damit:confused2: Mich ja wohl kaum, ich bin noch ein Android-Noob, habe ja gerade mal seit 16.11.2012 mein A210...

Davor habe ich nur auf Windoof-Büchsen und auf Acorn Rechnern entwickelt... (Die Acorn RiscPC hatten aber immerhin auch schon einen ARM-Prozessor:thumbup: und einen Assembler direkt im ROM!:thumbup:)
 
Hab mal ein paar Screenshots der Änderungen gemacht, die .config Datei entweder mit
make picasso_e2_defconfig erstellen oder
/proc/config.gz vom Tablet nehmen und entpacken

< = geänderte Config (& Kconfig)

> = ursprüngliche Config (& Kconfig)

attachment.php


habs erst von Hand gemacht aber make ...config (gibt mehrere Screenshot is nconfig, also make nconfig, da dürfte das gleiche bequemer gehen, evtl. nachdem in security die Kconfig angepasst wurde)

attachment.php


attachment.php


Für die Root Shell (mit adb) muss dann noch in der Ramdisk default.prop geändert werden.
in default.prop:
#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.secure=0
ro.allow.mock.location=0
ro.debuggable=1
persist.sys.usb.config=mass_storage,mtp,adb
service.adb.root=1

das fett geschriebene is dafür wichtig.

btw. hab eigentlich nicht wirklich Programierkenntnisse, von daher denke jemand mit solchen erreicht bestimmt schneller (und besser/schöner) was, v.a. so kernel zeugs. Hab mir im Endeffekt bisher alles selbst erlesen/erschlossen und teilweise muss ich halt viel googeln...

Falls weitere Fragen gibt, einfach fragen :)
 

Anhänge

  • Kernel_diff.png
    Kernel_diff.png
    50 KB · Aufrufe: 570
  • Bildschirmfoto vom 2013-01-14 18:56:57.png
    Bildschirmfoto vom 2013-01-14 18:56:57.png
    65,9 KB · Aufrufe: 578
  • Bildschirmfoto vom 2013-01-14 18:57:38.png
    Bildschirmfoto vom 2013-01-14 18:57:38.png
    53,9 KB · Aufrufe: 560
@Vetzki:

Na, dann, danke für die Blumen..

Kannst Du evtl noch was zum Thema 1300 MHz sagen, kommt das auch durch Deinen Kernel oder durch eine Konfig-Datei im JamesROM oder noch ein dritte Möglichkeit, auf die ich nicht kam?

Und wie ist es mit einem 'Nicht boot-Fähigen Kernel'? Wie kann ich in dann noch in denn fastboot Modus oder ins CWM kommen?

Danke im voraus,

Uwe
 
Geht beim A210 nicht von haus 1,3 ghz.
Boot Image nicht flashen sondern mit fastboot boot erst testen.

Gesendet von meinem Nexus 4 mit der Android-Hilfe.de App
 
So, den ersten Kernel habe ich mit fastboot boot boot.img gestartet und der lief so glatt rein, daß ich mir garnicht sicher war, ob ich nicht den original JamesROM Kernel gebootet hatte.

Also war der nächste Step, daß ich in den Kernel ein 'local-Build-Number' einkompiliert habe und den gebootet. Unter Einstellungen->Über das Tablet-> Kernel-Version war dann 3.1.10uwe+ zu finden, aber das hatte dem WLan Modul nicht gepasst (Das scheint NUR genau mit Kernel 3.1.10+ zu wollen).

Im nächsten Schritt habe ich dann mal ein zusätzliches Modul mit einkompiliert.

Mehr dazu in einem seperaten Thread:

https://www.android-hilfe.de/forum/...red-kernel-mit-cifs-samba-support.363576.html

Grüsse Uwe
 
Wenn Ihr zwei Experten mal nen Kernel baut, der OC Tauglich ist... sagt ma bescheid... ich hätte da Interesse dran... fürs A211 ;-)
 
W!ldGunM@n schrieb:
Wenn Ihr zwei Experten mal nen Kernel baut, der OC Tauglich ist... sagt ma bescheid... ich hätte da Interesse dran... fürs A211 ;-)

Der GROSSE Hacken an einem OC-Kernel ist der, daß da das Risiko besteht, aus dem Tablet eine Bratpfanne zu machen, wenn man sich mit den Teilern vertut :ohmy:.

Aber da ich ja kein A211 habe, müsste dann Deiner zum Testen herhalten :p und wenns zu heiß wird, einfach ein paar Spiegeleier drauf brutzeln...

Nee, Spass beiseite, ich will erst mal noch ein paar Erfahrungen sammeln, ehe ich mich an so eine heisse Sache dran wage...

Aber mir ist schon klar, was die Leute wünschen ;)
 

Ähnliche Themen

Kiwi++Soft
Antworten
41
Aufrufe
34.585
Ladylike871
Ladylike871
An-Dro-Id
Antworten
6
Aufrufe
4.586
DAC324
D
L
  • LeonYannick
Antworten
1
Aufrufe
2.748
Kiwi++Soft
Kiwi++Soft
Zurück
Oben Unten