Pages : 1
#1 Le 17/06/2021, à 14: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
Pages : 1