Gingerbread für Droid

vielleicht sollte geo sich mal das milestone vornehmen anstatt die dämliche playse...
 
hi erstmal, ich bin noch recht neu im Android-Umfeld. Nachdem der Kernel ja beliebige Module frisst, könnte man ein Modul schreiben, dass den neuen Kernel in den Speicher lädt und dann ausführt. Soweit ich weiß sind neue Kernel mittlerweile reallocierbar, um eben dies zu erleuchtern, d.h. sie können an einer beliebigen Stelle im Speicher stehen. Ansonsten muss man ihn halt umkopieren - bissle tricky, weil man da den laufenden Kernel überschreibt, sollte aber machbar sein. Dann muss man diesen Kernel starten. Ein Fallstrick dürfte noch sein, dass die Kerneltreiber nicht erwarten, dass die HW bereits initalisiert ist, wobei die meisten Treiber als erste Tat die entsprechende HW reseten müssten. Ansonsten müsste der Kernelloader die HW reseten oder der Kerneltreiber angepasst werden. Der einzige Nachteil dieser Methode (außer dass es frickelig ist^^) ist die etwas längere Bootzeit, weil ja zwei Kernel gebootet werden müssen. Das dürfte sich aber in Grenzen halten.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Pwned
mifritscher schrieb:
hi erstmal, ich bin noch recht neu im Android-Umfeld. Nachdem der Kernel ja beliebige Module frisst, könnte man ein Modul schreiben, dass den neuen Kernel in den Speicher lädt und dann ausführt. Soweit ich weiß sind neue Kernel mittlerweile reallocierbar, um eben dies zu erleuchtern, d.h. sie können an einer beliebigen Stelle im Speicher stehen. Ansonsten muss man ihn halt umkopieren - bissle tricky, weil man da den laufenden Kernel überschreibt, sollte aber machbar sein. Dann muss man diesen Kernel starten. Ein Fallstrick dürfte noch sein, dass die Kerneltreiber nicht erwarten, dass die HW bereits initalisiert ist, wobei die meisten Treiber als erste Tat die entsprechende HW reseten müssten. Ansonsten müsste der Kernelloader die HW reseten oder der Kerneltreiber angepasst werden. Der einzige Nachteil dieser Methode (außer dass es frickelig ist^^) ist die etwas längere Bootzeit, weil ja zwei Kernel gebootet werden müssen. Das dürfte sich aber in Grenzen halten.

Da bin ich so Baff, dass ich nix zu antworten weiss. Liegt daran, dass ich keine Ahnung davon habe, mich aber dennoch frage, wieso das dann (falls die Gedankengänge richtig sind) noch nicht realisiert wurde.
 
Kurz: weil es zum großen Teil eine relativ langweilige, aber zeitaufwendige Frickelei sein dürfte, wo man sich tief in die Materie einarbeiten muss. Man muss sich dafür in C, Assembler und die Architektur des SoC, zumindest der CPU und der MMU, recht gut auskennen. Es sind halt verdammt viele Kleinigkeiten zu beachten - alleine das eventuelle überschreiben des alten mit dem neuen Kernel zur Laufzeit im RAM dürfte anstrengend werden. Die noch am "einfachsten" zu realisierende Variante wäre ein angepasstes /sbin/init (die erste Userspace-Anwendung, die vom Kernel gestartet wird), die nichts anderes tut als ein kernelmodul zu laden uns auszuführen. Dieses Kernelmodul hat sowohl den "Kernelkopierer" als auch den neuen Kernel direkt dabei, um den Zugriff auf letzteren zu vereinfachen - Dateisystem oder sdkarte ist da nicht. Dieses muss beim initialisieren als erstes sämtliche(!) IRQs ausschalten, damit während dem kopieren die Kontrolle nicht dem halb überschriebenen Kernel übergeben wird, und alle nicht benötigte HW (Netz, sd-karte, Tastatur, GPU etc.pp.) soweit möglich deaktivieren. Danach muss dieses Modul den Kernel selber an die richtige Stelle kopieren, und zwar unter Umgehung des MMUs (Speicherverwaltung). Danach muss es die MMU vermutlich auf die Starteinstellungen zurücksetzen, damit der Kernel so loslegen kann als wäre es der erste Kernel. Das dürfte auch für diverse andere CPU-Funktionen gelten. Dann kann in den Kernelstartpunkt gesprungen werden. Das ist eine extreme Fieselarbeit, auch weil es einen recht großen Bereich gibt, den man nicht so einfach debuggen kann, und das absolut zuverlässig gehen muss. Es wäre unschön, wenn das nur in 50% der Fälle funktioniert, weil man bei jedem Fehlschlag vermutlich zumindest den Akku ausbauen muss. Btw, /sbin/init (bzw. das von ihm gestartete kernelloaderscript, was vermutlich sauberer ist), muss natürlich erkennen, welcher Kernel läuft und beim neuen Kernel abbrechen, da es sonst eine Überschreib-Endlosschleufe gibt Wir sollten denke ich als erstes die Milestone-Variante von CM6 als offizielle CM6-Portierung, wenn auch ohne bzw. veralteten Kernel, reinbekommen, damit es nicht allzusehr zersplittert, und dann den Kernelloader schreiben, der einen für den Milestone angepassten CM6-Kernel bootet.
 
  • Danke
Reaktionen: kolibree und Pwned
wow.
mifritscher du solltest umbedingt mal den irc channel (milestone-modding) besuchen und dich mit nadlabak und skrilax_cz unterhalten.
Vielleicht funktioniert es ja, viel andere Chancen haben wir ja leider nicht.
 
Ich glaube mich zu erinnern, das derartiges schon bei XDA Developers versucht und für nicht möglihc erklärt wurde. Ich guck später mal nach, ob ich den entsprechenden Thread finde.
 
Ist nicht genau das das was bei 2nd boot gemacht wird. Das funktioniert ja bereits, nur leider stürzt das Modem dabei ab und lässt sich nicht wieder starten. Und leider kann es danach nicht wieder gestartet werden. Die Hoffnung ist dass das mit dem neuen Kernel nicht passiert, aber das sehen wir erst wenn die Sources veröffentlicht werden.
 
Wo gibts Infos zu diesem 2nd boot ?
 
Naja Gingerbread hin oder her, ne Möglichkeit selbstkompilierte Kernel zu starten, wäre mir lieber als nur ein neues Pfuschmodrom mit altem Kernel und neuem "Rest".

Ich benutz nur CM6, da der Kernel ein 2.2 Kernel ist und deshalb eigentlich recht gut funktioniert.
 
Warum hat Europa eigentlich den Bootload lock und die Amis nicht?
 
lord_fritte schrieb:
Warum hat Europa eigentlich den Bootload lock und die Amis nicht?

die Frage kann Dir nur Moto beantworten....angeblich auf Wunsch der Provider ausserhalb USA
 
eybee1970 schrieb:
die Frage kann Dir nur Moto beantworten....angeblich auf Wunsch der Provider ausserhalb USA
Oder einfach weil wir in Motos Augen nur Abfall sind..
Der Kunde ist König, bei Motorola ist der europäische Kunde einfach nur Dreck.
 
Quatsch, die anderen haben auch einen gelockten Bootloader.
Das Droid ist eine Ausnahme, weils das erste Androidgerät von Motorola ist (und nein, das ist nicht identisch mit dem MS).
 
Redh3ad schrieb:
...Das Droid ist eine Ausnahme, weils das erste Androidgerät von Motorola ist ....

aha, wo haste denn die Info her?
 
War das nicht ne Aussage von Moto irgendwo, dass man sich erst nach dem Droid entschieden hat, das so zu machen, wie es aktuell gemacht wird?
Weiß es nicht mehr genau.
 
Redh3ad schrieb:
War das nicht ne Aussage von Moto irgendwo, dass man sich erst nach dem Droid entschieden hat, das so zu machen, wie es aktuell gemacht wird?
Weiß es nicht mehr genau.

keine Ahnung, ist mir neu - deshalb frag ich ja :)
 
Alle relevanten Moto-Telefone außer dem ersten Droid sind gelockt. Milestone, Milestone 2, Droid 2, Droid X. Die Amis gucken mittlerweile genauso doof aus der Wäsche wie wir.
 
b.pwned schrieb:
Alle relevanten Moto-Telefone außer dem ersten Droid sind gelockt. Milestone, Milestone 2, Droid 2, Droid X. Die Amis gucken mittlerweile genauso doof aus der Wäsche wie wir.

yo...die spinnen halt, die Motorolaner....aber das ist nur noch temporär mein Problem und dann NIE wieder :winki:
 

Ähnliche Themen

Thoxx
  • Thoxx
Antworten
4
Aufrufe
4.226
Thoxx
Thoxx
P
  • philippw93
Antworten
6
Aufrufe
1.240
GARSTIG
G
fegerman
Antworten
9
Aufrufe
1.095
fegerman
fegerman
Zurück
Oben Unten