The Moose and Squirrel Files

October 29, 2008

IOS Upgrade – %SYS-3-IMAGE_TOO_BIG

Filed under: Cisco, Network — networknerd @ 8:49 pm

I attempted an IOS upgrade on a 3845 router on the weekend and, upon reboot received this error on the console:

%SYS-3-IMAGE_TOO_BIG: ‘flash:c3845-advipservicesk9-mz.124-22.T.bin’ is too large for available memory (50954264 bytes).boot of “c3845-advipservicesk9-mz.124-22.T.bin” using boot helper “flash:c3845-advipservicesk9-mz.123-11.T5.bin” failed

The message seems self explanatory.  The image is too big for memory.  However I did do my homework and the router had the minimum 512 mb memory and 128 mb flash.  The interesting thing here is the second sentence. I had left the original image in the flash (since there was plenty of room) and used a boot system command to ensure that the new IOS was loaded. The old image was being loaded, at least partially, as a boot helper.

I thought that the boot helper came from the ROM but this indicates a second stage boot process using the first image found in flash, not the image specified in the config.  Possibilities here are that the second stage boot loader from the 12.3 image took up too much memory. Alternatively it may be possible that the boot loader has a hardcoded limit for allocating a buffer to read the image into.  I didn’t have any extra memory to test that theory.

Since the second stage boot loader was being loaded from the first available image, and we know the image is selected in dir (alphabetical) order it was a simple matter to rename the old image from c3845-advipservicesk9-mz.123-11.T5.bin to c3845-advipservicesk9-mz.128-11.T5.bin. After rebooting the image loaded perfectly.

So the moral of the story is if the image should fit in memory and you have old images in flash, you should either delete them or rename them so that they appear after the desired boot image when you execute the show flash command.

Leave a comment if you’ve struck this problem before or you know more about the boot process.

5 Comments »

  1. I have similar issue. I will try to delete older IOS from flash:

    %SYS-3-IMAGE_TOO_BIG: ‘flash:c3845-advipservicesk9-mz.124-20.T.bin’ is too large for available memory (50954264 bytes).
    %SYS-6-READ_BOOTFILE_FAIL: flash:c3845-advipservicesk9-mz.124-20.T.bin File read failed — Not enough space.

    Comment by Ben — October 22, 2009 @ 3:59 am

  2. I’ve found your solution very helpful. In my case, I was using 3825 with 512Mb memory and 128Mb flash. In fact, I was about to contact TAC but opted to do a search on the internet.

    And your recommendation did work for me

    Thank you for posting it.

    Comment by Kwesi — January 23, 2010 @ 1:59 am

  3. This fixed worked for me, changed the file name, strange cure !!

    Comment by Reggie — February 16, 2010 @ 2:32 am

  4. Thanks for this, it worked on my 2811 (128MB CF, 512MB DRAM) as well. I am going to check Cisco’s website to see if this is recorded somewhere there.

    Comment by Mike — March 15, 2011 @ 9:39 pm

  5. Hi,

    I Have another solution for this (Priovided by Cisco)

    REMOVE the existing “boot system flash ” command
    re-add in the “boot system flash:” command

    Note the Colon, instead of pace between flash and filename

    Check it is stored in this format with “show run | i boot sys”

    Reload – and you’re done.

    I speculate that the bootloader doesn’t understand the format with space, and so defaults to the first found IOS, however the IOS will accept both formats, and actually see’s them as equivalent (Which is why you have to remove the old command first)

    Hope this helps some people

    Dash

    Comment by DRendar — June 8, 2012 @ 3:12 am


RSS feed for comments on this post. TrackBack URI

Leave a reply to Ben Cancel reply

Create a free website or blog at WordPress.com.