Topic: How to modify the root filesystem
I was having a bit of trouble with an application I was trying to run which required specific directories (so I could at least make mountpoints) off of the root filesystem. This is impossible traditionally as the chumby's / partition is a cramfs (read only) filesystem. Here is how to work around this limitation. Please bear in mind that there is a limited amount of space on the chumby, so don't add anything too large. I do not personally know what kind of error correction or size checking is done before it writes the new cramfs out, so I wouldn't suggest chancing it. I'd also highly suggest creating the directories needed to mount another cramfs or nfs mount with the real data.
First thing, you must enable ssh on the chumby and connect to it
SSH to the chumby, and determine which "disk" is mounted as your / partition
chumby:~# df -h
Filesystem Size Used Available Use% Mounted on
/dev/mtdblock5 34.1M 34.1M 0 100% /
Plug in a usb disk and mount it to /mnt/usb, or connect to an nfs directory with r/w access so that we can create the chumby.cramfs file. In the following example I am creating it on a usb disk.
chumby:/# dd if=/dev/mtdblock5 of=/mnt/usb/chumby.cramfs
45056+0 records in
45056+0 records out
Now that you have the cramfs image, take it back over to your linux workstation. To do this you will need to have a kernel that supports cramfs, and you will need the appropriate cramfs tools installed. It's going to vary by distribution, but google gave me an answer within about a minute for mine.
linuxbox:/root# mount -o loop -t cramfs /media/usb/chumby.cramfs /mnt/tmp
Again you are left with a read only environment, so I copied it to a new (writable) structure as such:
linuxbox:/root# mkdir /root/chumby
linuxbox:/root# (cd /mnt/tmp ; tar cvfp - .)|(cd /root/chumby ; tar xvfp -)
Now you have an exact copy, so you can umount /mnt/tmp as you no longer need it. Make the changes that you want to make to this new filesystem, keeping in mind that small size is key! Again, I just created directories, I didn't add any actual files. Once you are finished, we need to recreate the cramfs filesystem
linuxbox:/root# mkfs.cramfs chumby/ rfs1.bin
linuxbox:/root# zip rfs1.bin.zip rfs1.bin
Copy this back to your vfat formatted usb drive, placing it into a directory called update2/. It is very finnicky about this, so make sure you set the structure up right! Turn off your chumby and plug the usb drive in. Then, power on the chumby while pressing the touchscreen, and continue pressing it until you get into special options. Select the menu option to update the chumby, and then select update via USB.
After it finishes flashing, connect via ssh again and verify that your new directories or files are in place. Congratulations, you are done!