目录

简介

先决条件

要求

使用的组件

背景信息

故障场景

交换机在安装模式下重新加载后在早期版本上启动

在安装模式下升级/重新加载后切换到ROMMON模式

从捆绑包转换到安装模式

从安装模式转换为捆绑包模式

Bin文件损坏

闪存中的空间不足

堆栈故障场景（V — 不匹配）

由于堆栈1+1变量，交换机启动到ROMMON

升级时无法将Bin映像复制/提取到成员交换机之一

安装模式与捆绑包模式的限制

传统请求平台命令

ROMMON改进

ROMMON — 在ROMMON模式下允许文件传输到USB/TFTP/从USB/TFTP

相关信息

简介

本文档介绍升级Catalyst 9000系列设备时发生的常见故障，并提供恢复步骤。

先决条件

要求

Cisco 建议您了解以下主题：

- 如何升级Catalyst 9000系列交换机。

使用的组件

本文档基于以下硬件版本：

- Catalyst 9000 系列交换机.

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

背景信息

Catalyst 9000交换机使用Cisco IOS® XE软件，在两种模式（安装模式和捆绑模式）下运行。

安装模式是较新的且推荐使用的运行模式。 安装模式使用名为packages.conf的软件包调配文件来引导交换机。此外，闪存驱动器中packages.conf文件附带有许多.pkg文件。建议不要修改packages.conf和.pkg文件。

捆绑包模式使用单片Cisco IOS映像（.bin文件）来启动交换机。捆绑包模式比安装模式消耗更多内存，因为软件包是从捆绑包中提取并复制到RAM。 您可以在任一模式下运行Catalyst 9000交换机。

以下是一些命令的部分示例输出，用于检验操作模式。在INSTALL模式下：

Switch#show version | be Mode

Switch Ports Model                 SW Version        SW Image        Mode

------ ----- -----                 ----------        ----------      ----

* 2    60    C9500-12Q             16.12.4           CAT9K_IOSXE     INSTALL <-------

Switch#show run | inc boot system

boot system bootflash:packages.conf <-------

Switch#show boot

---------------------------

Switch 1

---------------------------

Current Boot Variables:

BOOT variable = flash:packages.conf;    <-------

--snip--

以下是一些命令的部分示例输出，用于检验操作模式。 在BUNDLE模式下：

Switch#show version | be Mode

Switch Ports Model                  SW Version        SW Image          Mode

------ ----- -----                  ----------        ----------        ----

*    2 60    C9500-12Q              16.12.4           CAT9K_IOSXE       BUNDLE  <-------

Switch#show run | inc boot system

boot system bootflash:cat9k_iosxe.16.12.04.SPA.bin <------- BUNDLE mode .bin image

Switch#show boot

---------------------------

Switch 1

---------------------------

Current Boot Variables:

BOOT variable = bootflash:cat9k_iosxe.16.12.04.SPA.bin; <------- switch set to boot from .bin image

--snip--

故障场景

交换机在安装模式下重新加载后在早期版本上启动

如果switch boot语句仍指向早期版本而不是新版本，则会发生这种情况。要验证这一点，可以执行以下步骤：

步骤1: 使用命令验证引导变量  show boot .

Switch#show boot

---------------------------

Switch 1

---------------------------

Current Boot Variables:

BOOT variable = flash:packages.conf;

Boot Variables on next reload:

BOOT variable = flash:packages.conf;

Manual Boot = no

Enable Break = yes

Boot Mode = DEVICE

iPXE Timeout = 0

第二步： 使用命令验证当前.conf文件属于哪个版本  more flash:packages.conf | include pkg .

Switch#more flash:packages.conf | in pkg

boot rp 0 0 rp_boot cat9k-rpboot.17.03.02a.SPA.pkg

iso rp 0 0 rp_base cat9k-rpbase.17.03.02a.SPA.pkg

iso rp 0 0 rp_daemons cat9k-rpbase.17.03.02a.SPA.pkg

iso rp 0 0 rp_iosd cat9k-rpbase.17.03.02a.SPA.pkg

iso rp 0 0 rp_security cat9k-rpbase.17.03.02a.SPA.pkg

iso rp 0 0 rp_wlc cat9k-wlc.17.03.02a.SPA.pkg

iso rp 0 0 rp_webui cat9k-webui.17.03.02a.SPA.pkg

iso rp 0 0 srdriver cat9k-srdriver.17.03.02a.SPA.pkg

iso rp 0 0 guestshell cat9k-guestshell.17.03.02a.SPA.pkg

boot rp 1 0 rp_boot cat9k-rpboot.17.03.02a.SPA.pkg

iso rp 1 0 rp_base cat9k-rpbase.17.03.02a.SPA.pkg

iso rp 1 0 rp_daemons cat9k-rpbase.17.03.02a.SPA.pkg

iso rp 1 0 rp_iosd cat9k-rpbase.17.03.02a.SPA.pkg

iso rp 1 0 rp_security cat9k-rpbase.17.03.02a.SPA.pkg

iso rp 1 0 rp_wlc cat9k-wlc.17.03.02a.SPA.pkg

iso rp 1 0 rp_webui cat9k-webui.17.03.02a.SPA.pkg

iso rp 1 0 srdriver cat9k-srdriver.17.03.02a.SPA.pkg

iso rp 1 0 guestshell cat9k-guestshell.17.03.02a.SPA.pkg

第三步： 如果文件指向早期版本，请使用命令检查闪存中正确的.conf文件 dir flash: | include conf   和  more flash:

.conf | include pkg

.

Switch#dir flash: | in conf

81132 -rw- 7773 Jan 5 2021 14:59:34 +00:00 packages.conf

第四步： 设置引导变量以更正.conf文件并重新启动交换机。

Switch(config)#boot system flash:packages.conf

Switch#copy run start

Switch#reload

在安装模式下升级/重新加载后切换到ROMMON模式

步骤1: 通过控制台登录交换机。

第二步： 检查闪存中的.conf文件。

Switch:dir flash:

第三步： 确定正确的.conf文件。

Switch:more flash:packages.conf

第四步： 使用正确的.conf文件启动交换机

Switch:boot flash:packages.conf

提示：如果您找不到与正确的软件版本对应的.conf文件，请使用与以前的软件版本对应的.conf文件启动交换机。

在设备陷入没有有效映像的ROMMON中的情况下，您可以选择通过USB将文件复制到交换机或通过TFTP:

- 选项1：您可以使用以下命令从 USB 启动：

boot usbflash0:cat9k_iosxe.16.12.01.SPA.bin

提示:USB A型端口支持使用FAT文件系统格式化的USB闪存驱动器，容量从128 MB到8 GB（支持端口密度为128 MB、256 MB、1 GB、4 GB和8 GB的USB设备）

- 选项#2:从TFTP服务器复制更加详细。您需要将笔记本电脑设置为TFTP服务器并将以太网电缆连接到设备的管理端口，或者需要将设备的管理端口连接到正常运行的设备的网络端口。然后，您可以将带有目标映像的设备配置为 TFTP 服务器.

tftp-server flash:cat9k_iosxe.16.12.01.SPA.bin

- 最好使用路由器/交换机作为TFTP服务器，这样您就不必担心Windows防火墙或计算机帐户权限问题。完成TFTP服务器设置后，您需要在ROMMON中配置此设置。

DEFAULT_GATEWAY=172.16.0.1

IP_ADDRESS=172.16.0.10

IP_SUBNET_MASK=255.255.255.0

TFTP_SERVER=172.16.0.100

- 通过ping TFTP服务器测试配置。

ping 172.16.0.100

- 建立连接后，直接引导至TFTP上的文件。

boot tftp://172.16.0.100/cat9k_iosxe.16.12.01.SPA.bin

从捆绑包转换到安装模式

执行以下操作步骤将操作模式从捆绑包模式转换为安装模式：

步骤

命令或操作

目的

第 1 步

enable

示例：

switch#enable

启用特权执行模式。

- 根据提示输入密码。

步骤 2

show version

示例：

switch#show version

验证操作模式

步骤 3

show boot

示例：

switch#show boot

显示BOOT变量的内容、CONFIG_FILE变量指向的配置文件名称、BOOTLDR变量的内容和配置寄存器

步骤 4

no boot system

示例：

switch(config)#no boot system

删除启动系统映像规范。

注：在应用no boot system命令之前，请确保已加载要使用的Cisco IOS版本的.bin文件。

步骤 5

boot system switch all flash

示例：

switch(config)#boot system switch all flash:packages.conf

更新堆栈中所有交换机的启动变量。

步骤 6

退出

示例：

switch(config)#exit

退出配置模式到层次结构中的下一个最高模式。

步骤 7

写存储器

示例：

switch#write memory

将文件从源复制到目标。

步骤 8

install add file flash

示例：

switch#install add file flash:cat9k_iosxe.16.12.04.SPA.bin activate commit

或

switch#install add file flash:cat9k_iosxe.16.12.04.SPA.bin activate

switch#install commit

将单个Cisco IOS XE软件包和调配文件从指定捆绑包扩展到特定目标目录。

注意：如果您不想在一个步骤中完成升级，可以将其分解为各个步骤

步骤 9

reload

示例：

此操作可能需要重新加载系统。  是否要继续[y/n]

它会要求您在系统重新加载设备之前确认是否要重新加载

步骤 10

show version

示例：

switch#show version

验证操作模式

此示例说明如何使用旧版请求平台软件包扩展 指令：

Switch#request platform software package expand file flash:image_name.bin

注：在手动提取过程中，创建的配置文件可以命名为bin image file_name.conf。确定正确的配置文件并设置引导变量。

从安装模式转换为捆绑包模式

执行以下操作步骤将操作模式从安装模式转换为捆绑模式：

步骤

命令或操作

目的

第 1 步

enable

示例：

switch#enable

启用特权执行模式。

- 根据提示输入密码。

步骤 2

show version

示例：

switch#show version

验证操作模式

步骤 3

show boot

示例：

switch#show boot

显示BOOT变量的内容、CONFIG_FILE变量指向的配置文件名称、BOOTLDR变量的内容和配置寄存器

步骤 4

no boot system

示例：

switch(config)#no boot system

删除启动系统映像规范。

注：在应用no boot system命令之前，请确保已加载要使用的Cisco IOS版本的.bin文件。

步骤 5

boot system switch all flash

示例：

switch(config)#boot system switch all flash:cat9k_iosxe.16.12.04.SPA.bin

更新堆栈中所有交换机的启动变量。

步骤 6

退出

示例：

switch(config)#exit

退出配置模式到层次结构中的下一个最高模式。

步骤 7

写存储器

示例：

switch#write memory

将文件从源复制到目标。

步骤 8

步骤 9

reload

示例：

switch#reload

它会要求您在系统重新加载设备之前确认是否要重新加载

步骤 10

show version

示例：

switch#show version

验证操作模式

Bin文件损坏

为避免这种情况，请在执行软件安装操作之前验证md5校验和值。 如果md5校验和值不匹配，请再次将bin文件复制到闪存中。

Switch#verify /md5 flash:

.bin

闪存中的空间不足

为避免这种情况，请在安装软件之前执行软件清理操作。软件清理的命令语法取决于交换机当前使用的代码版本。

对于16.6.3及更低版本：

Switch#request platform software package clean

对于16.6.4及更高版本：

Switch#install remove inactive

堆栈故障场景（V — 不匹配）

如果您获得V-mismatch，这意味着交换机上安装的软件不同于活动软件，如以下命令输出所示：

switch#show switch

Switch/Stack Mac Address : 08ec.f5e1.8f80 - Local Mac Address

Mac persistency wait time: Indefinite

H/W   Current

Switch#    Role    Mac Address     Priority Version  State

-------------------------------------------------------------------------------------

*1        Active   08ec.f5e1.8f80     10     V01     Ready

2        Member   701f.5300.fa00     15     V01     V-Mismatch   <--- Indicates a version mismatch

如果您处于安装模式，则可以选择使用auto-upgrade命令解决此问题。 自动升级功能的目的是允许交换机升级到兼容的软件映像，以便交换机可以加入交换机堆栈。 当新交换机尝试加入交换机堆叠时，活动交换机将执行兼容性检查。每个堆叠成员将兼容性检查的结果发送到活动交换机，活动交换机使用该结果来确定交换机是否可以加入交换机堆叠。如果新交换机上的软件与交换机堆叠不兼容，新交换机将进入版本不匹配(VM)模式。如果在当前交换机堆叠上启用了自动升级功能，活动交换机将使用安装在兼容堆叠成员上的相同软件映像自动升级新交换机。自动升级在检测到不匹配的软件后几分钟启动。

您可以通过  software auto-upgrade enable   全局配置命令。

注：默认情况下禁用自动升级。自动升级功能在捆绑包模式下不可用。交换机堆叠必须在安装模式下运行。

如果您处于捆绑包模式，请执行以下操作步骤：

步骤1:从堆叠中删除不匹配的交换机。

第二步： 将其升级到正确的版本。

第四步： 将引导变量设置为正确的.bin文件并保存配置。

第五步： 关闭交换机电源，连接堆栈电缆并打开交换机电源。

由于堆栈1+1变量，交换机启动到ROMMON

如果设备显示以下日志，则可以识别此情况:

switch:boot

attempting to boot from [flash:packages.conf]

Located file packages.conf

##########################################################################################################################

Validate packages: SHA-1 hash:

calculated 550C9730:667B2788:DD6F6B06:D0FFA819:01A315DA

expected 550C9730:667B2788:DD6F6B06:D0FFA819:01A315DA

Both links down, not waiting for other switches

Switch number is 2

Chassis 2 reloading, reason - Active/standby selection failed in 1+1 Mode                  <<<<<<

Feb 19 20:06:55.572 FP0/0: %PMAN-5-EXITACTION: Process manager is exiting: reload fp action requested

Feb 19 20:06:57

Initializing Hardware...

恢复：

步骤1:取消设置Stack 1+1变量。

Switch:unset STACK_1_1

第二步： 取消设置Stack 1+1引导加载程序变量后，发出   boot  命令，以便交换机可以从交换机上设置的引导变量启动。

switch:boot

##########################################################################################################################

Validate packages: SHA-1 hash:

calculated 550C9730:667B2788:DD6F6B06:D0FFA819:01A315DA

expected 550C9730:667B2788:DD6F6B06:D0FFA819:01A315DA

Both links down, not waiting for other switches

Switch number is

升级时无法将Bin映像复制/提取到成员交换机之一

有时，在将映像复制到成员交换机时可能会出错：

Preparing install operation ...

[1]: Copying software from active switch 1 to switch 2

[2]: % Failed to copy file flash:cat9k_iosxe.17.03.03.SPA.bin from active switch 1 to switch 2,

operation aborted

恢复：

步骤1: 检查复制失败的成员上的闪存。验证它是否有足够的可用空间，或者闪存是否损坏。

第二步： 如果空间不足，则删除文件以确保有足够的可用空间。

第三步： 如果空间可用但仍未复制，则格式化成员交换机的闪存驱动器。

Switch#format flash-1:

第四步： 一旦有足够的空间可用或闪存已恢复，请执行升级

第五步： 如果即使在格式化后发现同一交换机有相同错误，请排除交换机上的闪存问题。

注意：有关特定于版本的进一步说明，请参阅您计划升级到的版本的版本说明。

安装模式与捆绑包模式的限制

安装模式和捆绑操作模式具有以下限制：

- 不支持从安装模式下的USB驱动程序或TFTP启动。

- 在捆绑包模式下启动交换机比安装模式消耗更多内存，因为软件包是从捆绑包中提取出来并复制到RAM。

- 自动升级功能默认为禁用，在捆绑包模式下不可用。

传统请求平台命令

本节介绍如何使用  request platform  命令和9500和9300上支持的命令。

- 对于Cisco Catalyst 9000交换机，不建议使用此方法。请使用上述方法之一.

- 这些命令自 16.10.1 版本起已弃用，建议您使用“install”命令.

- 此处列出了三个最重要的命令(还有很多选项，但最好使用  install   命令而不是这些命令)。

扩大采购

- 此命令会支持您指定的任何 .bin 文件，并从中提取出 .pkg 文件.

Switch#request platform software package expand switch all file flash:cat9k_iosxe.16.09.02.SPA.bin

- 如果设备以捆绑模式运行。首先运行“expand”命令，然后将引导语句更改为 packages.conf 并重新加载以进入安装模式

Install（安装）

- 如果您已处于安装模式，请使用此命令切换至另一个版本.

request platform software package install switch all file flash:test auto-copy new

Clean（清理）

- 执行与“安装删除非活动”相同的操作。

request platform software package clean

ROMMON改进

Cisco IOS XE版本16.12.X提供以下3个ROMMON增强功能

- show romvar  —  转储ROMMON变量的新CLI命令（相当于ROMMON中的“set”命令）

- 能够从ROMMON模式显示文件

- show bootlog - ROMMON升级日志会被捕获，并同时从Cisco IOS和ROMMON模式提供

注：默认情况下启用此功能。禁用功能集   ROMMON_BOOT_LOG_DISABLE=1 在ROMMON提示符下

C9200L#show romvar

----------------------------------

ROMMON variables for Active Switch

----------------------------------

AUTOBOOT_COUNT="0"

AUTOBOOT_STATE="0"

BAUD="9600"

BOOT="tftp://chinmoha/pol.bin;"

BOOT64="flash:quake.itb.ssa.181009"

BOOT_LOADER_UPGRADE_DISABLE="yes"

BOOT_PARAM="ip=172.16.0.230::172.16.0.1:255.255.0.0:vore:eth0:on DEBUG_CONF= REAL_MGMTE_DEV="

CFG_MODEL_NUM="C9200L-48T-4X-E"

CLEI_CODE_NUMBER="INM6H00ARA"

DEFAULT_GATEWAY="172.16.0.1"

DEFAULT_ROUTER="172.16.0.1"

ENABLE_BREAK="yes"

IP_ADDRESS="172.16.0.230"

IP_MASK="255.255.0.0"

IP_SUBNET_MASK="255.255.0.0"

LICENSE_BOOT_LEVEL="network-essentials,all:C9200L-48;"

MAC_ADDR="70:B3:17:2E:1C:80"

MANUAL_BOOT="yes"

MODEL_NUM="C9200L-48T-4X"

MODEL_REVISION_NUM="29"

MOTHERBOARD_ASSEMBLY_NUM="73-19242-03"

MOTHERBOARD_REVISION_NUM="04"

MOTHERBOARD_SERIAL_NUM="JAE22370MLD"

ROMMON_AUTOBOOT_ATTEMPT="3"

ROMMON_BOARDID="0x315"

ROMMON_BOARDREV="0x4"

ROMMON_BOOT_LOG="1"             ---> boot log is enabled (default)

STANDALONE="1"

SWITCH_NUMBER="1"

SYSTEM_SERIAL_NUM="JAE22370MLD"

TAN_NUM="68-101384-01"

TEMPLATE="advanced"

TFTP_SERVER="172.16.0.25"

USB_DB_INFO="73-18785-03A0JAE22410UH0"

VERSION_ID="PPC"

ABNORMAL_RESET_COUNT="0"

BSI="0"

RANDOM_NUM="966540990"

C9200L#show bootlog switch active r0

=========================================================

//// ROMMMON Boot up log start ////

System Bootstrap, Version 99.2, DEVELOPMENT SOFTWARE

Compiled Wed 12/12/2018 14:56:53 by chinmoha

Copyright (c) 2018 by Cisco Systems, Inc.

Current ROMMON image : Primary

C9200L-48T-4X platform with 2097152 Kbytes of main memory

switch: boot: attempting to boot from [tftp://chinmoha/pol_try.bin]

Filename     : /chinmoha/pol_try.bin

IpAddress    : 172.16.0.230

TftpServer   : 172.16.0.25

TftpBlkSize  : 1468

*

File Size    : 349275061

//// ROMMMON Boot up log end ////

==========================================================

[    0.000000] Booting Linux on physical CPU 0x0

[    0.000000] Initializing cgroup subsys cpuset

[    0.000000] Initializing cgroup subsys cpu

[    0.000000] Initializing cgroup subsys cpuacct

[    0.000000] Linux version 4.4.155 (xelinux@xe-linux-bld1) (gcc version 5.3.0 (GCC) ) #1 SMP Thu Dec 13 00:46:18 PST 2018

[    0.000000] Boot CPU: AArch64 Processor [410fd034]

[    0.000000] Cisco Package: start=0xa2000000

[    0.000000] Cisco Package: size=0x12b02000

[    0.000000] Cisco Package at 0xffffffc022000000 (313532416 bytes)

[    0.000000] crashkernel reserved: 0x00000000fde00000 - 0x00000000ffe00000 (32 MB)

[    0.000000] cma: Reserved 128 MiB at 0x00000000f0000000

[    0.000000] On node 0 totalpages: 524229

[    0.000000]   DMA zone: 8192 pages used for memmap

[    0.000000]   DMA zone: 0 pages reserved

[    0.000000]   DMA zone: 524229 pages, LIFO batch:31

[    0.000000] PERCPU: Embedded 15 pages/cpu @ffffffc07ffa3000 s24472 r8192 d28776 u61440

[    0.000000] pcpu-alloc: s24472 r8192 d28776 u61440 alloc=15*4096

[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3

[    0.000000] Detected VIPT I-cache on CPU0

[    0.000000] CPU features: enabling workaround for ARM erratum 845719

[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 516037

--snip--

ROMMON — 在ROMMON模式下允许文件传输到USB/TFTP/从USB/TFTP

在ROMMON模式中，这些命令可用于在USB/TFTP之间传输。

重要信息：这些命令可从Cisco IOS XE 17.1.1获得

switch: copy ?

usage:

copy

switch:

switch: dir

usage:

dir <path-to-directory>

supported filesystem(s):

flash: ro flash

bootflash: ro system partition

usbflash0: rw front-panel USB

usbflash1: rw back-panel USB

switch: dir flash:

Size       Attributes Name

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

—snip—

616          -rw-     vlan.dat

4096         drw-     tech_support

835079148    -rw-     cat9k_iosxe.17.01.01.SPA.bin

910498192    -rw-     cat9k_iosxe.BLD_POLARIS_DEV_LATEST_20191212_030414_2.SSA.bin

9307         -rw-     cat9k_iosxe.BLD_POLARIS_DEV_LATEST_20180819_200912_2.SS.conf

—snip—

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

switch: copy flash:vlan.dat usbflash0:

Using Destination file path: usbflash0:vlan.dat

Reading :        616

Writing :        616

switch:

switch: dir usbflash0:

Size       Attributes Name

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

—snip—

880878448    -rw-     cat9k_iosxe.sh_tech_cts

835079148    -rw-     cat9k_iosxe.17.01.01.SPA.bin

4096         -rw-     ._cat9k_iosxe.17.01.01.SPA.bin

910498192    -rw-     cat9k_iosxe.BLD_POLARIS_DEV_LATEST_20191212_030414_2.SSA.bin

616          -rw-     vlan.dat

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

相关信息

- Catalyst 9000交换机引导至交换机：由于堆栈1+1变量而提示

- Cisco IOS XE Catalyst 9000交换机升级指南

- Catalyst 3850 和 Catalyst 9000 系列交换机的服务中软件升级 (ISSU)

- 安装模式与捆绑包模式

- 思科技术支持和下载