1. Install the jffs2 version for your router model. Squashfs won't work whitout building an image.
2. Install packets for your storage device and your filesystem
opkg update
opkg install kmod-usb-core kmod-usb-uhci kmod-usb-storage kmod-usb2 kmod-fs-ext3
(This is for ext3 filesystem on usb2 device. Try kmod-usb-ohci if kmod-usb-uhci doesn't work for you)
3. Reboot your router
reboot
4. Copy the Filesystem to your external storage
mount /dev/sda2 /mnt
mkdir /tmp/root
mount -o bind / /tmp/root
cp /tmp/root/* /mnt -a
umount /tmp/root
umount /mnt
(Change /dev/sda2 to your external storage device)
Optional: You may want to add a footline at the bottom of your login banner located in /etc/banner (on the internal rom). This allows you to recognize whenever openwrt booted from the internal rom
echo Booted from internal rom >> /etc/banner
5. Add a mount section with option is_rootfs 1 for your storage device in /etc/config/fstab
config mount
option target /mnt
option device /dev/sda2
option fstype ext3
option options rw,sync
option enabled 1
option enabled_fsck 1
option is_rootfs 1
(Change option device /dev/sda2 according to your storage device. Target option is disregarded with is_rootfs 1)
6. Install packet block-extroot
opkg update
opkg install block-extroot
7. Reboot your router and verify that openwrt recognized your external storage partition. /overlay should have been mounted at /overlay, just compare the size of /overlay with the size of your external storage
df -h
8. Add option force_space in /etc/opkg.conf to allow installation of packets bigger than your /rom partitions free space
echo option force_space >> /etc/opkg.conf
Tested on Backfire but should work on Kamikaze too