Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/06/2021, à 15:27

Nuliel

dump de nand, et restauration de nand

Bonjour,
Je me casse la tête dessus depuis plusieurs jours. J'ai deux cartes de développement avec architecture mips (une ci20) qui a 8 Go de nand. J'aimerais faire une backup de cette nand et pouvoir utiliser cette backup sur l'autre carte ci20. Voici les infos des périphériques mtd:

ci20@ci20:~$ sudo mtdinfo --all
Count of MTD devices:           5
Present MTD devices:            mtd0, mtd1, mtd2, mtd3, mtd4
Sysfs interface supported:      yes

mtd0
Name:                           u-boot-spl
Type:                           mlc-nand
Eraseblock size:                2097152 bytes, 2.0 MiB
Amount of eraseblocks:          4 (8388608 bytes, 8.0 MiB)
Minimum input/output unit size: 8192 bytes
Sub-page size:                  8192 bytes
OOB size:                       448 bytes
Character device major/minor:   90:0
Bad blocks are allowed:         true
Device is writable:             true

mtd1
Name:                           u-boot
Type:                           mlc-nand
Eraseblock size:                2097152 bytes, 2.0 MiB
Amount of eraseblocks:          1 (2097152 bytes, 2.0 MiB)
Minimum input/output unit size: 8192 bytes
Sub-page size:                  8192 bytes
OOB size:                       448 bytes
Character device major/minor:   90:2
Bad blocks are allowed:         true
Device is writable:             true

mtd2
Name:                           u-boot-env
Type:                           mlc-nand
Eraseblock size:                2097152 bytes, 2.0 MiB
Amount of eraseblocks:          1 (2097152 bytes, 2.0 MiB)
Minimum input/output unit size: 8192 bytes
Sub-page size:                  8192 bytes
OOB size:                       448 bytes
Character device major/minor:   90:4
Bad blocks are allowed:         true
Device is writable:             true

mtd3
Name:                           boot
Type:                           mlc-nand
Eraseblock size:                2097152 bytes, 2.0 MiB
Amount of eraseblocks:          32 (67108864 bytes, 64.0 MiB)
Minimum input/output unit size: 8192 bytes
Sub-page size:                  8192 bytes
OOB size:                       448 bytes
Character device major/minor:   90:6
Bad blocks are allowed:         true
Device is writable:             true

mtd4
Name:                           system
Type:                           mlc-nand
Eraseblock size:                2097152 bytes, 2.0 MiB
Amount of eraseblocks:          4058 (8510242816 bytes, 7.9 GiB)
Minimum input/output unit size: 8192 bytes
Sub-page size:                  8192 bytes
OOB size:                       448 bytes
Character device major/minor:   90:8
Bad blocks are allowed:         true
Device is writable:             true

J'ai fait globalement 3 essais,
-> le premier avec

for i in {0..4}; do sudo nanddump /dev/mtd${i} -fn mtd${i}.bak; done
for i in {0..4}; do sudo flash_erase /dev/mtd$i 0 0; done
for i in {0..4}; do sudo nandwrite /dev/mtd$i mtd$i.bak; done

(notez le n). J'avais trouvé ça sur un site, après restauration l'install était corrompue de partout, même u-boot déconnait.

-> le deuxième avec

for i in {0..4}; do sudo nanddump /dev/mtd${i} -f mtd${i}.bak; done
for i in {0..4}; do sudo flash_erase /dev/mtd$i 0 0; done
for i in {0..4}; do sudo nandwrite /dev/mtd$i mtd$i.bak; done

J'ai une chiée de bitflips (corrections d'erreurs), mais rien de problématique puisque la carte fonctionne bien sur l'install de la nand.
Je démarre dessus -> kernel panic

-> le troisième en utilisant dd pour dump les différents mtd, flash_erase pour effacer,  et nandwrite pour réécrire (comme le deuxième test en fait)
Pb: mtd4 est trop grand, donc quelques erreurs à la fin, sinon u-boot fonctionne, mais j'ai un kernel panic

Je pense que le deuxième test est le plus près de la solution, voici le retour du démarrage

                                 
UBIFS error (pid 0): ubifs_check_node: bad CRC: calculated 0x673f7bda, read 0xad
UBIFS error (pid 0): ubifs_check_node: bad node at LEB 0:0                      
UBIFS error (pid 0): ubifs_read_node: expected node type 6                      
UBIFS error (pid 0): ubifs_mount: Error reading superblock on volume 'ubi:boot'!
                                                                                
ubifsmount - mount UBIFS volume                                                 
                                                                                
Usage:                                                                          
ubifsmount <volume-name>                                                        
    - mount 'volume-name' volume                                                
UBIFS not mounted, use ubifs mount to mount volume first!                       
ubifsload - load file from an UBIFS filesystem                                  
                                                                                
Usage:                                                                          
ubifsload <addr> <filename> [bytes]                                             
    - load file 'filename' to address 'addr'                                    
Wrong Image Format for bootm command                                            
ERROR: can't get kernel image!                                                  
ci20#

Le problème c'est que ça dure trois plombes de lancer des tests (nandwrite doit prendre une demi heure je pense).
Quelqu'un sait comment dump proprement une nand et restaurer proprement une nand?
Merci d'avance,
Nuliel

Hors ligne