[Gelöst] Magisk unter Android 10 - Magic Mount (Dateien ersetzen)

O

OE1FEU

Neues Mitglied
8
Ich habe versucht, zu verstehen, was es mit Internal Details von Magisk auf sich hat und dachte, eine Lösung dafür gefunden zu haben, was ich erreichen möchte. Vielleicht findet sich ja jemand, der meine Frage versteht und mich auf eine Lösung hinweist. Ich bewege mich einigermaßen wissend auf einem Linux-System, bin aber kein Entwickler.

Gegeben: OnePlus 5 Stock OxygenOS Android 10 mit up to date magisk und MagiskManager

In dieser Sektion Internal Details wir das beschrieben, von dem ich dachte, es zeigt auf, wie man mit einem tmpfs overlay von magisk Dateien verändern oder ersetzen kann. Beim Betrachten des root file systems bin ich hierauf gestoßen:

Code:
1|OnePlus5:/ # mount|grep system_root                                                                                                                                                        
/sbin/.magisk/block/system_root on /sbin/.magisk/mirror/system_root type ext4 (ro,seclabel,relatime,discard)
/sbin/.magisk/block/system_root on /sbin/charger_log type ext4 (ro,seclabel,relatime,discard)
OnePlus5:/ #

Die Datei, um die es geht, ist /etc/media_profiles.xml, in der die Parameter für Audio und Video bei Aufnahmen festgelegt sind. Die guten Leute von OnePlus habe 96000Bps als Bitrate für aac festgelegt - ich halte das für zuwenig, weil ich mit professionellen Mikrofonen meinen Flügel aufnehmen möchte. Mit der entsprechenden App funktioniert das auch, wie z.B. Cinema 4k, wo ich auch eine andere Audio-Bitrate einstellen kann, aber in einer solchen Aufnahme dann trotzdem 96000Bps bleiben. 320Bps oder vielleicht 1000Bps hätte ich gerne.

Also dachte ich mir:

Code:
OnePlus5:/ # mount -o rw,remount /sbin/.magisk/mirror/system_root

Das sah OK aus, also habe ich die entsprechende Datei modifiziert und in allen Fällen 96000 durch 320000 ersetzt

Code:
File /sbin/.magisk/mirror/system_root/system/etc/media_profiles.xml saved
OnePlus5:/ # mount -o ro,remount /sbin/.magisk/mirror/system_root                                                                                                                            
mount: '/sbin/.magisk/block/system_root'->'/sbin/.magisk/mirror/system_root': I/O error
1|OnePlus5:/ # mount -o ro,remount /sbin/.magisk/mirror/system_root                                                                                                                          
OnePlus5:/ # grep 96000 /sbin/.magisk/mirror/system_root/system/etc/media_profiles.xml

Wie man sieht, beim ersten Aufruf zum remount ro kam ein I/O error, beim zweiten dann nicht mehr.

Nach reboot:

Code:
OnePlus5:/ $ su                                                                                                                                                                              
OnePlus5:/ # grep 96000 /sbin/.magisk/mirror/system_root/system/etc/media_profiles.xml
             bitRate="96000"
             bitRate="96000"
             bitRate="96000"
        minBitRate="8000" maxBitRate="96000"
OnePlus5:/ #

Ich habe How to make a Magisk module replace files gelesen, aber fand die Antwort nicht hilfreich, eben weil ich kein Entwickler bin und es nicht wirklich verstanden habe. Kann mir jemand helfen, ein Modul "Datei ersetzen" zu bauen, das dieser Form entspricht und das ermöglicht, was ich erreichen will? Ich bin auch gerne bereit, etwa dafür zu bezahlen, solange es unter einer Open Source Lizenz veröffentlicht wird.

Ein solches Modul könnte sicherlich auch anderen dabei helfen, kleinere Änderungen am System vorzunehmen.

Anyone?
 
@OE1FEU Wenn du Systemdateien bearbeiten/verändern willst, musst du nur die entsprechende Datei unter /sbin/.magisk/mirror/<Systempartition>/<Pfad> ändern. Das ist alles.
 
BOotnoOB schrieb:
@OE1FEU Wenn du Systemdateien bearbeiten/verändern willst, musst du nur die entsprechende Datei unter /sbin/.magisk/mirror/<Systempartition>/<Pfad> ändern. Das ist alles.

Nope, das geht unter Android 10 nicht mehr.
 
@OE1FEU Dynamic Partition-Layout? Kommst du nur an das super.img dran?
 
Du musst natürlich /system zuerst als rw mounten. Was ich meine ist, die Datei in einem root-Explorer zu bearbeiten, der /system rw mountet.

In einer Terminalapp muss der Befehl aus deinem XDA-Link nur richtig ausgeführt werden. Dort wird eine Mountpoint ohne Referenz erstellt. Du musst eine Partition/Laufwerk benennen, die an einem Mountpoint eingehangen wird. Die Partition wurde aber nicht genannt. Die Datei ließ sich natürlich speichern, aber der Mountpoint war ansonsten komplett leer.

Mit einem Modul ist es natürlich auch elegant gelöst.
Beiträge automatisch zusammengeführt:

OE1FEU schrieb:
Das bezieht sich auf die Dynamic Partitions.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: jogimuc
BOotnoOB schrieb:
In einer Terminalapp muss der Befehl aus deinem XDA-Link nur richtig ausgeführt werden. Dort wird eine Mountpoint ohne Referenz erstellt. Du musst eine Partition/Laufwerk benennen, die an einem Mountpoint eingehangen wird. Die Partition wurde aber nicht genannt. Die Datei ließ sich natürlich speichern, aber der Mountpoint war ansonsten komplett leer.

Nein, das ist nicht korrekt.

Ich habe klar gezeigt, dass die entsprechende Partition gemounted ist, und zwar read only. Mit der Option remount,rw sagt man mount, dass der als Argument aufgeführte mount point erneut gemounted wird und zwar als read/write. Und wenn ich eine Datei mit Angabe des korrekten Pfades editieren kann, dann ist der Mountpoint auch nicht leer.

Ergänzend hätte ich vielleicht noch schreiben sollen, wie / gemounted ist:

Code:
/dev/block/dm-0 on / type ext4 (ro,seclabel,nodev,relatime,discard)

Es ist also in der Tat eine Dynamic Partition oder Logical Volume, wie auch immer man es bezeichnen mag. Natürlich habe ich zuerst versucht, den einfachen Weg zu gehen, wie man's üblich macht, also z.B. mit FX Explorer oder eben in einer root shell, aber wie gesehen: Geht nicht.
 
  • Danke
Reaktionen: BOotnoOB
OE1FEU schrieb:
Nein, das ist nicht korrekt.
Ja, du hast Recht. Das war mein Fehler. Mit remount hätte es reichen müssen, nur den einen Pfad angeben zu müssen. Der Befehl ist mir so bisher nicht unter gekommen. Aber gut zu wissen.

Mich interessiert nur, warum sich /system nicht mounten lässt. Das hat nichts mit Android 10 zu tun.
Das Oneplus 5 hat noch keine Dynamic Partitions, da es nicht mit Android 10 auf den Markt kam. Nur bei diesen Geräten findest du das. Das siehst du in der fstab (fs_mgr_flags = logical, first_stage_mount) und an den einzelnen Partitionen /system und /vendor, die zu einem super.img zusammengefasst sein müssten.

Wenn /system als /dev/block/dm-0 gemountet wird, liegt es daran, dass die Änderungen nach einem Reboot wieder rückgängig gemacht wurden und du /system nicht rw mounten konntest.
Implementing dm-verity | Android Open Source Project
Dasselbe hatte ich auch bei Motorola, als ich krampfhaft versucht habe Systemapps loszuwerden. Du konntest sie löschen, aber nach einem Reboot waren sie wieder da.

Das Problem bzgl. dm-0 löst das Magisk Modul natürlich auch.
 
Zuletzt bearbeitet:
Hey Leute, ich bin am recherchieren und bin zu der Erkenntnis gekommen dass außer Magisk Modulen nicht mehr viel geht was das anpassen von Firmwares angeht!? Abgesehen vom AOSP Image erzeugen natürlich. Unitys SYSOVER gibt es leider auch nicht mehr welches noch erlaubt hat direkt Änderungen am System vorzunehmen. TWRP ist auch nur noch auf den wenigsten Geräten verfügbar und/oder voll funktional...
Kann mir das nochmal jemand bestätigen? Oder kennt jemand eine alternative? Habe mir auch schon AnyKernel angeguckt und überlegt ob ich mir da was abschauen kann. OpenGApps basiert schließlich auch darauf und schreibt direkt ins System. Also irgendwie geht's wohl doch noch? Zumindest mit der Pixel Expierence Recovery die auf dem Open Device Project basieren und keine Probleme beim mounten hat...
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Scum
@miustone Systemdateien zu ändern ist grundlegend noch möglich, auch mit Magisk. Es kommt nur darauf an, welches Gerät du hast.
Beiträge automatisch zusammengeführt:

Magisk macht es einfach nur "systemless", was eigentlich sehr komfortabel ist. Somit können mit der Deinstallation von Magisk auch gleichzeitig alle Modifikationen entfernt werden und du hast nach wie vor eine unmodifizierte ROM.

Bei manchen Geräten geht es halt nicht anders, weil eine Modifikation von der Partition /system
- zu einem Bootloop führt (dm-verity/AVB)
- nicht übernommen wird (fec, forwarded error correction)
- oder aufgrund der dynamischen Partitionen ein Mount als rw nicht ohne weiteres möglich ist
 
Zuletzt bearbeitet:

Ähnliche Themen

M
  • mikesch dauerhaft
Antworten
12
Aufrufe
2.334
BOotnoOB
BOotnoOB
F
  • firedaxhill
Antworten
3
Aufrufe
1.558
firedaxhill
F
C
Antworten
0
Aufrufe
1.213
Cortablo
C
Zurück
Oben Unten