Lesen Sie nur Dateisystem auf Android

Ich habe vor kurzem mein Droid X gerootet und alles scheint perfekt zu funktionieren. Ich habe einige Änderungen an build.prop und wenn ich adb push build.prop /system/ ich folgende Fehlermeldung: failed to copy 'c:\build.prop' to '/system//build.prop': Read-only file system .

Wie kann ich das beheben?

   

Nicht alle Telefone und Versionen von Android haben die gleichen Dinge montiert.
Beschränken Optionen bei der Remontage wäre am besten.

Einfach als rw (Read / Write) neu mounten:

 # mount -o rw,remount /system 

Sobald Sie mit den Änderungen fertig sind, mounten Sie erneut ro (schreibgeschützt):

 # mount -o ro,remount /system 

Hab das von einem Android Forum geholt wo ich die selbe Frage gestellt habe. Hoffe das hilft jemand anderem.

Auf einem Terminalemulator am Telefon:

 mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system 

Dann an der Eingabeaufforderung adb push Sie die adb push

 adb remount 

funktioniert für mich und scheint die einfachste Lösung zu sein.

Während ich weiß, die Frage ist über das echte Gerät, falls jemand hier mit einem ähnlichen Problem im Emulator, mit was immer die neuesten Tools wie Februar 2017 gekommen ist, muss der Emulator von der Kommandozeile aus gestartet werden mit:

 -writable-system 

Für alles, was für das /system schreibbar /system . Ohne dieses Flag remount keine Kombination von remount oder mount das Schreiben in /system .

Nachdem der Emulator mit diesem Flag gestartet wurde, reicht ein einzelnes adb remount nach dem adb root aus, um Berechtigungen zum Push- adb remount an /system .

Hier ist ein Beispiel für die Befehlszeile, die ich zum Ausführen meines Emulators verwende:

 ./emulator -writable-system -avd Nexus_5_API_25 -no-snapshot-load -qemu 

Der Wert für die -avd Flags kommt von:

 ./emulator -list-avds 

Ich denke, der sicherste Weg besteht darin, das / System als Read-Write wiederherzustellen.

 mount -o remount,rw /system 

und wenn es fertig ist, mounten Sie es als schreibgeschützt:

 mount -o remount,ro /system 

Auf meinem Samsung Galaxy Mini S5570 (nachdem ich auf dem Handy wurzelte):

Faust, als root, ich lief:

 systemctl start adb 

als normaler Benutzer:

 adb shell su 

Gewähren Sie Root-Berechtigungen auf dem Touchscreen

 mount 

listet alle Mountpunkte auf, die wir haben, und wir können sehen, dass / dev / stl12 auf / system als ro gemountet wurde (nur fertig), also müssen wir nur Folgendes tun:

 mount -o rw,remount /dev/stl12 /system 

Versuchen Sie Folgendes an der Eingabeaufforderung:

 >adb remount >adb push framework-res_old.apk /system/framework-res.apk 

Hier ist, was bei mir funktioniert hat. Ich habe ein emuliertes Android 7.1.1 (Nougat) Gerät ausgeführt.

Auf einem Terminal trete ich den folgenden Befehl auf. Eine Sache, die beachtet werden muss, ist das Flag für das beschreibbare System

 ./emulator -writable-system -avd Nexus_6_API_25 -partition-size 280 

Auf einer anderen Registerkarte

 ./adb shell su mount -o rw,remount -t ext4 /dev/block/vda /system 

Alle Änderungen, die Sie am / System-Inhalt vornehmen, überstehen einen Neustart.

 adb disable-verity adb reboot adb root adb remount 

Das funktioniert für mich und ist die einfachste Lösung.

Öffnen Sie den Terminalemulator auf dem Telefon: dann

 adb shell 

Danach wird der Daemon gestartet

 su mount -o rw,remount /mnt/sdcard 

dann wird das Nur-Lesen in das Lesen-Schreiben umgewandelt.

 mount -o rw,remount /dev/stl12 /system 

funktioniert bei mir

Ich fand diesen Artikel von Google und dachte, ich würde die notwendigen Schritte auf einem Sony Xperia Z (4.2.2) hinzufügen.

Der Sony hat einen Watchdog-process, der erkennt, wenn Sie ro in rw on / und / system geändert haben (das sind die einzigen, die ich ändern wollte) und möglicherweise andere.

Das Folgende war, was ich ausgeführt habe, um die Änderungen durchzuführen, die ich erreichen wollte. Ich habe diese in ein Fenster eingefügt, weil das Ausführen des Execute-Bits von / sbin / ric schnell erledigt werden muss, um den Neustart zu stoppen. (Ich versuchte stop ric ; das funktioniert nicht – obwohl es auf einer früheren Version von Android auf dem Telefon funktionierte).

 pkill -9 ric; mount -o rw,remount -t rootfs / chmod 640 /sbin/ric mount -o rw,remount /system 

Ich habe die hosts-Datei hier geändert, also ist dies der Ort, an dem Sie die Änderungen vornehmen, die Sie für das Dateisystem benötigen. Um die Dinge so zu gestalten, wie wir sie gefunden haben, tun Sie Folgendes:

 mount -o ro,remount /system chmod 750 /sbin/ric mount -o ro,remount -t rootfs / 

An diesem Punkt sollte ric automatisch neu starten. (Es hat für mich automatisch neu gestartet.)

Ein wenig mehr zu Jan Bergströms Antwort hinzufügen: Da Android ein Linux-basiertes System ist und der Pfad in Linux Vorwärtsstriche (../) enthält, verwenden Sie bei Verwendung des Push-Befehls “/”, um den Zielpfad auf dem Android-Gerät zu definieren.

Der Befehl lautet beispielsweise: adb push C: \ Benutzer \ admin \ Desktop \ 1.JPG sdcard / pictures /

Beachten Sie, dass hier Backslashes verwendet werden, um den Quellpfad der Datei zu definieren, die von Windows PC geschoben werden soll, und Forward Slashes werden verwendet, um den Zielpfad zu definieren, da Android ein Linux-basiertes System ist. Sie müssen nicht als root handeln, um diesen Befehl zu verwenden, und es funktioniert auch einwandfrei auf Produktionsgeräten.

Manchmal wird der Fehler angezeigt, weil der Zielort im Telefon nicht existiert. Zum Beispiel ist ein externer Speicherort für ein Android-Handy /storage/emulated/legacy anstelle von /storage/emulated/0 .

Danke, Sérgio , für “mount” Befehl ohne Parameter Idee. Ich müsste /data/data/com.my.app/lib adb push in /data/data/com.my.app/lib für ein Testproblem machen, und bekomme “Read-only Dateisystem” Nachricht.

ls Befehl zeigt mir:

root@android:/ # ls -l /data/data/com.my.app/
drwxrwx--x u0_a98 u0_a98 2016-05-06 09:16 cache drwxrwx--x u0_a98 u0_a98 2016-05-06 09:04 files lrwxrwxrwx system system 2016-05-06 11:43 lib -> /mnt/asec/com.my.app-1/lib

Es versteht sich also, dass das Verzeichnis “lib” von anderen Anwendungsverzeichnissen getrennt ist.

Befehl mount -o rw,remount /mnt/asec triggerse das Problem “r / o fs” nicht, es benötigt den Geräteparameter vor dem Verzeichnisparameter.

“df” -Befehl half auch nicht, aber zeigt, dass mein / /mnt/asec/com.my.app-1 an dem separaten Einhängepunkt ist.

Dann schaue ich bei mount und voila!

root@android:/ # mount ......... /dev/block/dm-4 /mnt/asec/com.my.app-1 ext4 ro,dirsync,relatime 0 0

Die nächsten Schritte sind bereits oben beschrieben: erneut zu RW hinzufügen, drücken und wieder zurück zu RO.

Es ist dasselbe, das initrc.img extrahieren und neu packen und init Datei mit dem Code von mount / system bearbeiten muss

 This worked for me #Mount as ReadOnly su -c "mount -o rw,remount /system" # Change Permission for file su -c "chmod 777 /system/build.prop" #Edit the file to add the property su -c "busybox vi /system/build.prop" # Add now service.adb.tcp.port=5678 # Reset old permissions su -c "chmod 644 /system/build.prop" # Mount as readonly again once done su -c "mount -o ro,remount /system" 

Wenn das Kopieren der schreibgeschützten Datei fehlschlägt, können Sie versuchen, die ursprüngliche Datei im Stammverzeichnis zu suchen und sie mit einem Root-Texteditor (vorzugsweise) RB-Texteditor zu bearbeiten. Sie wird mit der ROM Toolbox App geliefert.

Versuchen Sie dies in einem Terminalemulator als root:

 restorecon -v -R /data/media 

In meinem Fall benutzte ich den Befehl adb push ~/Desktop/file.txt ~/sdcard/

Ich änderte es in ~/Desktop/file.txt /sdcard/ und dann funktionierte es.

Stellen Sie sicher, dass Sie das Telefon trennen und erneut verbinden.

Dateien auf die SD-Karte kopieren?

Nun, ich nehme an, Sie möchten Daten vom Entwicklercomputer auf die SD-Karte kopieren? Vielleicht haben Sie das Gerät gerootet und den Bereich, den Sie adressieren, verfügbar gemacht?) Ich hatte ungefähr das gleiche Problem, um Datendateien für meine Anwendung hochzuladen (Android Studio 1.3.2 in Win7), aber.

  • Zuerst muss die adb-Kommando-Shell im Pfad gefunden werden: PATH =% PATH%; C: \ Benutzer \ XXXXX \ AppData \ Local \ Android \ sdk \ platform-tools (der Ordner AppData ist ausgeblendet, also müssen Sie einstellen das Ordner-Setup versteckt versteckte Dateien und Ordner nicht um es zu finden, Pfad funktioniert unabhängig)
  • Sie müssen den Ordnerpfad richtig buchstabieren oder Sie erhalten eine schreibgeschützte Fehlermeldung, höchstwahrscheinlich muss es mit / sdcard beginnen oder es ist nur Lesebereich. Sobald ich kein Problem hatte, die Datei zum Emulator zu schieben.

So kann zum Beispiel der Befehl adb so aussehen:

adb drücken C: \ testdata \ t.txt / sdcard / download / t.txt