0 votes

comment étendre le support du système de fichiers EXT4 pour les cartes microSD dans les ROMS stock ou non lineage / CyanogenMod

Comme je le sais après Android 4.4 ou autre, votre carte de stockage n'est plus eXposée directement et doit être soigneusement interfacée par le biais d'une interface spécifique. Mount les points dont il faut être conscient à travers vold système
Ma question est la suivante : étant donné cette situation et le fait que ext4 est très compliquée en termes d'accès et surtout avec maintenant SeLinux assis sur le dessus il est toujours possible d'effectuer un rendu ext4 alors qu'elle n'existait pas au départ, comme cela a été le cas pour lineage et les OS similaires précédents ce serait le cas si les points de montage étaient créés au démarrage et ensuite vold est mis au courant de leur existence

ce que j'ai fait
puisque je suis rooted ( magisk ) J'utilise su mount master et les a montés manuellement, mais j'essaie ensuite d'utiliser vold a échoué parce qu'il était trop tard J'ai trouvé quelques articles sur la façon dont cela a été réalisé dans les versions précédentes d'Android jusqu'à 5.
Après la version 7.6, le monde d'Android est devenu encore plus paranoïaque en matière de sécurité et de protection des données. seLINUX n'aurait pas pu être plus exigeant à partir de la version 7.x d'Android, j'aimerais savoir s'il existe un guide définitif sur la façon dont cela peut être fait. cela ne me dérange pas de recompiler cette fonctionnalité dans le noyau. c'est un investissement beaucoup plus gratifiant que d'essayer de chercher des ROMs personnalisées et de s'éloigner du stock juste parce que vous le souhaitez. EXT4 soutien
alors comment puis-je ajouter EXT4 support sur stock et ROMs similaires pour les versions d'Android > 7.x et de faire cela de la bonne façon où toutes les applications peuvent accéder à mes partitions. toutes mes partitions sont EXT4 ce qui est tout à fait contraire à la deuxième partition app2sd qui est utilisée pour économiser de l'espace. Bien sûr, je l'ai aussi mais j'ai deux autres partitions utilisées pour extSD (partition principale de stockage de données externe) et une autre consacrée à une autre application. 3 au total EXT4 partitions . la première est la partition de données principale ,la deuxième est app2sd et la troisième est une partition spéciale consacrée à une seule application. Si cela a de l'importance, je suis enraciné sur un appareil Samsung fonctionnant sous nougat 7.x.

Une autre chose que j'ai observée et je vais mettre à jour la question en conséquence, c'est que tout d'un coup, de nulle part, les partitions montées sous /storage sont maintenant en lecture seule, alors qu'elles ne l'étaient pas auparavant. Je peux toujours lire et écrire sur ces partitions via /mnt/media_rw. Je me demande ce qui s'est passé car beaucoup d'applications dépendent de l'accès à mes partitions via le point de montage /storage.

Pour résumer, voici donc les questions :

  • Montage multi ext4 carte externe partitionnée au démarrage, contrairement au montage manuel que je peux faire.
  • Montez-le de la bonne façon avec le bon ID de groupe, de sorte que vold sait qu'elle a été montée et que toutes les applications et processus peuvent accéder librement à la partition.
  • Toutes les partitions externes sous /storage est soudainement devenue en lecture seule (la partition de la mémoire interne est bien sûr toujours en lecture et écriture). tune2fs confirmé que toutes les partitions sont propres. Pourquoi cela se produit-il et comment y remédier ?

Merci pour la réponse. J'ai posé cette question qui ressemblait à un récit puisque je n'avais pas de captures d'écran ou de journaux à portée de main si c'est ce que vous vouliez dire dans votre commentaire d'ouverture en réponse. Voici donc ce que j'essaie de faire mais je me heurte à toutes sortes d'erreurs.

1) Monter mmck1p2 a /data/sdext2 et je continue à obtenir l'erreur failed to mount ... mmcblk1p2 sur ..... invalid argument & une autre ligne similaire
failed..... /dev/block/vold/public sur .... args invalides. c'est-à-dire via app2sd et mon magisk a l'option globale activée la même partition est déjà montée au démarrage sous media_rw and storage

Bind mounting caméra DCIM et de nombreux autres dossiers dans le stockage interne échoue lorsque la cible est /storage/part# & cela a bien fonctionné auparavant. Mes partitions sont propres selon tune2fs rapport . Que s'est-il passé ?

Merci encore. Je réponds à vos questions ici :

1) Quels sont les systèmes de fichiers actuellement montés (sortie de mount) ?
o/p est trop grand pour entrer ici. PFA

2) Sortie de /system/bin/id ?
pour l'utilisateur normal

uid=10112(u0_a112) gid=10112(u0_a112) groups=10112(u0_a112),1015(sdcard_rw),1023(media_rw),1028(sdcard_r),3003(inet),9997(everybody),50112(all_a112) context=u:r:untrusted_app:s0:c512,c768

3) Quelle commande exactement avez-vous utilisée pour monter mmck1p2 sur /data/sdext2 ? 4) Quelle commande avez-vous utilisée pour lier le montage du dossier DCIM ?

1   mount -o,rw /dev/block/mmcblk1p1 /storage/extsd
2   lp=/sdcard/logger.txt
4   ls./mnt/media_rw
5   ls /mnt/media_rw
6   mkdir -p $_/extsd
7   mount --bind /storage/extsd  $_
8   ls $_

Avec l'exécution ci-dessus à partir du terminal, je ne peux voir les fichiers qu'à partir du terminal. adb Je me retrouve dans la même situation
. Pensée adb serait persistant mais ce n'est pas le cas. Après cela, j'ai essayé d'invoquer vold dans l'espoir qu'il rende mon support persistant et visible, mais pas de chance là non plus.

dreameltemtr:/ # /system/bin/vold
/system/bin/vold
Aborted
134|dreameltemtr:/ # /system/bin/vold --blkid_context=u:r:blkid:s0 --blkid_untrusted_context=u:r:blkid_untrusted:s0 --fsck_context=u:r:fsck:s0 --fsck_untrusted_context=u:
r:fsck_untrusted:s0
ntext=u:r:fsck:s0 --fsck_untrusted_context=u:r:fsck_untrusted:s0              <
SELinux selinux_android_compute_policy_index : Policy Index[2],  Con:u:r:magisk:s0 RAM:SEPF_SECMOBILE_7.1.1_0003, [-1 -1 -1 -1 0 1]

également à mount partition # 2 via app2sd il existe un mount que l'application écrit dans /system/bin/etc or /data/app2sd Cela dépend des options que vous choisissez. Il utilise une approche similaire, sauf que
-- J'ai utilisé son propre binaire pour la fonctionnalité de montage en liaison
-- Je vais faire des tests périodiques pour voir si certaines partitions sont montées.
-- Il exécutera ces scripts périodiquement (il a en quelque sorte patché plusieurs scripts ensemble) en espérant que l'un d'eux fonctionnera.
-- Je tente de monter via un périphérique de bloc ( / dev/block/mmcxxx ) ainsi que vold ( /dev/block/vold/nnn )
Voici que script et vous verrez ce que je viens de dire. Encore une fois PFA puisqu'il y a un plafond pour le nombre maximum de personnages dans un message.

4) Quels sont les messages d'erreur exacts ? -
les messages exacts sont 2 lignes de app2sd gui boîte d'attention

- Failed to mount /dev/block/ mmcblk1p2 to /data/sdext2 invalid argument <br>
- Failed to mount /dev/block/vold/public/179:34 to /data/sdext2 invalid argument<br>

Sur la dernière partie où je ne peux pas écrire à l'externe partitions monté en dessous /storage Ce cas d'installation de ROM a été avorté. Elle a provoqué des boot-loops après 10 minutes, j'ai donc restauré mon Nandroid sauvegarde. Je ne peux donc pas trouver plus de détails.

0 votes

Vous pouvez formater la carte SD externe comme ext4 et le monter manuellement où vous voulez. ext4 est présent dans toutes les ROM - stock ou personnalisées - depuis la première version d'Android. Quelle est exactement votre question ?

0 votes

Merci de votre réponse Irfan, je peux le trouver manuellement comme je l'ai écrit.

0 votes

Merci de votre réponse Irfan Je peux le trouver manuellement comme je l'ai écrit. Il y a 3 questions, désolé si ce n'était pas clair 1 ) il faut monter au démarrage et lire écrire 2 ) les informations de montage doivent être transférées de manière à dire au processus v o l d que tous les autres processus et applications peuvent accéder à cette partition de stockage de données externe.

2voto

Irfan Latif Points 16863

Je ne pense pas avoir bien compris votre question. Je ne vois pas très bien ce que vous avez essayé jusqu'à présent, ni comment vous avez procédé, ni quelles contraintes ou limites vous avez rencontrées pour réaliser ce que vous voulez. Mais je réponds précisément à vos questions :

Montage multi ext4 carte externe partitionnée au moment du démarrage, par opposition au montage manuel que je peux faire

Le montage de la carte SD externe est géré par vold . Vous pouvez désactiver cette fonction dans fstab et définir un init ou mettre un init.d pour monter les partitions au démarrage comme vous le souhaitez.

Montez-le de la bonne façon avec le bon identifiant de groupe, de sorte que vold sait qu'elle a été montée et que toutes les applications et processus peuvent accéder librement à la partition.

Depuis Android 6, en mode Portable Storage, vold monte une carte SD externe à /mnt/media_rw/[UUID] et l'émule ensuite en /storage/[UUID] . Les applications avec WRITE_MEDIA_STORAGE (qui est mappé sur le GID media_rw (1023) ) ont un accès en écriture au niveau du système de fichiers sur la carte SD externe. Mais les applications tierces ne peuvent pas écrire sur la carte SD parce que l'autorisation en question a été accordée à un tiers. signature|privileged niveau de protection. L'émulation permet aux applications de lire toute la carte SD mais d'écrire uniquement dans leurs répertoires privés. Les applications peuvent également utiliser les API Android (comme SAF) pour enregistrer des fichiers sur la carte SD. Voir les détails dans Comment déplacer des fichiers vers une carte SD externe ?

Tout ce phénomène est profondément intégré dans le cadre d'Android - Java et natif. Donc si vous voulez changer ce comportement, vous devez modifier les sources d'Android et reconstruire la ROM. Ou ne comptez pas sur vold et montez vous-même les partitions avec les permissions correctes comme je l'ai mentionné précédemment.

Toutes les partitions externes sous /storage est soudainement devenu en lecture seule

Il peut y avoir plusieurs raisons possibles, vous pouvez vérifier le journal du noyau ou le journal Android pour voir ce qui se passe exactement lorsque vous faites mount -o rw,remount . Le montage en lecture seule peut être un signe d'erreurs dues à la dégradation de la puce flash. Il se peut aussi que la ou les partitions aient simplement atteint leur nombre maximal de montages, et que vous deviez lancer la commande fsck .

0 votes

Merci de m'avoir répondu. J'ai donné les détails que vous avez demandés dans la mesure où j'ai pu les trouver. Ce que je veux obtenir de tout cela est sur une ROM qui ne supporte pas ext4 pour les cartes SD comme CM ou Lineage, comment puis-je avoir cette fonctionnalité afin que chaque fois que je n'ai pas à flasher une nouvelle ROM Lineage et ensuite faire face à ses autres lacunes. J'espère que je suis clair maintenant. Maintenant, pour cette instance, je ne vois pas le dossier /etc/init.d, il y a un dossier init et même si je remonte rw. Le redémarrage supprimera les scripts. Je peux les mettre dans xbin mais je ne suis pas sûr qu'ils seront exécutés.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X