3 votes

Puis-je flasher Android sur un appareil dont le code mmcblk0 a été écrasé ?

Un appareil Android peut-il être entièrement écrasé /dev/mmcblk0 (sans /dev/mmcblk0p* ) peuvent encore être flashés en utilisant fastboot ? Est-il vrai que l'écrasement /dev/mmcblk0 ne supprime pas /dev/mmcblk0boot* des partitions ?

4voto

Irfan Latif Points 16863

/dev/mmcblk0 est la puce de stockage MMC entière qui inclut la table de partition GUID (GPT) et toutes les partitions. Sur les appareils Android, certaines de ces partitions eMMC contiennent des chargeurs de démarrage (comme le sbl , aboot sur les appareils Qualcomm) qui ont des chemins codés en dur dans le firmware du SoC. L'écrasement complet (l'effacement) de ces partitions signifie que le SoC ne sera pas en mesure de démarrer le dispositif. Puisque fastboot et d'autres modes de service comme odin sont hébergés par des chargeurs de démarrage, ils ne seront donc pas disponibles et l'appareil est considéré comme étant " hard-bricked ".

Les exceptions à cette règle sont les suivantes : le périphérique prend en charge le BIOS/OpenBIOS/UEFI/ACPI et est capable de découvrir le matériel sans DTB et de démarrer initialement sans dépendre des chargeurs d'amorçage.
Ou s'il existe un moyen de recréer des partitions et de réécrire des chargeurs de démarrage (voir l'exemple MTK dans la section édition ci-dessous). Quelque chose à un niveau encore plus bas qui peut communiquer directement avec le SoC, par exemple le protocole JTAG, peut être utilisé pour ramener le dispositif à la vie. Cependant, cela nécessite matériel et logiciels spéciaux et parfois dessouder/re-souder ou même écailler la puce du flash. Toujours après avoir récupéré l'appareil de cette façon, vous devrez restaurer les partitions spécifiques à l'appareil, par exemple celle qui contient l'IMEI.

/dev/mmcblk0boot* est généralement utilisée pour représenter les partitions de la zone de démarrage à partir de la MMC interne sous Linux alors que /dev/mmcblk0p* représente les partitions de la zone utilisateur ou les partitions de la carte SD externe. Android init énumère les partitions eMMC comme /dev/block/mmcblk0p* et les partitions de la carte SD externe comme /dev/block/mmcblk1p* (d'après ce que j'ai vu). Mais la nomenclature peut différer selon les fournisseurs. Quoi qu'il en soit, l'écrasement d'un bloc de mémoire flash entier effacerait toutes les partitions qui s'y trouvent.


EDITAR:

Je viens de réaliser que vous parlez des eMMC utilisées avec les cartes de développement, pas sur les téléphones Android. Ces derniers sont quelque peu différents, ils peuvent avoir plus de 50 partitions sur les appareils récents. Beaucoup d'entre elles sont des blobs binaires signés à source fermée spécifiques au fournisseur. Mais les eMMCs utilisées avec Linux ont quelques partitions (pas plus que 8 par dispositif de bloc par défaut ).

Si c'est le cas, /dev/mmcblk0boot* sont très probablement dispositifs de blocs séparés selon eMMC v4.41 standard. Elles n'ont donc peut-être pas été effacées avec les partitions de la zone utilisateur. Les partitions de démarrage sont également protégées en écriture par défaut. ( 1 , 2 ) tandis que les appareils Android utilisent principalement la zone utilisateur pour le démarrage (bien que les fournisseurs puissent faire autrement), qui est facilement effaçable. eMMC v4.41 définit également la partition RPMB, qui est également un bloc distinct (en fait, la partition RPMB est un bloc de données). pas un dispositif de blocage y pas une partition ) et ne devrait pas être supprimable.


Sur un appareil Android avec Qualcomm SoC (MSM8953) et Samsung eMMC ( RX1BMB ) et sans partition de zone de démarrage :

~# mmc extcsd read /dev/block/mmcblk0
  Extended CSD rev 1.8 (MMC 5.1)
...
Boot configuration bytes [PARTITION_CONFIG: 0x38]
 User Area Enabled for boot
 No access to boot partition
...
RPMB Size [RPMB_SIZE_MULT]: 0x20

Un autre appareil avec un SoC MediaTek (MT8127) et une carte eMMC Hynix ( H8G1e ) a deux partitions de zone de démarrage et un RPMB. Il indique "Partition de démarrage 1 activée" donc mmcblk0boot0 contient le premier étage du chargeur de démarrage ( préchargeur o SPL ) alors que les UBOOT est sur la zone utilisateur ( mmcblk0p4 ). mmcblk0boot1 contient des informations spécifiques au dispositif disponibles par le biais de idme print comme l'adresse MAC, le numéro de série, le code de déverrouillage, etc. Cependant un autre SoC (MSM8610) avec le même eMMC rapports "La zone utilisateur est activée pour le démarrage" . Il semble donc qu'il s'agisse d'un problème spécifique au fournisseur.


Encore une fois, puisque fastboot es mis en œuvre dans U-Boot, il ne sera pas disponible après avoir effacé mmcblk0 . Sur les appareils MTK, cependant, le mode de téléchargement du préchargeur (SP Flash Tool) ou l'ancien mode de téléchargement du préchargeur (SP Flash Tool). EDL mode ( "ROM de démarrage sur puce pour la programmation de la flash d'usine". ) devrait toujours fonctionner (si elle est mise en œuvre). Le mode EDL sur certaines MTK ( Mode Méta ) et Qcom (mode QDL/9008 ; mise en œuvre dans PBL /BootROM) nécessite de raccourcir les points de test sur la carte mère. ( 3 , 4 ) .

Sinon, le seul moyen de flasher des partitions est de communiquer directement avec le SoC. i.MX Les SoCs, par exemple, fournissent le protocole SDP sur USB ou UART qui peut être utilisé pour charger U-Boot et utiliser fastboot .

NOTE : Ne confondez pas le système Android fastboot avec eMMC Démarrage rapide .


RELATION :

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