Alors je comprend plus rien, mais rien du tout...
Quand je boot en mettant l'image 0 active, j'ai le mtd2 a linux et mtd5 a image1
Et quand je boot en mettant l'image 1 active, j'ai le mtd2 a image0 et le mtd3 a linux...
Les partitions mtd, ce n'est pas comme un disque dur, il n'y a pas de table de partitions.
C'est simplement le bootloader qui dit au kernel comment découper la puce mémoire en différents blocs.
Selon l'image active, le bootloader (via ses scripts) va donner :
mtdparts=sflash:256k(uboot)ro,512k(uboot_env),7424k(linux),8192k(image1)
ou
mtdparts=sflash:256k(uboot)ro,512k(uboot_env),7424k(image0),8192k(linux)
"linux" est l'image active, et "imageX" l'autre.
Jusqu'à ce moment, le découpage des différentes partitions et leur nom est totalement indépendant de leur contenu.
Ensuite, le kernel insère de fausses mtd "rootfs" et "rootfs_data" juste après "linux" pour pointer sur différentes sous-parties (images squashfs et JFFS2).
Là, le découpage dépend du contenu de l'image active "linux" :
- pour "rootfs", c'est juste après le kernel, dont la taille est indiquée dans les entêtes au début de l'image
- pour "rootfs_data" je ne sais pas comment l'adresse est trouvée
Quand on voit la taille de "rootfs", il est clair qu'elle n'est pas alignée, si on écrit dedans ça risque d'écraser la fin du kernel.