KB ID 0001630
Problem
People are often nervous about doing this, I’m not sure why because Cisco have made it painfully simple now. That’s because instead of the old /bin files we used to use, you can now upgrade a switch (or a switch stack) using a .tar file with one command, (and it will also upgrade all the stack members and the firmware on any other network modules you have in the switches at the same time).
Yes it does take a while*, and for long periods of time theres no updated output on the screen, which is worrying if you’ve never done it before.
*Note: The procedure below was updating two 2960-X switches and took about 45-50 minutes. If anyone wants to post any further timings below as a help to others, state the switch types and quantities, and versions you used, etc.
Solution
First things first, BACK UP YOUR SWITCH CONFIG. I also have a habit of copying out the original .bin file from the flash to my TFTP server as an extra ‘belt and braces’ precaution, in case everything ‘Goes to hell in a hand cart!’
I find it easier to do this with the update file on a USB Drive, (format the drive as Fat32). If you dont have a USB Drive, or the switch does not have a working USB port then don’t panic, you can use ftp or tftp to upgrade also.
Place your new upgrade .tar file on your USB Drive and insert it into the master switch, you should see the following;
[box]
Dec 19 13:13:18.466: %USBFLASH-5-CHANGE: usbflash0 has been inserted!
[/box]
Note: If yours says usbflash1, or usbflash2 etc. Then that’s just the switch numbering in the stack, use the number it tells you!
Make sure the switch can see your upgrade file;
[box]
Petes-Switch# dir usbflash1:
Dec 19 16:56:45.712: %USBFLASH-5-CHANGE: usbflash0 has been inserted!
Directory of usbflash0:/
-rw- 37488640 Nov 25 2019 10:08:34 +00:00 c2960x-universalk9-tar.152-7.E0a.tar
8036286464 bytes total (7997743104 bytes free)
[/box]
You can execute the entire upgrade with this one command;
[box]
Petes-Switch# archive download-sw /overwrite usbflash0:/c2960x-universalk9-tar.152-7.E0a.tar
[/box]
Note: If using tftp then use archive download-sw /overwrite tftp:/{ip-of-tftp-server}/{image-name}.tar instead.
It will take quite a long time, as soon as it says extracting xyz….go and have a coffee, wait until it says ‘All software images installed.’
[box]
---LOTS OF OUTPUT OMITTED FOR THE SAKE OF BREVITY--- New software image installed in flash2:/c2960x-universalk9-mz.152-7.E0a Deleting old files from dc profile dir "flash:/dc_profile_dir" extracting dc profile file from "flash:/c2960x-universalk9-mz.152-7.E0a/dc_default_profiles.txt" to "flash:/dc_profile_dir/dc_default_profiles.txt" Deleting old files from dc profile dir "flash2:/dc_profile_dir" extracting dc profile file from "flash2:/c2960x-universalk9-mz.152-7.E0a/dc_default_profiles.txt" to "flash2:/dc_profile_dir/dc_default_profiles.txt" All software images installed.
[/box]
Now let’s do a couple of checks just for our ‘peace of mind‘, first make sure the images are in all the relevant switches flash storage;
[box]
Petes-Switch#dir flash1: Directory of flash:/ 2 -rwx 5486 Dec 19 2019 16:55:40 +00:00 private-config.text 3 -rwx 33 Aug 7 2019 08:28:12 +00:00 pnp-tech-time 4 -rwx 11114 Aug 7 2019 08:28:14 +00:00 pnp-tech-discovery-summary 5 -rwx 3096 Dec 19 2019 16:55:40 +00:00 multiple-fs 699 drwx 512 Dec 19 2019 17:35:25 +00:00 c2960x-universalk9-mz.152-7.E0a 480 drwx 512 Dec 19 2019 17:35:28 +00:00 dc_profile_dir 696 -rwx 796 Aug 9 2019 09:48:30 +00:00 vlan.dat 698 -rwx 7539 Dec 19 2019 16:55:40 +00:00 config.text 122185728 bytes total (84392960 bytes free) Petes-Switch#dir flash2: Directory of flash2:/ 2 -rwx 5486 Dec 19 2019 16:55:40 +00:00 private-config.text 3 -rwx 33 Aug 7 2019 08:32:38 +00:00 pnp-tech-time 4 -rwx 11126 Aug 7 2019 08:32:40 +00:00 pnp-tech-discovery-summary 5 -rwx 7539 Dec 19 2019 16:55:40 +00:00 config.text 6 drwx 512 Dec 19 2019 17:35:26 +00:00 c2960x-universalk9-mz.152-7.E0a 481 drwx 512 Dec 19 2019 17:35:28 +00:00 dc_profile_dir 696 -rwx 3096 Aug 8 2019 10:21:29 +00:00 multiple-fs 697 -rwx 796 Dec 11 2019 10:55:22 +00:00 vlan.dat 698 -rwx 7514 Dec 19 2019 16:55:40 +00:00 config.text.backup 699 -rwx 5486 Dec 19 2019 16:55:40 +00:00 private-config.text.backup 122185728 bytes total (84378624 bytes free)
[/box]
Note: Repeat for each switch in the stack, if you have further switches.
Why does it not have .tar or .bin on the end? Because it’s a folder 🙂
The let’s make sure the ‘boot variable‘ in the device is set to use the new image;
[box]
Petes-Switch# show boot
BOOT path-list : flash:/c2960x-universalk9-mz.152-7.E0a/c2960x-universalk9-mz.152-7.E0a.bin
Config file : flash:/config.text
Private Config file : flash:/private-config.text
Enable Break : yes
Manual Boot : no
Allow Dev Key : yes
HELPER path-list :
Auto upgrade : yes
Auto upgrade path :
Boot optimization : disabled
NVRAM/Config file
buffer size: 524288
Timeout for Config
Download: 0 seconds
Config Download
via DHCP: disabled (next boot: disabled)
-------------------
Switch 2
-------------------
BOOT path-list : flash:/c2960x-universalk9-mz.152-7.E0a/c2960x-universalk9-mz.152-7.E0a.bin
Config file : flash:/config.text
Private Config file : flash:/private-config.text
Enable Break : yes
Manual Boot : no
Allow Dev Key : yes
HELPER path-list :
Auto upgrade : no
Auto upgrade path :
[/box]
All looks good save the config and reload the stack.
[box]
Petes-Switch# write mem Petes-Switch# reload Proceed with reload? [confirm] {Enter} Dec 19 17:38:50.952: %SYS-5-RELOAD: Reload requested by console. Reload Reason: Reload command.
[/box]
Time for another coffee while it’s reloading the stack, when it’s back up you can check it was successful like so;
[box]
Petes-Switch# show version
---LOTS OF OUTPUT OMITTED FOR THE SAKE OF BREVITY---
Switch Ports Model SW Version SW Image
------ ----- ----- ---------- ----------
* 1 54 WS-C2960X-48TS-L 15.2(7)E0a C2960X-UNIVERSALK9-M
2 54 WS-C2960X-48TS-L 15.2(7)E0a C2960X-UNIVERSALK9-M
[/box]
Related Articles, References, Credits, or External Links
NA
I really wish the 2960-x supporting rolling upgrades in the stack. Found out the hard way that I couldn’t do that (after getting some bad info).
Indeed, but at least during the upgrade the stack will actually stay online, even If the reboot takes ‘a while’!
P