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

  • 75 Antworten
  • Letztes Antwortdatum
Ich bin mir ziemlich sicher das es klappt, falls ich am Wochenende ein paar Stunden Zeit finde ,probier ich das ganze.

Hast du denn einen anderen Weg gefunden ?

:)
 
Matz3e schrieb:
Vielleicht fragt sich der ein oder andere wie "SECURE MOUNT" deaktiviert wurde.
Kurzfassung: in der KernelSource/fs/namespace.c wird die Anweisung "siehe unten" auskommentiert.

SECURE MOUNT macht grob gesagt folgendes: Wenn das System Bootet ist der erste Prozess: -> mounten <- dieser bekommt dann die "pid1" , alle anderen Prozesse die danach kommen bekommen pid(1) +1 - alles was jetzt größer als 1+ ist bekommt kein "zutritt" -> Operation not permitted or illegal root.
Da unsere Shell eine pid >1 hat, gibt es keine Schreibrechte.

Der Code prüft, ob der remount-Call von pid 1 (also init) durchgeführt wird. Andere Programme werden daran gehindert.
Ich frage mich, ob man init über irgendeine Schnittstelle zur Laufzeit dazu bringen kann, ein remount durchzuführen. Sind die Quellen für Acer's init verfügbar bzw. hat Acer die AOSP-Quellen modifiziert?

Der ursprüngliche Beitrag von 10:43 Uhr wurde um 10:46 Uhr ergänzt:

lieckedeeler schrieb:
@Matz3e

hast Du das so gemacht also bei Deinem Kernel... btw...läuft der?

Warum machst Du das mit SECURE_MOUNT so kompliziert? Der Kernel ist ein sehr komplexes Gebilde... wenn man da im Code Veränderungen vornimmt, sollte man genau wissen was man da macht. Es gibt Optionen für sowas wenn man den Kernel baut....

Das sind Acer's Änderungen.

Und nein, so kompliziert ist der Kernel auch wieder nicht. Haklig wird es nur, wenn man bestimmte Locking-Regeln einhalten muss. Die muss man dann einfach kennen. Leider sind die nicht immer dokumentiert.
 
@Matz3e

das Auskommentieren oder löschen des von Dir zitierten Codes ist für mich wie eine Operation am offenen Herzen.

Hast du denn einen anderen Weg gefunden ?
Ja.

Nochmal.... es gibt Kernel-Optionen, die sowas regeln.

@jpo234

ich habe das zwar noch nicht gegen einen Vanilla Kernel gecheckt, aber ich bezweifel, dass es sich hierbei um Änderungen von ACER handelt.... zumindest, was die von Matz3e zitierte Passage angeht.

Was eine ACER Änderung sein dürfte, dass ist die Passage
CONFIG_ACER_SECURE_MOUNT=y
Wenn man sich den Quellcode mal anguckt, dann kann man sehen, dass die o.g. Option im Makefile "[Kernel-Ordner]/fs/" dazu führt, dass die allgemeine - von Matz3e zitierte - Option "SECURE_MOUNT" gesetzt wird, sofern "CONFIG_ACER_SECURE_MOUNT=y" ist.

Mit anderen Worten... Das Problem wird nicht am Ursprung gelöst, sondern es wird irgendwo mittendrin etwas rumgefrickelt, was vielleicht zufällig zum gleichen Ergebnis führt.

Und nein, so kompliziert ist der Kernel auch wieder nicht.
Da nimmt einer dem Mund aber ganz schön voll... Knapp 100MB Quell-Code sind also nicht kompliziert.... Okay.

Haklig wird es nur, wenn man bestimmte Locking-Regeln einhalten muss.
Was bitte sind "Locking-Regeln"...?

Ich frage mich an dieser Stelle immer ob einer von Euch sich überhaupt mal mit dem Quell-Code auseinandergesetzt hat. Möchte wetten, dass ihr es auch immer noch nicht verstanden habt, wie man "Dauer-Root" "anschaltet". Das entnehme ich mal den Äußerungen zum Thema "init support" die an der einen oder anderen Stelle gepostet werden. Ganz ehrlich... Nehmt Euch mal etwas Zeit und setzt Euch mit der Materie auseinander. Wenn Ihr konstruktive Fragen habt beantworte ich Sie gern, sofern ich es denn kann.... Aber solche Postings könnt Ihr Euch schenken. Die bringen keinem etwas.
 
Zuletzt bearbeitet von einem Moderator:
Ich bin kein Profi auf dem Gebiet, aber es macht spass neues dazu zu lernen.
Also kann man sich hier doch auch austauschen etc.
Wie geht denn das mit "full root" ? wie du sagst.

Sicher ist es nicht die Musterlösung das ganze auszukommentieren, aber ganz ehrlich wanye ? Es geht (wahrscheinlich)
 
lieckedeeler schrieb:
Da nimmt einer dem Mund aber ganz schön voll... Knapp 100MB Quell-Code sind also nicht kompliziert.... Okay.

Als ich meine erste Änderung gemacht habe hat er noch auf eine 1,4MB Diskette gepasst. Ansonsten hätte man ihn auch nicht über eine 9600baud Modemverbindung runterladen können...

lieckedeeler schrieb:
Was bitte sind "Locking-Regeln"...?

Wann welche Ressourcen durch welches Lock geschützt werden müssen. Oder wann eine Speicherbarriere erforderlich ist, damit die CPU beim Out-of-order execution nicht versehentlich auf falsche Daten zugreift.

lieckedeeler schrieb:
Ich frage mich an dieser Stelle immer ob einer von Euch sich überhaupt mal mit dem Quell-Code auseinandergesetzt hat. Möchte wetten, dass ihr es auch immer noch nicht verstanden habt, wie man "Dauer-Root" "anschaltet". Ganz ehrlich... Nehmt Euch mal etwas Zeit und setzt Euch mit der Materie auseinander. Wenn Ihr konstruktive Fragen habt beantworte ich Sie gern, sofern ich es denn kann.... Aber solche Postings könnt Ihr Euch schenken. Die bringen keinem etwas.

Mein erster Linux-Kernel war 0.12 Anfang '92. Ich bin extra vorzeitig aus den Weihnachtsferien an die Uni zurückgekommen, damit ich die oben erwähnte 9600baud Standleitung für mich alleine hatte :thumbsup:
 
@Matz3e

das es Dir Spass macht etwas dazu zu lernen finde ich gut. So soll es ja auch sein. Tu' mir aber bitte den Gefallen... wenn Du vorhast den Kernel zu modifizieren, dann mach' das über die dafür vorgesehenen Tools... sprich
oder
Andernfalls läufst Du Gefahr, dass der Kernel nicht kompiliert. Zu dem Thema "Dauer-Root" guck Dir mal die init Dateien an. Dort findest Du was du brauchst. Hier nochmal ein Link, der mir u.a. geholfen hat, das Problem zu lösen... http://elinux.org/Android_Booting



Der ursprüngliche Beitrag von 11:44 Uhr wurde um 11:52 Uhr ergänzt:

@jpo234

Es ist schön zu lesen, dass wir einen Linux-User der ersten Stunde unter uns haben mit Erfahrung im Kernel-Build.

Gleichwohl kannst Du nicht abstreiten, dass der Kernel zu Deinem ersten Build, heute um einiges komplexer ist als damals.

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.
 
Zuletzt bearbeitet von einem Moderator:
lieckedeeler schrieb:
@jpo234

Es ist schön zu lesen, dass wir einen Linux-User der ersten Stunde unter uns haben mit Erfahrung im Kernel-Build.

Gleichwohl kannst Du nicht abstreiten, dass der Kernel zu Deinem ersten Build, heute um einiges komplexer ist als damals.

Ja und nein. Der Kernel ist deutlich modularer, besser strukturiert und dokumentiert. Von daher ist es einfacher, Änderungen zu machen.

Andererseits sind natürlich Module dazugekommen, die wirklich extrem komplex sind und an denen ich mich nur extrem behutsam vergreifen würde. Das liegt an der Hardware und eben an 20 Jahren Entwicklung.

Aber der konkret von Matze zitierte Code ist einfach zu verstehen und kann auch bei einem Fehler nicht viel kaputt machen. Von dem von Dir zitierten Overclocking würde ich aber auch die Finger lassen. Dazu muss man die Hardware wirklich detailliert kennen, und das ist gerade bei den SoCs in der Regel nur der Hersteller.

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.

Kann ich unterschreiben, aber nicht wegen der Softwarekomplexität im Kernel, sondern weil man bei den Embedded-Sachen im Fehlerfall nicht einfach per CD/DVD/USB ein Rettungssystem booten kann, um den Fehler zu reparieren.
 
@jpo234

da Du die Acer-Kernel-Config zu kennen scheinst, sind wir uns doch aber einig, dass Matz3e sein "Gefrickel" lassen kann, wenn er z.B. mit menuconfig unter "Security Options" den Menupunkt
[X] Acer secure mount enabler
wegnimmt.

Du bist ja schon länger wie ich "auf Linux" und kannst mir sicher helfen... Mein Problem habe ich hier geschildert https://www.android-hilfe.de/forum/...g.9/android-toolchain-pfadangaben.314346.html. Vielleicht kannst Du mir sagen, was da nicht rund läuft... ich sehe nämlich den Wald vor lauter Bäumen nicht mehr.
 
Zuletzt bearbeitet von einem Moderator:
Natürlich kann man das ganze dann weg lassen.
Ich hatte oben doch gefragt ob es noch eine ander Möglickeit gibt, also warum diese ganze Diskussion ?

Trotzdem Danke, wieder was gelernt und ein anderer weg sich mit der Sache zu befassen.
 
Ich musste kernel/arch/arm/mach-tegra/Makefile
noch um
Code:
plus_sec := $(call as-instr,.arch_extension sec,+sec)
AFLAGS_sleep.o :=-Wa,-march=armv7-a$(plus_sec)
ergänzen, weil sich sleep.S sonst nicht übersetzen ließ. Hatte sonst keiner das Problem?
 
@jpo234

nein... das bauchte ich nicht machen. Übersetzen lief "out of the box"... Also Quellen entpackt, config von Acer genommen und nur den "Secure Mount" rausgenommen... Das wars. Aber... ich glaube Du benutzt ne andere Toolchain, kann das sein? Ich habe 4.4.3, weil ich das mit 4.6 nicht ans laufen gekriegt habe.... Jetzt weiss ich warum... Danke!
 
lieckedeeler schrieb:
@jpo234

nein... das bauchte ich nicht machen. Übersetzen lief "out of the box"... Also Quellen entpackt, config von Acer genommen und nur den "Secure Mount" rausgenommen... Das wars. Aber... ich glaube Du benutzt ne andere Toolchain, kann das sein? Ich habe 4.4.3, weil ich das mit 4.6 nicht ans laufen gekriegt habe.... Jetzt weiss ich warum... Danke!

Richtig:
Code:
gcc version 4.6.x-google 20120106 (prerelease) (GCC)
 
lieckedeeler schrieb:
@all

Habe mal ein Update gemacht zum Thema Kernel mit DVB-T.... btw... ich habe da auch noch meine Notizen zum Thema "Dauer-Root" gepostet. Guckt es Euch an... Viel Spass damit.

Das A210 zum TV zu machen ist ne coole Sache.
Habe das grad mal installiert, nur zur Sicherheit nochmal gefragt:

1. boot_new.img flashen
2. fw in /etc/firmware kopieren
3. droidtv installieren
4. dvb-t stick rein und dann??? :confused2:

DroidTV meldet: "Sorry, no device found..."

Hab ich was vergessen?
Hatte versucht mit USB-Debugging an und aus --> the same
Hatte mir nen Stick bei meinem Nachbarn geborgt, weil ich das erstmal testen wollte, bevor ich mir einen kaufe.
 
Lies mal post#1 des entsprechenden Threads nochmal :)
... Geht noch nicht, bestimmt aber bald

Gesendet von meinem P1 mit der Android-Hilfe.de App
 
lieckedeeler schrieb:
@Heroturtle

sag' mir mal welchen Stick Du hast.... dann mach' das - sofern unterstützt - mal rein... Solltest Du den Terratec Cinergy XE USB Rev1 haben, benötigst Du eine andere Firmware... AF9005 glaube ich...
Kann ich bestätigen mit der af9005 Firmware. Ich habe genau den genannten Stick !
Hast Du mal geguckt, ob das mit "Dauer-Root" jetzt geht..? Hatte die RAM-Disk diesbezüglich nochmal angepasst... Müßtest jetzt eigentlich sofort nach dem booten "rw" haben. Rückmeldung wäre super...
Ja schreibt mal ne Rückmeldung. Bei mir funzt es auch mit dem dauerhauften rw Recht auf /System.




Gesendet von meinem A210
 
Also rw funzt :thumbup:, ich musste nur erstmal die Automatisierung von dir @schlex zurückstellen, bevor ich das testen konnte, aber ja, ich habe system rw nach dem neustart :biggrin:

Der Stick vom Nachbarn ist ein Terratec Cinergy TStick RC.
Ich schaue mal in netz nach der fw.

@vetzki
Ich hatte das gelesen, aber ich dachte, vllt hilft es euch, wenn man das, was bis jetzt da ist mal ausprobiert und guckt, was passiert. Nach dem Motto 100 tester == 100 Sticks == 100 problems :winki: you know?
 
lieckedeeler schrieb:
@Heroturtle
@all

Kann mir vielleich noch jemand sagen, warum ich die Überschrift im Release Thread nicht mehr ändern kann... Habe das auf 1.2 gemacht, wird aber in der Forumansicht nicht geändert.... Schönen Sonntag...!

Gehe auf "Ändern" des Posts und wenn du dann das Bearbeiuntsfenster siehst, klicke auf Erweitert rechts unten... Dann sollte es gehen.
 
lieckedeeler schrieb:
@Heroturtle

Habe gerade ein Update des Kernels mit weiterer DVB-T Unterstüzung gemacht. Vielleicht magst Du mal testen.



Damit sollte Dein Stick auch laufen. Wie gesagt... Du benötigst noch die passende Firmware für den Stick. Wenn Du das Tablet bootest, warte mal ab bis es "oben" ist. Dann öffnest Du den Terminal auf dem Tablet, steckst den Stick rein und gibst mal "dmesg" ein. Dann solltest Du sehen können, was er so zu dem Stick sagt. Sofern Du irgendwo etwas von "frontend" lesen kannst, sollte alles passen.

@all

Kann mir vielleich noch jemand sagen, warum ich die Überschrift im Release Thread nicht mehr ändern kann... Habe das auf 1.2 gemacht, wird aber in der Forumansicht nicht geändert.... Schönen Sonntag...!

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?

Der ursprüngliche Beitrag von 10:11 Uhr wurde um 10:36 Uhr ergänzt:

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 ?
 
Rein interesse halber.

Wirklich brauchen tu ichs nicht. (Läuft ja wirklich gut, zocken tu ich auch nicht viel).
Eigentlich bräuchte ich nicht mal das tablet :D, von daher falls der prozi durchbruzeln sollte wärs auch nicht so tragisch (zwar ärgerlich, das geld wächst ja nicht an den Bäumen aber was solls)

ot:
Mich würd auch ne Anleitung zum Öffnen interessieren hab iwie noch nichts gefunden, weil bei mir ist Staub unterm Display.
 

Ä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