The USR5461 seems to be very similar to the Belkin F5D7230-4 and the Siemens SE505V2. Most things written for those models should apply to your router, too.
Some of the memory sticks have a broken SCSI cmd layer (especially cheap USB MP3 players), and won't be detected properly. Whenever this happens, you'll get mount points like disc0_*. In cases one might even get disc*_* ( see https://dev.openwrt.org/ticket/1104 for a fixing this annoying behavior ).
A hint on the file system: I suggest you use EXT2 (it is faster and it takes less memory than VFAT - EXT3 is reported to write more often to the disc, but I haven't tested this). If you have to use FAT, better format your disc with FAT16, it will be a lot faster, and it will take less RAM to mount it).
Follow the instructions in section "How do I boot from the USB device" in http://wiki.openwrt.org/UsbStorageHowto, and the flash size limitation will be a thing of the past. If you have no USB strorage plugged in, the box will boot as usual.
Note that for BCM4712 based routers the init script should look like this:
#!/bin/sh
# change this to your boot partition
boot_dev="/dev/discs/disc0/part1"
# install needed modules for usb and the ext3 filesystem
# **NOTE** for usb2.0 replace "uhci" with "ehci-hcd"
# **NOTE** for ohci chipsets replace "uhci" with "usb-ohci"
for module in usbcore usb-ohci scsi_mod sd_mod usb-storage ext2 wlcompat wl switch-adm switch-core; do {
insmod $module
}; done
# this may need to be higher if your disk is slow to initialize
sleep 4s
# mount the usb stick
mount "$boot_dev" /mnt
# if everything looks ok, do the pivot root
[ -x /mnt/sbin/init ] && {
mount -o move /proc /mnt/proc && \
pivot_root /mnt /mnt/mnt && {
mount -o move /mnt/dev /dev
mount -o move /mnt/tmp /tmp
mount -o move /mnt/jffs2 /jffs2 2>&-
mount -o move /mnt/sys /sys 2>&-
}
}
# finally, run the real init (from USB hopefully).
exec /bin/busybox init