Core Issue
On Cisco 2600, 3600, and 3700 series routers, the size of I/O memory is by default dynamically allocated during the boot, based on the size of the Cisco IOS Software image after decompression. The size of I/O memory is then checked against memory requirements for installed network modules. If the amount of I/O memory is insufficient for operation of installed network modules, the router will report a sequence of messages similar to this:
Not enough memory in the system for IO memory
IO memory available 4110105 required 5242880 _> 2600
SYSTEM INIT: INSUFFICIENT MEMORY TO BOOT THE IMAGE!
Not enough memory in the system to run this image
Required pmem/iomem: 39435385/524288
*** System received a Software forced crash ***
Resolution
To resolve this issue, refer to the procedure in the Identifying a Continuous/Boot Loop Due to a Wrong Iomem Size section of Hardware Troubleshooting for the Cisco 3600 Series Router.