Système de fichiers en lecture seule sur Android

J'ai récemment enraciné mon Droid X et tout semble fonctionner parfaitement. J'ai apporté quelques modifications à build.prop et quand je fais adb push build.prop /system/ j'obtiens l'erreur suivante: failed to copy 'c:build.prop' to '/system//build.prop': Read-only file system.

Comment puis-je résoudre ce problème?

175
demandé sur Laurel 2011-05-20 03:38:28

21 réponses

Tous les téléphones et les versions d'android n'ont pas les mêmes choses.
Limiter les options lors du remontage serait préférable.

Il suffit de remonter en rw (lecture / écriture):

# mount -o rw,remount /system

Une fois que vous avez terminé de faire des modifications, remontez à ro (lecture seule):

# mount -o ro,remount /system
346
répondu CurtisLeeBolin 2016-12-02 20:19:27

Obtenu CE sur un forum Android où j'ai posé la même question. Espérons que cela aide quelqu'un d'autre.

Sur un émulateur de terminal sur le téléphone:

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

Ensuite, sur l'invite cmd, faites le adb push

73
répondu steveo225 2011-05-20 00:15:59
adb remount

Fonctionne pour moi et semble être la solution la plus simple.

72
répondu Chen Xing 2012-04-23 21:06:05

Bien que je sache que la question concerne le périphérique réel, au cas où quelqu'un arriverait avec un problème similaire dans l'émulateur, avec les outils les plus récents en février 2017, l'émulateur doit être lancé à partir de la ligne de commande avec:

-writable-system

Pour que tout soit accessible en écriture sur le /system. Sans cet indicateur, aucune combinaison de remount ou mount ne permettra d'écrire dans /system.

Après l'émulateur est lancé avec le drapeau, un seul adb remount après adb root est suffisant pour obtenir autorisations pour pousser vers /system.

Voici un exemple de la ligne de commande que j'utilise pour exécuter mon émulateur:

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

La valeur des indicateurs -avd provient de:

./emulator -list-avds
44
répondu Ishamael 2017-02-16 16:53:23

Je pense que le moyen le plus sûr est de remonter le système / en lecture-écriture, en utilisant:

mount -o remount,rw /system

Et une fois terminé, remontez-le en lecture seule:

mount -o remount,ro /system
29
répondu hgdeoro 2011-12-21 19:50:37

Sur mon Samsung galaxy mini S5570 (après avoir pris racine sur le téléphone portable):

Poing, comme racine, j'ai couru:

systemctl start adb

En tant qu'utilisateur normal:

adb shell 
su 

Accorder des autorisations root sur l'écran tactile

mount 

Liste tous les points de montage que nous avons et nous pouvons voir, dans mon cas, que / dev / stl12 a été monté sur / system en tant que ro (prêt seulement), donc nous avons juste besoin de faire:

mount -o rw,remount /dev/stl12 /system
15
répondu Sérgio 2014-03-04 19:28:00

Essayez ce qui suit à l'invite de commande:

>adb remount
>adb push framework-res_old.apk /system/framework-res.apk
11
répondu scue 2012-08-04 17:29:27

Voici ce qui a fonctionné pour moi. J'exécutais un appareil Android 7.1.1 émulé (Nougat).

Sur un terminal, j'appuie sur la commande suivante. Une chose à remarquer est l'indicateur-writable-system

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

Sur un autre onglet

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

Toutes les modifications que vous effectuez sur le contenu / system survivront à un redémarrage.

6
répondu George Garcés 2018-01-31 16:04:06
adb disable-verity
adb reboot
adb root
adb remount

Cela fonctionne pour moi, et est la solution la plus simple.

3
répondu byInduction 2018-07-25 00:12:32

Ouvrez l'émulateur de terminal sur le téléphone: alors

adb shell

Après que le démon est démarré

su
mount -o rw,remount /mnt/sdcard

Ensuite, la lecture seule est convertie en lecture-écriture.

2
répondu ashwani 2015-05-10 16:18:41
mount -o rw,remount /dev/stl12 /system

Fonctionne pour moi

2
répondu qinqie 2016-03-10 08:32:24

J'ai trouvé cet article de google, et j'ai pensé ajouter les étapes nécessaires sur un Sony Xperia Z (4.2.2).

Le Sony a un processus de surveillance qui détecte quand vous avez changé ro pour rw sur / et /système (ce sont les seuls que j'essayais de modifier) et peut-être d'autres.

Ce qui suit était ce que j'ai couru pour effectuer les changements que j'essayais de réaliser. Je les ai collés dans une fenêtre, car la suppression du bit d'exécution de / sbin / ric doit être faite rapidement afin de l'arrêter le redémarrage de lui-même. (J'ai essayé stop ric; cela ne fonctionne pas-bien que cela ait fonctionné sur une version précédente d'android sur le téléphone).

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

J'ai modifié le fichier hosts ici, c'est donc l'endroit où vous effectuez les modifications dont vous avez besoin sur le système de fichiers. Pour laisser les choses comme nous les avons trouvées, faites ceci:

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

À quel point RIC devrait redémarrer automatiquement. (Il a redémarré pour moi automatiquement.)

1
répondu Paul 2013-09-19 02:24:13

Ajouter un peu plus à la réponse de Jan Bergström: parce que Android est un système basé sur Linux, et le chemin dans Linux contient des barres obliques (../ ), tout en utilisant la commande push, utilisez " / " pour définir le chemin de destination dans L'appareil Android.

Par exemple, la commande va: ADB push C:\Users\admin\Desktop\1.JPG carte SD / images /

Notez qu'ici, les barres obliques arrière sont utilisées pour définir le chemin source du fichier à pousser à partir du PC windows et les barres obliques avant sont utilisées pour définir la destination chemin parce que Android est un système basé sur Linux. Vous n'avez pas besoin d'agir en tant que root pour utiliser cette commande et cela fonctionne parfaitement sur les périphériques de production.

1
répondu Bipolar Metalhead 2015-12-19 13:50:53

Parfois, vous obtenez l'erreur parce que l'emplacement de destination dans le téléphone n'existe pas. Par exemple, un emplacement de stockage externe de téléphone android est /storage/emulated/legacy au lieu de /storage/emulated/0.

1
répondu Geng Jiawen 2016-01-19 11:54:30

Merci, Sérgio , pour la commande "mount" sans idée de paramètres. Je devrais faire adb push dans /data/data/com.my.app/lib pour un problème de test, et obtenir un message "système de fichiers en lecture seule".

Commande Ls me montre:

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

Donc, il est entendu que le répertoire "lib" est séparé des autres répertoires d'applications.

Commande

mount -o rw,remount /mnt/asec n'a pas résolu le problème "r / o fs" , il veut le paramètre de périphérique avant le paramètre de répertoire.

La commande " df " n'a pas aidé aussi, mais montre que mon Le répertoire /mnt/asec/com.my.app-1 se trouve au point de montage séparé.

Alors je regarde par {[5] } et voila!

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

Les étapes suivantes sont déjà décrites vers le haut: remonter à RW, pousser et remonter à RO.

1
répondu vkkeeper 2016-05-06 10:03:03

Il sames qui doit extraire et remballer initrc.img et modifier le fichier init avec le code de mount / system

1
répondu xsilen T 2017-02-01 02:54:12
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"
1
répondu Ashwin Rayaprolu 2018-04-19 20:30:39

S'il y a un échec dans la copie du fichier en lecture seule, vous pouvez essayer de localiser le fichier original dans le répertoire racine et le modifier avec un éditeur de texte racine (de préférence) éditeur de texte RB, il est livré avec L'application ROM Toolbox.

0
répondu Abhishek Hamal 2016-07-31 10:15:25

Essayez ceci dans un émulateur de Terminal en tant que root:

restorecon -v -R /data/media
0
répondu intrepidis 2016-11-06 12:23:07

Dans mon cas, j'utilisais la commande adb push ~/Desktop/file.txt ~/sdcard/

Je l'ai changé en ~/Desktop/file.txt /sdcard/ et puis ça a marché.

Assurez-vous de déconnecter et de reconnecter le téléphone.

0
répondu JavaBanana 2018-09-03 01:35:23

Copier des fichiers sur la carte SD?

Eh bien, je suppose que vous aimez copier des données sur la carte Sd à partir de l'ordinateur des développeurs? Vous pourriez avoir enraciné la devise et rendu la zone que vous adressez disponible?) J'ai eu à peu près le même problème pour télécharger des fichiers de données pour mon application (Android Studio 1.3.2 dans Win7), mais.

  • Tout d'abord, le shell de commande adb doit être trouvé dans le chemin: Chemin= % Chemin%;C:\Users\XXXXX\AppData\Local\Android\sdk\platform-tools (le dossier AppData est caché, vous devez donc définir la configuration du dossier ne cache pas les fichiers cachés et le dossier pour le trouver, le chemin fonctionne indépendamment)
  • vous devez épeler le chemin du dossier à droite ou vous obtenez un message d'erreur en lecture seule, très probablement il doit commencer par / sdcard ou il est en lecture seule zone. Dès que je n'ai pas de problème à pousser le fichier vers l'émulateur.

Ainsi, par exemple, la bad commande peut ressembler à ceci:

Push Adb C:\testdata\t.txt /sdcard/download/t.txt

-1
répondu Jan Bergström 2015-09-05 15:20:49