Archiving JFFS2 Images

From wiki.emacinc.com
Revision as of 06:57, 1 April 2013 by Tstratman (talk | contribs) (added content and formatting)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

After modifying the filesytem on a system, it is often advantageous to archive the JFFS2 image. This allows for the same image to be programmed to other systems as well as providing a backup during software development. While there are several ways to do this, the method outlined here utilizes an NFS server to copy the binary JFFS2 image directly from the running system.

Procedure

This procedure assumes that a working NFS server is accessible on the local network and that the board will have write access to the server. Once this configuration has been tested, follow the steps below to create the archive.

  1. Boot the system and log in as the root user.
  2. Create a directory to use for the mount point of the NFS drive. For this example, /tmp/nfs will be used.
  3. root@emac-oe:~# mkdir /tmp/nfs
    
  4. Mount the NFS filesystem. The commands in this step assume that 10.0.2.60 is the IP address of the NFS server on the local network and that /opt/nfs is the exported directory on the server that the image should be copied to. These parameters will need to be adjusted to match the local network configuration. Also note that the nolock option is necessary because no portmap daemon is running on the default EMAC OE system.
  5. root@emac-oe:~# mount -o nolock -t nfs 10.0.2.60:/opt/nfs /tmp/nfs
    
  6. Next, determine which MTD partition contains the JFFS2 image to be copied. In most cases, this will be the root filesystem but the same procedure can be used to archive any JFFS2 partition. The most helpful information can usually be found in the /proc/mtd file. The output of the mount command, /etc/fstab, and other commands may also be used. The listing below shows the contents of /proc/mtd on a system where /dev/mtd0 contains the root filesytem.
  7. root@emac-oe:~# cat /proc/mtd
    dev:    size   erasesize  name
    mtd0: 02000000 00020000 “root”
    mtd1: 0e000000 00020000 “aux”
    mtd2: 00042000 00000210 “df_boot”
    mtd3: 00210000 00000210 “df_kernel”
    mtd4: 001ce000 00000210 “df_aux”
    
  8. Once the remote NFS filesystem has been mounted, a binary copy of the image can be taken by following the steps below.
  9. NOR Flash
    For NOR flash, the dd command should be used. The MTD block device corresponding to the JFFS2 partition must be specified as the image source: /dev/mtdblock0 in this case.
    root@emac-oe:~# cd /tmp/nfs
    root@emac-oe:~# dd if=/dev/mtdblock0 of=rootfs_backup.jffs2
    
    NAND Flash
    For NAND devices, the nanddump command is used to allow for correct bad block handling. The MTD device (not the block device) corresponding to the JFFS2 partion must be specified as the image source: /dev/mtd0 in this case.
    root@emac-oe:~# cd /tmp/nfs
    root@emac-oe:~# nanddump /dev/mtd0 -o -n -f rootfs_backup.jffs2
    
  10. Once the image has been successfully copied, unmount the NFS drive.
  11. root@emac-oe:~# cd
    root@emac-oe:~# umount /tmp/nfs