3 votes

Quel est le format du fichier system.img de l'aperçu initial d'Android M1 ?

Je télécharge Android Emulator M1 Initial Preview à partir de https://github.com/google/Android-emulator-m1-preview/releases

Dans le fichier .app, j'ai trouvé api30-gphone-arm64-v8a/system.img qui n'est pas un fichier yaffs2 ou sparse :

./unyaffs2 /tmp/android-wip/system.img /tmp/android-wip/system-img/
unyaffs2-0.2.8: image extracting tool for YAFFS2
image size (3232759808) is NOT a mutiple of 2048 + 64

operation incomplete
files contents may be broken

simg2img system.img.ext4 system.img
Invalid sparse file format at header magic
Failed to read sparse file

Quel est donc le format d'un tel fichier ?

Mises à jour : En me basant sur les indications de @Robert, je peux voir que le fichier est une image fdisk :

$ fdisk -lu system.img
Disk system.img: 3,1 GiB, 3232759808 bytes, 6313984 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 41F73643-DBCB-41A1-A27E-9FDB53578618

Device      Start     End Sectors Size Type
system.img1  2048    4095    2048   1M Linux filesystem
system.img2  4096 6311935 6307840   3G Linux filesystem

Maintenant, il n'est pas clair quel format de la partition à l'intérieur, parce que le montage comme une partition linux ordinaire échoue :

$ sudo mount -o loop,offset=1048576 system.img /mnt/android-1
mount: /mnt/android-1: wrong fs type, bad option, bad superblock on /dev/loop17, missing codepage or helper program, or other error.

gparted ne comprend pas non plus la partition :

enter image description here

4voto

alecxs Points 3105

Mauvais décalage, la partition commence au secteur 4096. vous pouvez utiliser kpartx au lieu de

Android plus récent fonctionnant avec des partitions dynamiques. la super partition peut être déballée avec Outils de partitionnement dynamique

de plus, les partitions sont marquées comme étant en lecture seule, donc mount -r le drapeau est requis

sudo -i

git clone https://github.com/AndroidDumps/Firmware_extractor.git
PATH=$PATH:$(realpath Firmware_extractor/tools/Linux/bin)

mkdir -p /mnt/android-1/system_root ../extracted
kpartx -av system.img
lpunpack -p system /dev/mapper/loop2p2 ../extracted

mount -t ext4 -o loop,ro,noexec,noload,noatime ../extracted/system.img /mnt/android-1/system_root
thunar /mnt/android-1/system_root

(ou tout autre kpartx vous indique que la deuxième partition est mappée)


si vous avez besoin de rendre la partition ext4-dedup/logique accessible en écriture, augmentez d'abord la partition, puis dupliquez les blocs partagés.

cd ../extracted
dd if=/dev/zero bs=1G seek=1 count=0 of=system.img
resize2fs system.img 1G
e2fsck -E unshare_blocks system.img

vous devriez être en mesure de mount -w ensuite


remballage nécessite de nouveaux vbmeta signature avec avbtool.py stocké dans la première partition system.img1 commencer au secteur 2048 (ce qui va trop loin ici)

superrepack Outil tiers multiplateforme pour faciliter le déballage et le remballage. system.img2 Il est recommandé d'automatiser l'ensemble du processus de reconditionnement.

vous pouvez cependant le faire manuellement avec lpmake (exige que toutes les partitions soient décompressées en ../extracted voir l'étape ci-dessus lpunpack )
Quelle

resize2fs -M system.img
e2fsck -yf system.img
lpmake --metadata-size 65536 --super-name super --metadata-slots 1 --device super:3229614080 --group main:2369171456 --partition system:readonly:787050496:main --image system=system.img --partition vendor:readonly:83619840:main --image vendor=vendor.img --partition product:readonly:1366814720:main --image product=product.img --partition system_ext:readonly:131686400:main --image system=system_ext.img --sparse --output super.img

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