in /system/ schreiben ohne Root-Rechte mittels squashfs/unionfs

donut

donut

Neues Mitglied
5
Hallo Desire-Hackers!

Mir fiel gerade folgende Idee ein.
Falls der originale HTC Desire Kernel squashfs + unionfs nicht unterstützt, kompiliert man sich einen passenden selbst. Die Quellen sind ja vorhanden (auch wenn ich sie auf developer.htc.com zurzeit nicht sehe).
Diesen Kernel flashed man nun mit passenden Bootparametern auf das Desire.
Auf der SD-Karte liegen Files, die ein Filesystem-overlay für, sagen wir, /system/ enthalten. Der Kernel bindet diese beim Booten ein und somit sind Änderungen am system möglich, ohne das system anzutasten. Wenn man das als nurlese-Variante macht, sind zwar keine Änderungen während der Laufzeit möglich, aber das System als solches bleibt halbwegs sicher.
Wenn man die betreffenden Dateien auf der SD-Card löscht oder umbenennt, ist das Gerät wieder im Originalzustand (abgesehen vom Kernel).
Eventuell benötigt der Kernel zum Systemstart ein Init-Ram image, das ebenfalls auf der SD-Card liegen würde.

Auf diese Weise könnte man am System rumbasteln und hätte nach einem Neustart zum Beispiel neue Werte in /system/etc/ oder könnte einen HID-Daemon einbinden oder, oder ...
Es sollte sich sogar Debian oder Ubuntu booten lassen, vorausgesetzt man hat binaries für den Schnappdrachen im Desire.

Hintergrund ist, dass ich gerne die eine oder andere Kleinigkeit ändern würde, aber keine Lust habe mir ROMs, aus welchen Quellen auch immer, auf ein Gerät zu flashen mit dem ich so sensible Sachen wie Onlinebanking mache.

Was meint Ihr?
Gibt es jemanden der sich damit beschäftigt hat?
Wo kann ich über das Auswechseln des Kernels nachlesen?
Wie kann ich die Boot-Paramter des Kernels ändern?


EDIT 2010-06-08: Das Projekt hat jetzt ein zuhause http://code.google.com/p/aufs-desire/
 
Zuletzt bearbeitet:
Danke für den Link xtcislove, das ist etwa das was ich versucht habe zu beschreiben. :)

xtcislove schrieb:
Dafür wird aber 1000% Root benötigt weil du den kernel ja ohne root nichtmal laden kannst ;-)

Ich will ja nicht kleinlich sein, aber mehr als 100% sind eh' nicht drin! ;)

Aber mal im Ernst, den Kernel lädt ja nicht Root sondern der bootloader. Oder liege ich da falsch?
Man müsste doch lediglich einen Teil der Flash-Prozedur machen, um den Kernel und gegebenenfalls den bootloader auszutauschen.

Woher bekommt man Infos zum Aufbau des Desire?
In welchen Speicherbereichen oder Speichern liegen die Images des bootloaders und des Kernels?
Wo gibt es ein Service-Manual für das Desire?
Wo gibt es eine Chipset-Dokumentation des eingesetzten Snapdragon?
 
Zuletzt bearbeitet:
Der Bootloader ist aber Locked ;-) Wird haben nur einen "Semi-Root". Wir haben nur Root durch ein "geklautes" Image ;-) Tja deswegen ist es nicht so einfach den Kernel zu laden. Das must du schon im Recovery machen .....
 
  • Danke
Reaktionen: donut
Danke für die Info.

Nicht, dass wir uns falsch verstehen. Ich will den neuen Kernel nicht während der Laufzeit laden (was ja Root-Rechte und einen Linux-Loader ala loadlin vorraussetzen würde) sondern die Hardware soll ganz normal starten, nur eben mit einem modifizierten Kernel-Image.
Kann man das Kernel-Image nicht einfach durch flashen ersetzen?
Was meinst Du mit "Locked"?
Was bedeutet "Das must du schon im Recovery machen ....."?
 
Zuletzt bearbeitet:
Locked bedeutet das NUR von HTC Signierte Aktualisierungen (HTC Signed Update) Auf das Handy gespielt werden.

Ein Recovery Menu ist ein Menu indem du verschiedene tiefer ins System eingreifende optionen zur Auswahl hast. Das ist aber nur möglich wenn du dein Handy rootest.(Root ist bisher nicht vollständig - daher ist von meiner Meinung nach von solchen sachen abzusehen) wobei das was du vor hast auch jetzt schon funktioniert - nur nicht über die SDKarte (Was ich auch mit vollen Rootrechten nicht gehen wird denn wenn du system datein auf die SDKarte auslagerst sind sie ja bei rausnehemn der Karte weg = schlecht ) Ich versteh auch nicht ganz was dir das bringt? Wieso editierst du die gewolten Datein nicht einfach auf dem Computer packt sie in ein Update.zip und flashst das .zip dann ... Kannst doch immer ein Nandroid Backup aufspielen .... =)

Der Thread oben beschäftigt sich mit deinem Problem, klar lässt sich das alles machen aber dann hättest du dir ein N1 holen sollen. Mit dem Desire ist es momentan nicht möglich da wird keinen Vollständigen Schreibzugriff auf das Gerät haben... leider =( Hatte ich mir vor dem Kauf auch anders erwartet =)
 
Zuletzt bearbeitet:
Danke für die ausführliche Erklärung des Recovery-Menüs. Das vom Desire kenne ich noch nicht, weil ich dazu ja Rooten müsste, oder?. ;)
Mir ist jedoch das Drakaz-Recovery für's Samsung Galaxy bekannt.

Kann man denn mit dem für's Desire einzelne Images, wie eben den Linux-Kernel flashen?

"Wieso editierst du die gewolten Datein nicht einfach auf dem Computer packt sie in ein Update.zip und flashst das .zip dann"

Weil ich genau das nicht machen will!

"Kannst doch immer ein Nandroid Backup aufspielen ..."

Geht das inzwischen auf dem Desire?

"Mit dem Desire ist es momentan nicht möglich da wird keinen Vollständigen Schreibzugriff auf das Gerät haben."

Genau das will ich ja mit meiner Idee umgehen.
Für die, die es nicht wissen: Unionfs ist ein Dateisystem, welches der Linux-Kernel transparent über ein Nurlese-Dateisystem legt.
Das bedeutet, die system-Partition bleibt wie sie ist und in einer extra Datei auf der SD-Card werden die Schreibzugriffe auf /system gespeichert.
Entfernt man diese Datei passiert nichts, außer dass sie nicht eingebunden wird beim Booten. Das Desire wäre somit im 100%-en Originalzustand! :D

Alles klar? Wenn nicht -> UnionFS ? Wikipedia
Dort wird auch das vielleicht besser geeignete aufs erwähnt.

Das erwähnte squashfs ist dafür erstmal nicht nötig.


"Was ich auch mit vollen Rootrechten nicht gehen wird denn wenn du system datein auf die SDKarte auslagerst sind sie ja bei rausnehemn der Karte weg = schlecht"

Ja, schon, aber das ist doch auch ein Vorteil meiner Idee.
Und versuche mal beim Desire die SD-Card rauszunehmen während der Akku drin ist! Ein Neustart ist auf jeden Fall nötig.
Problematisch wäre allerdings das Verbinden der SD als "Festplatte" mit einem PC, da sie ja dabei aus dem Telefon ausgehängt werden würde. EDIT: Nur, wenn die SD-Card eine einzige (VFAT-)Partition hat. Wenn die Unionfs-Datei auf einer zweiten Partition liegt, ist das wohl kein Problem mehr.

Naja, ich muss mal, wenn Zeit dafür ist, bei XDA-Developers und MoDaCo recherchieren, um zu ermitteln wie man den Kernel auswechselt usw.. :cool:
Trotzdem danke für Deine Mühe.
 
Zuletzt bearbeitet:
Vielleicht wäre da auch die kexec-Methode interessant, die jetzt ja für das Milestone verwendet wird.

-> https://www.android-hilfe.de/forum/...er-des-motorola-milestone-umgangen.30121.html

So wie ich das verstanden habe lässt sich ein kompletter Custom Kernel laden.
Ich bin grad dabei mein Build-System einzurichten. Wenn der Stock Kernel problemlos durchläuft, werd ich es mir mal kexec genauer anschauen.
 
antweb schrieb:
Vielleicht wäre da auch die kexec-Methode interessant...
So wie ich das verstanden habe lässt sich ein kompletter Custom Kernel laden.

Das stimmt. Das ist auch cool. Erfordert jedoch ebenfalls Root-Rechte. Aber es ist nicht das, was ich meine. Natürlich wäre auch KVM der Hit! ;-)
Mir schwebt eine Lösung vor, bei der nur minimale Änderungen am boot-Image gemacht werden, und Modifikationen an /system in einer separaten Datei auf der SD-Card stattfinden.
BTW. Weiß jemand wie ich ein boot-Image aus einem update.zip zerlegen kann?
 
Könnte es sein, dass alle Downloads auf
Unionfs: A Stackable Unification File System
nicht erreichbar sind?

Konnte auf die Schnelle auch keinen Mirror finden.
Will schon mal versuchen ein passendes Kernel Modul zu kompilieren.
 
Danke burst, das ist wirklich sehr nützlich. Damit kann ich was anfangen. :)
Noch 2 Fragen:

Gibt es einen Emulator z.B. qemu-arm oder der aus dem Android-SDK, mit dem ich prüfen kann ob mein Kernel und meine Ramdisk funktionieren?

Gibt es ein deutsches Android-Wiki in dem das geballte Wissen, das hier in den Foren verstreut ist, konzentriert ist?
 
antweb schrieb:
Könnte es sein, dass alle Downloads auf
Unionfs: A Stackable Unification File System
nicht erreichbar sind?

Das sehe ich auch so. Komme zwar über den Google Cache auf die Downloadseite, die Files sind aber nicht erreichbar.

antweb schrieb:
Will schon mal versuchen ein passendes Kernel Modul zu kompilieren.

Das ist sehr nett von Dir. Falls Du noch Lust hast, beschäftige Dich bitte hiermit.
http://aufs.sourceforge.net/
Aufs ? Wikipedia

Es handelt sich um den Nachfolger von unionfs und ist, entgegen meinem ursprünglichen Thementitel, sicher besser geeignet.
 
Der Android Emulator hat einen extra Parameter dafür.

emulator -kernel /pfad/zu/img -avd AVDName

Du müsstest dann aber wahrscheinlich mit dem Kernel aus dem Android Repo arbeiten, andere wird er bestimmt nicht laden.

Wenn du das AOSP erstellt hast, kannst dann die Umgebungsvariable ANDROID_PRODUCT_OUT passend auf den /<aosp-pfad>/out/target/product/generic legen, damit er die entsprechenden Dateien direkt von dort lädt. Dann kann man sich -avd auch sparen.
 
  • Danke
Reaktionen: donut
Die erste Hürde ist geschafft. Ein Kernel Modul, dass auch vom Desire geladen werden kann, haben wir.

Mit dem stock Kernel gibts aber folgendes:

<4>[13295.902252] aufs: Unknown symbol debug_mutex_set_owner
<4>[13295.903808] aufs: Unknown symbol __lookup_one_len
<4>[13295.904968] aufs: Unknown symbol do_splice_to
<4>[13295.909362] aufs: Unknown symbol lookup_hash
<4>[13295.912231] aufs: Unknown symbol do_splice_from
<4>[13295.912719] aufs: Unknown symbol do_truncate
<4>[13295.914489] aufs: Unknown symbol mmap_min_addr
<4>[13295.914978] aufs: Unknown symbol deny_write_access

Jetzt müssen noch die Kernel-Patches von aufs integriert werden.
Mein Kernel von gestern Abend blieb im Splash stecken. Sieht noch nach ner menge Arbeit aus.
 

Anhänge

  • aufs.ko.zip
    1 MB · Aufrufe: 103
Hallo antweb,

antweb schrieb:
Ein Kernel Modul, das auch vom Desire geladen werden kann, haben wir.

Vielen Dank dafür! :)

Mir kommt das mit 3MB für ein (ARM-)Modul ziemlich groß vor, vorsichtig ausgedrückt. ;)
So sieht das bei mir auf x86 aus:

donut@hp6730s:~$ ls -lh /lib/modules/2.6.31-21-generic/kernel/ubuntu/aufs/aufs.ko
-rw-r--r-- 1 root root 193K 2010-03-24 12:33 /lib/modules/2.6.31-21-generic/kernel/ubuntu/aufs/aufs.ko



antweb schrieb:
Jetzt müssen noch die Kernel-Patches von aufs integriert werden. ... Sieht noch nach ner menge Arbeit aus.

Hm, ich frage mich gerade, ob es Sinn macht den ganzen aufs-Spaß auf http://github.com/plans oder http://code.google.com/intl/de-DE/projecthosting/ zu hosten, als Open Source - Projekt, versteht sich. :)
Ich arbeite gern mit git oder (wenn's sein muss) Subversion. Auch finde ich Wikis besser als Foren, wenn es um Zusammenarbeit und Dokumentation geht. Was denkt Ihr?

Wie hast Du das Module geladen? Mit Root-Rechten auf dem Desire oder hast Du ein Recovery-Image gemacht oder im Emulator?
EDIT: Noch 'ne Frage: Wo hast Du die Kernel config her? Kann die im Desire auf die Schnelle nicht finden.
 
Zuletzt bearbeitet:
donut schrieb:
Mir kommt das mit 3MB für ein (ARM-)Modul ziemlich groß vor, vorsichtig ausgedrückt. ;)
So sieht das bei mir auf x86 aus:

donut@hp6730s:~$ ls -lh /lib/modules/2.6.31-21-generic/kernel/ubuntu/aufs/aufs.ko
-rw-r--r-- 1 root root 193K 2010-03-24 12:33 /lib/modules/2.6.31-21-generic/kernel/ubuntu/aufs/aufs.ko

Hab mich schon gewundert, dass adb push so lange braucht.
Ist jetzt noch einmal ohne CONFIG_AUFS_DEBUG durchgelaufen.
Das Ergebnis ist aber immer noch 2.7MB. Ich habe es nach der Anleitung für Module only erstellt. Vielleicht sollte ich es einfach mal direkt mit dem Kernel erstellen.

donut schrieb:
Hm, ich frage mich gerade, ob es Sinn macht den ganzen aufs-Spaß auf Plans & Pricing - GitHub oder Google Project Hosting - Google Code zu hosten, als Open Source - Projekt, versteht sich. :)
Ich arbeite gern mit git oder (wenn's sein muss) Subversion. Auch finde ich Wikis besser als Foren, wenn es um Zusammenarbeit und Dokumentation geht. Was denkt Ihr?

Klingt nach ner guten Idee. Ein Forum ist zwar gut für Diskussionen, aber man verliert schnell die Übersicht.
Mit git hakt es bei mir noch etwas, bin SVN gewohnt. Werde mich da aber früher oder später eh einarbeiten müssen.

donut schrieb:
Wie hast Du das Module geladen? Mit Root-Rechten auf dem Desire oder hast Du ein Recovery-Image gemacht oder im Emulator?
EDIT: Noch 'ne Frage: Wo hast Du die Kernel config her? Kann die im Desire auf die Schnelle nicht finden.
Mein Desire hat root. Konnts direkt über adb shell und insmod laden.
Zum testen sicher der unkomplizierteste Weg.

Meine Config hab ich aus /proc/config.gz
 
  • Danke
Reaktionen: donut
antweb schrieb:
Ist jetzt noch einmal ohne CONFIG_AUFS_DEBUG durchgelaufen.
Das Ergebnis ist aber immer noch 2.7MB. ... Vielleicht sollte ich es einfach mal direkt mit dem Kernel erstellen.
Meine Idee war es einen Kernel zu bauen, der dem Stock-Kernel des Desire entspricht zuzüglich aufs, fest einkompilert. Man könnte das Modul auch mit der Init-Ramdisk laden, das erscheint mir aber unsicher.
antweb schrieb:
Mit git hakt es bei mir noch etwas, bin SVN gewohnt. Werde mich da aber früher oder später eh einarbeiten müssen.
Ich finde Git toll, habe aber Wochen gebraucht das einigermaßen zu kapieren. Für das aufs-Ding habe ich mich im Prinzip schon auf code.google.com festgelegt.
Wenn ich's schaffe lege ich das Projekt mal heute Abend an und schreibe gleich die aktellen Erkenntnisse dieser Diskussion in das Wiki.
Die Kernel-Quellen, die ich von developer.htc.com habe werde ich da auch hochschieben.
Welche Sprache sollte man in dem Projekt verwenden? Deutsch oder Englisch?

antweb schrieb:
Meine Config hab ich aus /proc/config.gz

Dort hatte ich sie auch gesucht, aber nicht gesehen. Heute isse da. ;) :rolleyes:
Mein SDK läuft seit gestern. Der Emulator auch.
Werde nach Deinen Hinweisen mal versuchen einen Desire-Kernel aus einem Update.zip zu starten. Wenn das geht, sollte auch der Selbstgekochte laufen.
 

Ähnliche Themen

Maysi2k
Antworten
5
Aufrufe
2.308
Maysi2k
Maysi2k
X
Antworten
9
Aufrufe
2.169
x8651
X
K
Antworten
13
Aufrufe
1.471
Maysi2k
Maysi2k
Zurück
Oben Unten