UnixCommands

From University of Washington - Ubicomp Research Page
Revision as of 20:31, 11 December 2006 by Jonathan Lester (talk | contribs)
Jump to navigationJump to search

Mounting a JFFS2 Image

The filesystem used on the iMote2s is a JFFS2 filesystem. Once you've created the filesystem on a linux desktop you can actually mount it and make changes (so you don't have to change the source files and recreate the image every time).

The JFFS2 filesystem is intended to be used with a flash based filesystem and not a block filesystem like a hard drive (or a USB stick which emulates a block filesystem). Because of this you cannot simply mount a .jffs2 image using the loopback device. Instead you need to use a flash emulator (blkmtd in this case) which reads the .jffs2 image via a loopback device (remember since we need the emulation there's no way to mount the loopback directly).

    Quick Start

      The basic steps are (you will need to be root to mount and load modules):
      • Connect a free loop device to the .jffs2 image: <bash>losetup /dev/loop0 ~/fs.jffs2</bash>
      • Connect the blkmtd emulator module to the loopback device: <bash>modprobe blkmtd device=/dev/loop0</bash>
      • Mount the mtdblock device blkmtd attached to <bash>mount /dev/mtdblock0 /mnt/jffs2Image</bash>

      All together that would be (where you would need to change ~/fs.jffs2 to point to where your image is and /mnt/jffs2Image to your chosen mount point). <bash>losetup /dev/loop0 ~/fs.jffs2 modprobe blkmtd device=/dev/loop0 mount /dev/mtdblock0 /mnt/jffs2Image</bash>

    Creating missing devices

      If you're missing loop devices here are the mknod commands to create loop0-loop5: <bash>mknod /dev/loop0 b 7 0 mknod /dev/loop1 b 7 1 mknod /dev/loop2 b 7 2 mknod /dev/loop3 b 7 3 mknod /dev/loop4 b 7 4 mknod /dev/loop5 b 7 5</bash> And here's how to create the mtdblock devices: <bash>mknod /dev/mtdblock0 b 31 0 mknod /dev/mtdblock1 b 31 1 mknod /dev/mtdblock2 b 31 2 mknod /dev/mtdblock3 b 31 3 mknod /dev/mtdblock4 b 31 4 mknod /dev/mtdblock5 b 31 5</bash>

    Mounting Script

      Modified from Ed Bartosh's script (here): <bash>
      1. JFFS2 image location:
      JFFSIMG=”~/myImage.jffs2”
      1. Directory to mount the image on:
      MP="/mnt/myMountDest"
      1. Loop back device to use:
      LOOP="/dev/loop1" if [ ! -b /dev/mtdblock0 ] ; then mknod /dev/mtdblock0 b 31 0 || exit 1 fi if [ ! -b /dev/loop0 ] ; then mknod /dev/mtdblock0 b 7 0 || exit 1 fi losetup $LOOP $JFFSIMG || exit 1 sleep 1 modprobe blkmtd device=$LOOP || exit 1 sleep 1 mount -t jffs2 /dev/mtdblock0 $MP || exit 1</bash>