Making a backup

From Sharpfin
Jump to navigation Jump to search

Making a backup

The reciva module has onboard NAND flash which is used to store the software. The flash is split into several partitions, here's the layout of my IMP box:

# cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00004000 00004000 "NAND BootAgent"
mtd1: 000fc000 00004000 "Linux Kernel"
mtd2: 00d00000 00004000 "Root"
mtd3: 00100000 00004000 "Config"
mtd4: 00100000 00004000 "Debug"
mtd5: 00000000 00004000 "Data"

A simple bacup mechanism is storing the raw contents of the block devices. I've been told that simply using cat or cp is not safe on NAND devices, but a better alternative exists: the 'nanddump' tool.

If you've got ssh running, the following is a method of creating a back of the partitions. Run these commands on another machine on the network where you want to store the backups:

$ ssh root@<address-of-the-box> "nanddump /dev/mtd/0 -" > backup/mtd0

Repeat the command for each flash partition, increasing the 0 to 5.

If you are working through telnet, you will need to dump the partitions to /tmp or a mounted drive

$ mkdir /tmp/x
$ smbmount //server/share /tmp/x -ousername=username,password=password
$ nanddump /dev/mnt/0 /tmp/x/mtd0

Restoring

Restoring the backup might be possible using the 'nandwrite' utility. I've not tried this myself, and I'm quite sure strange things will happen while writing the flash image while the partition is mounted. Use at your own risk, and feel free to write down your experiences here.