Обновление IOS на коммутаторах Cisco, задача тривиальная и описана на многих ресурсах. Но, для некоторых моделей, есть маленькие нюансы, которые могут убить энное количество времени и нервных клеток.


Cisco Catalyst 4900M

Обновлять будем с Cisco IOS Release 12.2(46)SG на 15.0(2)SG8, загружать IOS по tftp, через порт управления. Для начала убедимся, что есть свободное место на коммутаторе для нового IOS:


Switch#dir
Directory of bootflash:/

6 -rw- 20192705 Aug 28 2008 22:55:34 +04:00 cat4500e-ipbase-mz.122-46.SG.bin

131436544 bytes total (105902080 bytes free)
Switch#

Как видим, доступно ~100Мб, новый образ IOS занимает ~27Мб. Настраиваем IP на порту управления:


Switch#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#interface FastEthernet1
Switch(config-if)#ip address 192.168.1.2 255.255.255.0
Switch(config-if)#exit
Switch(config)#exit
Switch#show running-config interface FastEthernet1
Building configuration...

Current configuration : 121 bytes
!
interface FastEthernet1
ip vrf forwarding mgmtVrf
ip address 192.168.1.2 255.255.255.0
speed auto
duplex auto
end

Switch#

Как видим, интерфейс FastEthernet1 находится в vrf mgmtVrf и поменять его нельзя. Это первый нюанс. Чтобы нам можно было скачать IOS через этот интерфейс, надо указать source-interface для tftp:


Switch#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#ip tftp source-interface FastEthernet1
Switch(config)#exit
Switch#

Далее, скачиваем новый образ:


Switch#copy tftp://192.168.1.1/cat4500e-entservicesk9-mz.150-2.SG8.bin bootflash:cat4500e-entservicesk9-mz.150-2.SG8.bin
Destination filename [cat4500e-entservicesk9-mz.150-2.SG8.bin]?
Accessing tftp://192.168.1.1/cat4500e-entservicesk9-mz.150-2.SG8.bin...
Loading cat4500e-entservicesk9-mz.150-2.SG8.bin from 192.168.1.1: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[OK - 27242762 bytes]

27242762 bytes copied in 236.872 secs (115010 bytes/sec)
Switch#

Смотрим, что у нас теперь 2 IOS на коммутаторе:


Switch#dir
Directory of bootflash:/

6 -rw- 20192705 Aug 28 2008 18:55:34 +00:00 cat4500e-ipbase-mz.122-46.SG.bin
18 -rw- 27242762 Nov 17 2015 05:48:02 +00:00 cat4500e-entservicesk9-mz.150-2.SG8.bin

131436544 bytes total (78663680 bytes free)
Switch#

Для подстраховки проверим md5 хэш нашего образа:


Switch#verify /md5 bootflash:cat4500e-entservicesk9-mz.150-2.SG8.bin
.............................................................................................Done!
verify /md5 (bootflash:cat4500e-entservicesk9-mz.150-2.SG8.bin) = a961241aff9bf9aca6f75f7a8d562000

Switch#

Указываем новый образ, который должен быть загружен при перезагрузке коммутатора:


Switch#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#boot system flash bootflash:cat4500e-entservicesk9-mz.150-2.SG8.bin
Switch(config)#exit
Switch#

Тут появляется второй нюанс, который заключается в том, что по умолчанию с завода, на коммутаторах настроен конфигурационный регистр 0x2101:


Switch#show bootvar
BOOT variable = bootflash:cat4500e-entservicesk9-mz.150-2.SG8.bin,1;
CONFIG_FILE variable does not exist
BOOTLDR variable does not exist
Configuration register is 0x2101

Не смотря на то, что мы указали загружать IOS 15.0(2)SG8, после перезагрузки вы увидите опять 12.2(46)SG и никаких ошибок. Все дело в том, что регистр 0x2101 говорит коммутатору, что он должен загрузить первый попавшийся IOS с флеш, а т.к. мы не удаляли 12.2(46)SG, то он загружает его. Чтобы коммутатор начал загружать IOS, указанный в конфигурации, надо поменять регистр на 0x2102. Подробнее про регистры можно почитать на сайте cisco.com. Меняем регистр на 0x2102:


Switch#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#config-register 0x2102
Switch(config)#exit
Switch#write memory
Building configuration...
Compressed configuration from 5132 bytes to 2812 bytes[OK]

Смотрим, что изменения применяться при перезагрузке:


Switch#show bootvar
BOOT variable = bootflash:cat4500e-entservicesk9-mz.150-2.SG8.bin,1;
CONFIG_FILE variable does not exist
BOOTLDR variable does not exist
Configuration register is 0x2101 (will be 0x2102 at next reload)

Switch#

Перезагружаем коммутатор:


Switch#reload
Proceed with reload? [confirm]y

На этом всё!