ROMMON version should be SG4 or above. In this case it was ROM: 15.0(1r)SG10
1.Copy IOS image to bootflash:
2.Check the IOS copy
SWITCH4500X-32#dir
Directory of bootflash:/
79202 -rw- 126060564 Jul 24 2014 14:11:25 -05:00 cat4500e-universalk9.SPA.03.04.04.SG.151-2.SG4.bin
79203 -rw- 178257396 Dec 9 2015 04:35:32 -06:00 cat4500e-universalk9.SPA.03.06.03.E.152-2.E3.bin
1659666432 bytes total (1354903552 bytes free)
3.Check the current boot statement
SWITCH4500X-32#sh run | in boot
boot-start-marker
boot system flash bootflash:cat4500e-universalk9.SPA.03.04.04.SG.151-2.SG4.bin
boot-end-marker
4.Check boot variables as well
SWITCH4500X-32#show bootvar
BOOT variable = bootflash:cat4500e-universalk9.SPA.03.04.04.SG.151-2.SG4.bin,1;
CONFIG_FILE variable does not exist
BOOTLDR variable does not exist
Configuration register is 0x2101
5. Change the Boot statement to new IOS
SWITCH4500X-32#config t
Enter configuration commands, one per line. End with CNTL/Z.
SWITCH4500X-32(config)#boot system flash bootflash:cat4500e-universalk9.SPA.03.06.03.E.152-2.E3.bin
6. Save the change
SWITCH4500X-32(config)#do wr
Building configuration...
Compressed configuration from 15475 bytes to 6699 bytes[OK]
7.Check the boot statement
SWITCH4500X-32(config)#
SWITCH4500X-32(config)#do sh run | in boot
boot-start-marker
boot system flash bootflash:cat4500e-universalk9.SPA.03.04.04.SG.151-2.SG4.bin
boot system flash bootflash:cat4500e-universalk9.SPA.03.06.03.E.152-2.E3.bin
boot-end-marker
8. Remove the old bootstatement
SWITCH4500X-32(config)#no boot system flash bootflash:cat4500e-universalk9.SPA.03.04.04.SG.151-2.SG4.bin
9.Check the boot statement
SWITCH4500X-32(config)#do sh run | in boot
boot-start-marker
boot system flash bootflash:cat4500e-universalk9.SPA.03.06.03.E.152-2.E3.bin
boot-end-marker
SWITCH4500X-32(config)#
10. Save the changes and check the bootvar
SWITCH4500X-32(config)#
SWITCH4500X-32(config)#do wr
Building configuration...
Compressed configuration from 15396 bytes to 6660 bytes[OK]
SWITCH4500X-32(config)#do show bootvar
BOOT variable = bootflash:cat4500e-universalk9.SPA.03.06.03.E.152-2.E3.bin,1;
CONFIG_FILE variable does not exist
BOOTLDR variable does not exist
Configuration register is 0x2101
11. Change the config-register to 0X2102 & Save the changes
SWITCH4500X-32(config)#config-register 0X2102
SWITCH4500X-32(config)#do wr
Building configuration...
Compressed configuration from 15396 bytes to 6652 bytes[OK]
12. Check the bootvar
SWITCH4500X-32(config)#do show bootvar
BOOT variable = bootflash:cat4500e-universalk9.SPA.03.06.03.E.152-2.E3.bin,1;
CONFIG_FILE variable does not exist
BOOTLDR variable does not exist
Configuration register is 0x2101 (will be 0x2102 at next reload)
13. Reload the switch
SWITCH4500X-32#reload
Proceed with reload? [confirm]