I just saw I might be wrong. Was looking for a good way to detect a harddisk on a 210, and I saw that at least in FW 3.20 there is no initramfs, only an initrd. Maybe this isn't changed.
Try to extract and mount mdt2, this might be your initrd:
dd if=/dev/mtdblock2 of=initrd
mount -o loop initrd initrd.d
If this works, and rcS is in initrd.d, it might be possible to write back initrd to mtd2. In that case I suggest you to look in /sbin and /usr/sbin if it contains scripts which are used for firmware updates. It might contain usable code to write the flash. Possible variants are
- dd if=initrd of=/dev/mtdblock2
- dd if=initrd of=/dev/mtd2
- flash_eraseall /dev/mtd2
cat initrd >/dev/mtd2
- mixtures of above
- something else
Don't know why sometimes one method is used and sometimes another. Maybe subtle differences between flash drivers in the kernel.
My 3.20 backup doesn't seem to contain such a script, but the firmware for the 300 series does. I hope ZyXEL has eliminated the differences between the firmwares in the 4.x firmware.
Flashing back is a one-shot. If it fails, you have a brick.
BTW, according to the script in 3.20 there is no easy fail-safe way to detect an internal harddisk. But if there is a disk, it should be sda, so the usb stick should be sdb. You could check the mountpoint of the stick:
if cat /proc/mounts | grep parnerkey | grep sdb