目录

简介

要求

使用的组件

背景信息

安装模式概述

捆绑包模式

安装模式

升级方法

自动升级

安装模式

流程概述

安装模式命令

捆绑包模式

传统方法

Stackwise虚拟

双管理引擎

四管理引擎

ISSU

升级选项

ReloadFast

清理

故障排除

V-Mismatch（V 不匹配）

从 ROMMON 恢复

成员中缺少Bin文件

已安装了超级软件包

不正确的引导变量

场景 1

场景 2

相关信息

思科漏洞 ID

简介

本文档介绍 Catalyst 9000 (Cat9K) 交换机的升级方法。

要求

本文档没有任何特定的要求。

使用的组件

本文档中的信息基于以下软件和硬件版本。

- C9200

- C9300

- C9400

- C9500

- C9600

注意：有关在其他思科平台上启用这些功能的命令，请参阅相应的配置指南。

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

背景信息

本文档介绍使用捆绑模式或安装模式来升级 Catalyst 9K 类型交换机的新/旧程序。

安装模式概述

捆绑包模式

捆绑模式是一种传统方式，表示交换机以 Cisco IOS® 的传统方式运行。您可以启动一个 .bin 文件，其中包含运行 Cisco IOS 所需的一切内容。根据传统 Cisco IOS 的做法，您需要使用一条引导语句指向要加载的 .bin 文件，在启动 Cisco IOS 时系统便会加载该文件。

Switch#show boot

BOOT variable = bootflash:cat9k_iosxe.16.11.01.SPA.bin;

Configuration Register is 0x102

MANUAL_BOOT variable = no

BAUD variable = 9600

ENABLE_BREAK variable does not exist

BOOTMODE variable does not exist

IPXE_TIMEOUT variable does not exist

CONFIG_FILE variable =

您必须使用“boot system”命令设置此引导语句。 下次重新加载时，交换机会以 16.12.01 版本启动，而不是 16.11.01。

Switch#configure terminal

Enter configuration commands, one per line.  End with CNTL/Z.

Switch(config)#no boot system

Switch(config)#boot system bootflash:cat9k_iosxe.16.12.01.SPA.bin <---

Switch(config)#end

Switch#wr

Switch#

Switch#show run | include boot system

boot system bootflash:cat9k_iosxe.16.12.01.SPA.bin

Switch#

Switch#show boot

BOOT variable = bootflash:cat9k_iosxe.16.12.01.SPA.bin; <---

Configuration Register is 0x102

MANUAL_BOOT variable = no

BAUD variable = 9600

ENABLE_BREAK variable does not exist

BOOTMODE variable does not exist

IPXE_TIMEOUT variable does not exist

CONFIG_FILE variable =

安装模式

安装模式是较新的且推荐使用的运行模式。这种模式会将 .bin 文件拆分为较小的 .pkg 文件，这些文件必须彼此独立地加载到内存中，从而使系统更快启动并能更好地利用内存。您从 software.cisco.com 下载的 .bin文件 包含所需的所有 .pkg 文件。

注意：将.bin文件视为.zip文件。 可以从 .bin 文件中提取出 .pkg 文件。同时还有一个配置文件，用于指示需要什么 .pkg 文件。这是在安装模式下启动时使用的流程。

1. 系统查看引导语句以确定要加载的配置文件（通常是 packets.conf） 。

2. 此时系统会打开配置文件，并基于该文件整理出要加载的 .pkg 文件.

3. 加载 .pkg 文件，Cisco IOS 完成启动过程。

- .conf 文件只是一个用作指针的文本文件，您可以从 CLI 打开并查看它。

- 此配置文件已设置为加载 16.11.01 版本。现在，您无需更改引导语句即可升级设备，只需将 packages.conf 文件更改为指向新的 .pkg 文件。

注意：这会自动完成，您不必直接编辑此文件。但是，您可以在重新加载之前检查 .conf 文件所指向的软件包文件，确保它指向正确的文件。

Switch#more packages.conf

#! /usr/binos/bin/packages_conf.sh

<...snip...>

# This is for CAT9k

boot  rp 0 0   rp_boot         cat9k-rpboot.16.11.01.SPA.pkg

iso   rp 0 0   rp_base         cat9k-rpbase.16.11.01.SPA.pkg

iso   rp 0 0   rp_daemons      cat9k-rpbase.16.11.01.SPA.pkg

iso   rp 0 0   rp_iosd         cat9k-rpbase.16.11.01.SPA.pkg

iso   rp 0 0   rp_security     cat9k-rpbase.16.11.01.SPA.pkg

iso   rp 0 0   rp_wlc          cat9k-wlc.16.11.01.SPA.pkg

iso   rp 0 0   rp_webui        cat9k-webui.16.11.01.SPA.pkg

iso   rp 0 0   srdriver        cat9k-srdriver.16.11.01.SPA.pkg

iso   rp 0 0   guestshell      cat9k-guestshell.16.11.01.SPA.pkg

boot  rp 1 0   rp_boot         cat9k-rpboot.16.11.01.SPA.pkg

iso   rp 1 0   rp_base         cat9k-rpbase.16.11.01.SPA.pkg

iso   rp 1 0   rp_daemons      cat9k-rpbase.16.11.01.SPA.pkg

iso   rp 1 0   rp_iosd         cat9k-rpbase.16.11.01.SPA.pkg

iso   rp 1 0   rp_security     cat9k-rpbase.16.11.01.SPA.pkg

iso   rp 1 0   rp_wlc          cat9k-wlc.16.11.01.SPA.pkg

iso   rp 1 0   rp_webui        cat9k-webui.16.11.01.SPA.pkg

iso   rp 1 0   srdriver        cat9k-srdriver.16.11.01.SPA.pkg

iso   rp 1 0   guestshell      cat9k-guestshell.16.11.01.SPA.pkg

<...snip...>

#

# -start- superpackage .pkginfo

#

# pkginfo: Name: rp_super

# pkginfo: BuildTime: 2019-03-28_09.46

# pkginfo: ReleaseDate: Thu-28-Mar-19-01:19

# pkginfo: .BuildArch: x86_64

# pkginfo: BootArchitecture: i686

# pkginfo: .BootArch: i686

# pkginfo: RouteProcessor: cat9k

# pkginfo: Platform: CAT9K

# pkginfo: User: mcpre

# pkginfo: PackageName: universalk9

# pkginfo: Build: 16.11.01

# pkginfo: .SupportedBoards: cat9k

# pkginfo: .InstallModel:

# pkginfo: .PackageRole: rp_super

# pkginfo: .RestartRole: rp_super

# pkginfo: .UnifiedPlatformList: passport,nyquist,starfleet

# pkginfo: CardTypes:

# pkginfo: .CardTypes:

# pkginfo: .BuildPath: /scratch/mcpre/release/BLD-V16_11_01_FC3/binos/linkfarm/stage-cat9k/hard/rp_super_universalk9.x86_64

# pkginfo: .Version: 16.11.1.0.312.1553791584..Gibraltar

# pkginfo: .InstallVersion: 1.0.0

# pkginfo: .InstallCapCommitSupport: yes

#

# -end- superpackage .pkginfo

#

在安装模式下执行升级的流程始终相同。但是，每个平台的命令可能有所不同：

1. 将新的 .bin 文件复制到交换机.

2. 从 .bin 文件中提取出 .pkg 文件.

3. 更新 .conf 文件，并以此新版本重新加载设备.

4. 停止回滚计时器以确认升级已完成.

在大多数情况下，您可以使用单个命令执行步骤 2-4。这样我们也可以回滚到以前的版本。

升级方法

自动升级

如果您的主用管理引擎在安装模式下运行，则最佳选择是自动升级。这样，无论将什么映像加载到备用管理引擎上（包括捆绑包、安装等），主用管理引擎都可以升级备用管理引擎。但是，您必须以某个有效映像引导备用管理引擎，才能启动相应进程。

注意：自动升级无法从rommon恢复sup。

启用此命令，以便交换机在检测到不匹配时自动升级备用管理引擎

software auto-upgrade enable

或手动运行升级

install autoupgrade

注意：只要主用机箱处于安装模式，就可以在 Stackwise 虚拟设置中进行自动升级。

安装模式

下一部分介绍"install"命令的使用。所有 9000 系列都支持这些命令。但它们是 9600、9400 和 9200 的唯一选项。

流程概述

如前所述，升级流程分为 4 部分。但是，步骤 2 到 4 的命令较难理解，所以我们在这里解释一下每个命令的作用：

安装模式命令

限制

在安装模式下，您的引导语句必须始终为 packets.conf。如果在升级过程中尝试将引导语句更改为另外一个 .conf 文件，可能会导致升级失败。如果您已经运行了ADD命令，则需要激活您添加的程序包或清理它以重新开始。请勿更改引导语句以指向非活动软件包。

摘要

如果要进行安装，您需要先将引导语句更改为指向 packets.conf（如果尚未更改），然后添加 .bin 文件。这意味着您必须将新的 .bin 文件从 TFTP 或 USB 复制到 bootflash（引导闪存）。如果由于空间不足，您在将文件复制到交换机时遇到问题，请参阅此文档的清理部分，清除不需要的文件。

这些命令会完成升级，您无需执行任何其他步骤。但是，如果您不想在一个步骤中完成升级，可以将其细分为多个单独的步骤。

configure terminal

no boot system

boot system bootflash:packages.conf

end

write

install add file bootflash:

activate commit

Install Add（安装添加）

- 首次开始升级时，您只有当前版本.

Switch#show install summary

[ R0 R1 ] Installed Package(s) Information:

State (St): I - Inactive, U - Activated & Uncommitted,

C - Activated & Committed, D - Deactivated & Uncommitted

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

Type  St   Filename/Version

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

IMG   C    16.11.1.0.312

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

Auto abort timer: inactive

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

为了开始升级，您必须将新版本添加到要使用的版本列表中.

install add file bootflash:cat9k_iosxe.16.12.01.SPA.bin

添加后，您可以在闪存中看到 .pkg 文件，它会将 16.12.01 列为非活动版本.

Switch#dir | include .pkg

359097 -rw- 11359240 Sep 13 2019 16:10:08 +00:00 cat9k-cc_srdriver.16.11.01.SPA.pkg

359098 -rw- 84354052 Sep 13 2019 16:10:08 +00:00 cat9k-espbase.16.11.01.SPA.pkg

359099 -rw- 1676292 Sep 13 2019 16:10:08 +00:00 cat9k-guestshell.16.11.01.SPA.pkg

359100 -rw- 466576384 Sep 13 2019 16:10:08 +00:00 cat9k-rpbase.16.11.01.SPA.pkg

359106 -rw- 38552418 Sep 13 2019 16:10:30 +00:00 cat9k-rpboot.16.11.01.SPA.pkg

359101 -rw- 29877252 Sep 13 2019 16:10:08 +00:00 cat9k-sipbase.16.11.01.SPA.pkg

359102 -rw- 57259008 Sep 13 2019 16:10:08 +00:00 cat9k-sipspa.16.11.01.SPA.pkg

359103 -rw- 19936260 Sep 13 2019 16:10:08 +00:00 cat9k-srdriver.16.11.01.SPA.pkg

359104 -rw- 12321792 Sep 13 2019 16:10:08 +00:00 cat9k-webui.16.11.01.SPA.pkg

359105 -rw- 9216 Sep 13 2019 16:10:08 +00:00 cat9k-wlc.16.11.01.SPA.pkg

456963 -rw- 14222344 Sep 13 2019 17:05:35 +00:00 cat9k-cc_srdriver.16.12.01.SPA.pkg

456964 -rw- 88892420 Sep 13 2019 17:05:35 +00:00 cat9k-espbase.16.12.01.SPA.pkg

473282 -rw- 1684484 Sep 13 2019 17:05:35 +00:00 cat9k-guestshell.16.12.01.SPA.pkg

473283 -rw- 535475200 Sep 13 2019 17:05:35 +00:00 cat9k-rpbase.16.12.01.SPA.pkg

473289 -rw- 43111714 Sep 13 2019 17:06:00 +00:00 cat9k-rpboot.16.12.01.SPA.pkg

473284 -rw- 31425540 Sep 13 2019 17:05:35 +00:00 cat9k-sipbase.16.12.01.SPA.pkg

473285 -rw- 60183552 Sep 13 2019 17:05:35 +00:00 cat9k-sipspa.16.12.01.SPA.pkg

473286 -rw- 22676484 Sep 13 2019 17:05:35 +00:00 cat9k-srdriver.16.12.01.SPA.pkg

473287 -rw- 12854272 Sep 13 2019 17:05:35 +00:00 cat9k-webui.16.12.01.SPA.pkg

473288 -rw- 9216 Sep 13 2019 17:05:35 +00:00 cat9k-wlc.16.12.01.SPA.pkg

Switch#show install summary

[ R0 R1 ] Installed Package(s) Information:

State (St): I - Inactive, U - Activated & Uncommitted,

C - Activated & Committed, D - Deactivated & Uncommitted

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

Type  St   Filename/Version

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

IMG   I    16.12.1.0.544 <-- Installed but still Inactive (I)

IMG   C    16.11.1.0.312

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

Auto abort timer: inactive

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

Switch#show install inactive

[ R0 R1 ] Inactive Package(s) Information:

State (St): I - Inactive, U - Activated & Uncommitted,

C - Activated & Committed, D - Deactivated & Uncommitted

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

Type  St   Filename/Version

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

IMG   I    16.12.1.0.544  <-- Installed but still Inactive (I)

Install Activate（安装激活）

- 重新加载后，您可以看到新版本处于活动状态，但未提交.

下一步是激活新版本。

- 这意味着重新加载管理引擎并加载新版本。

- 这将编辑 .conf 文件，以指向新的 .pkg 文件.

install activate

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

This operation may require a reload of the system. Do you want to proceed? [y/n]

Switch#show install sum

[ R0 R1 ] Installed Package(s) Information:

State (St): I - Inactive, U - Activated & Uncommitted,

C - Activated & Committed, D - Deactivated & Uncommitted

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

Type  St   Filename/Version

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

IMG   U    16.12.1.0.544

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

Auto abort timer: active on install_activate, time before rollback - 01:52:08   <--- when this hits zero, the device reloads back to original version.

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

Switch#show install uncommitted

[ R0 R1 ] Uncommitted Package(s) Information:

State (St): I - Inactive, U - Activated & Uncommitted,

C - Activated & Committed, D - Deactivated & Uncommitted

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

Type  St   Filename/Version

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

IMG   U    16.12.1.0.544

Install Commit（安装提交）

要停止回滚计时器并完成升级过程，您需要提交新版本.

install commit

这是升级过程的最后一步，新版本现在显示为活动的已提交版本.

Switch#show install summary

[ R0 R1 ] Installed Package(s) Information:

State (St): I - Inactive, U - Activated & Uncommitted,

C - Activated & Committed, D - Deactivated & Uncommitted

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

Type  St   Filename/Version

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

IMG   C    16.12.1.0.544  <--- Now Active and Committed

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

Auto abort timer: inactive

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

Install Abort（安装中止）

如果您在运行activate命令后在提交之前确定新版本存在问题，您可以中止升级。这会导致设备再次重新加载之前的版本。

install abort

Prompt Level（提示级别）

可以在安装命令的末尾将提示级别设置为 none，它不会询问您是否存在任何问题（通常，在升级的提交命令运行结束时，系统会询问您是否要重新加载）。如果您将prompt-level设置为none，交换机一旦做好准备就会重新加载。

install add file bootflash:cat9k_iosxe.16.12.01.SPA.bin activate commit prompt-level none

Auto Upgrade Timer（自动升级计时器）

如果升级花费的时间过长，交换机会认为出现了问题并中止升级。默认自动升级计时器为 120 分钟，但如果需要，您可以手动停止计时器。

install auto-abort-timer stop

您可以在执行激活步骤时设置回滚计时器.

Switch#install activate auto-abort-timer ?

<30-1200>  Number of minutes the abort-timer is set for

捆绑包模式

本节介绍使用指向 .bin 文件（相当于 .pkg 文件）的引导语句进行软件升级的典型方法。

警告：如果要将交换机升级到捆绑模式，请确保已将 .bin 文件复制到堆栈中的每台交换机！

加载 Cisco IOS 文件后，您只需更改引导语句并重新加载。

configure terminal

no boot system

boot system bootflash:

end

write

reload

传统方法

注意：此方法仅适用于9300和9500交换机

本部分讨论 request platform 命令的使用，适用于 9500 和 9300。

- 不建议将此方法用于 9300 或 9500。请使用上述方法之一.

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

- 此处列出了三个最重要的命令(还有其他许多选项，但首选使用install commands 代替这些选项)。

扩大采购

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

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（清理）

以下命令执行的操作与 install remove inactive 命令相同：

request platform software package clean

Stackwise虚拟

双管理引擎

Stackwise 虚拟与双管理引擎设置非常相似。如果进行正常升级，两个机箱应同时重启.

configure terminal

no boot system

boot sys bootflash:packages.conf

end

write

install add file bootflash:

activate commit

注意：要执行ISSU，在单个机箱上的stackwise虚拟与双管理引擎设置中还必须考虑一个因素。

- 由于每个机箱在 ISSU 过程中会重新加载一次，因此，仅连接到一个机箱的任何设备都会在整个重启周期内关闭。

- 建议对所有连接使用双宿主 MEC 方式，以避免这种情况。有关 ISSU 的详细信息，请参阅 ISSU 部分.

回滚安装模式

完成升级后，如果需要，您可以回滚到以前的版本。实际上，如果文件仍在闪存中，您可以回滚到以前的多个版本.

Switch#show install rollback

ID      Label          Description

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

2    No Label        No Description

1    No Label        No Description

Switch#show install rollback id 1

Rollback id - 1 (Created on Fri Sep 13 13:14:40 2019)

Label: No Label

Description: No Description

Reload required: NO

State (St): I - Inactive, U - Activated & Uncommitted,

C - Activated & Committed, D - Deactivated & Uncommitted

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

Type  St   Filename/Version

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

IMG   C    16.11.1.0.312

上一个命令的输出显示有两个回滚点。第一个回滚点指向 16.11.01 版本（如果要添加说明或日期，请标记回滚点）。

Switch#install label 1 ?

description  Add a description to specified install point

label-name   Add a label name to specified install point

Switch#install label 1 label-name 16_11_01

install_add_label: START Fri Sep 13 16:43:48 UTC 2019

--- Starting install_add_label ---

Performing install_add_label on Active/Standby

[R0] install_add_label package(s) on R0

[R0] Finished install_add_label on R0

[R1] install_add_label package(s) on R1

[R1] Finished install_add_label on R1

Checking status of install_add_label on [R0 R1]

install_add_label: Passed on [R0 R1]

Finished install_add_label

SUCCESS: install_add_label  Fri Sep 13 16:43:57 UTC 2019

Switch#show install rollback

ID      Label          Description

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

2    No Label        No Description

1    16_11_01        No Description

如果您现在想执行回滚，您只需运行rollback命令：

install rollback to id 1

四管理引擎

在撰写本文档期间，此功能不受支持。已计划在 17.2.1 版本上提供支持.

ISSU

之前的升级方法讲述的是升级单个管理引擎或同时升级两个管理引擎。但是，使用双管理引擎，您可以执行 ISSU（服务中软件升级），每次升级一个管理引擎，这样几乎不会出现中断.

注意：有关 9300 xFSU 的详细信息，请参阅此文档了解 Catalyst 9300 系列交换机上的扩展快速软件升级

小心：运行此处列举的命令后，进程将启动并自动重新加载管理引擎。在您准备好让管理引擎开始重新启动之前，请不要运行该命令。与正常升级过程不同，它不会在重新加载之前要求您确认。

install add file bootflash:cat9k_iosxe.16.11.01.SPA.bin activate issu commit

- 运行此命令后，ISSU 进程将提取文件，重新加载备用管理引擎，等待其返回到 SSO，然后进行故障切换并重新加载主用管理引擎。

- ISSU 仅在安装模式下支持。如果捆绑包中包含主用管理引擎，则无法执行 ISSU 进程。

- 9200 和 9300 不支持 ISSU。 9300 支持 reloadfast。

升级选项

ReloadFast

- ReloadFast 是一项功能，目标是在数据平面离线之前尽可能多地完成升级，以最大限度地减少停机时间。如果您使用 Reloadfast，堆栈中的所有交换机会同时重新加载。但是，它们通常比正常安装更快地重新启动。

- 您甚至可以在一台交换机上执行 Reloadfast。

- 16.8.1 或更高版本支持此功能。此功能仅在安装模式下支持。

- 为了防止在快速重新加载期间出现任何环路，仅在具有到 STP 根的单条上行链路的交换机上支持此功能。端口通道计为单条上行链路。

- 如果升级需要微代码或 FPGA 升级，则也不支持此功能。

- 默认情况下，C9300 始终尝试进行 reloadfast 快速升级，除非因上述原因之一而无法升级。但是，您可以使用此命令明确要求它执行此操作：

install add file flash:cat9k_iosxe.16.10.01.SPA.bin activate reloadfast commit

清理

升级完成后，您可以选择删除所有非活动文件，以清理所有不需要的文件。此命令查看当前加载的 .pkg 文件并删除其他所有文件。您可以在删除之前查看此功能要删除的所有文件。

install remove inactive

注意：这会删除所有 .bin 文件，因此，如果要在升级之前进行清理，请确保在复制新的 .bin 文件之前执行此操作。

故障排除

V-Mismatch（V 不匹配）

如果发生了 V-mismatch ，这意味着交换机上运行的软件与主用软件不同。如果您处于安装模式，则可以通过自动升级解决此问题。如果您处于捆绑包模式，这会有些棘手。

Switch#show switch

Switch/Stack Mac Address : f8b7.e206.4900 - Local Mac Address

Mac persistency wait time: Indefinite

H/W   Current

Switch#   Role    Mac Address     Priority Version  State

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

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

*2       Active   f8b7.e206.4900     14     V01     Ready

第 1 项

- 从堆栈中删除不匹配的交换机并将其升级到正确的版本，然后将其重新添加回堆栈。

第 2 项

- 您不能更改不匹配交换机上的引导语句。但是，如果您有权访问控制台以及交换机 ROMMON，则可以手动将交换机引导到正确的版本。

小心：在尝试此操作之前，请确保您对交换机具有控制台访问权限，以确保您能够恢复交换机。

选项2的步骤

1. 堆叠交换机，使其启动到V-Mismatch状态。

2. 从此交换机中删除不需要的旧映像（闪存：文件系统即使不匹配也可以访问）。

3. 复制您需要闪存的新的 .bin 文件.

4. 重新启动此交换机（由于映像已删除，这会导致交换机进入 ROMMON 模式），因此无法重新启动。

5. （从控制台）手动启动复制到闪存的新映像。

6. 一旦以正确的映像启动，交换机的配置将从主用设备同步.

Switch#dir ?

/all             List all files

/recursive       List files recursively

all-filesystems  List files on all filesystems

cns:             Directory or file name

crashinfo-1:     Directory or file name

crashinfo-2:     Directory or file name

crashinfo:       Directory or file name

flash-1:         Directory or file name   <----Flash for switch #1

flash-2:         Directory or file name   <----Flash for switch #2

flash:           Directory or file name

进入 ROMMON 模式后，使用以下命令：

switch:  boot flash:cat9k_iosxe.16.12.01.SPA.bin <-- Image you copied that Active is running

第 3 项

- 前两个选项通常能够恢复不匹配的交换机，而无需中断堆栈。

- 但是，如果这是新部署，或者您可以重新加载整个堆栈，则可以选择将文件从不匹配的交换机复制到其余交换机，从而使其余交换机与新交换机匹配，而不是相反。

- 如果是新部署且您没有物理访问权限，此选项可能非常有用，因为您可以通过 Telnet 完成所有操作。

- 一旦它们同步，您就可以将它们全部升级到正确的版本。

从 ROMMON 恢复

如果您陷入 ROMMON 而没有有效映像，您可以选择通过 USB 或 TFTP 将文件复制到交换机.

第 1 项

使用以下命令，从USB接口直接启动：

boot usbflash0:cat9k_iosxe.16.12.01.SPA.bin

第 2 项

从TFTP服务器进行复制比较棘手。您需要将笔记本电脑设置为 TFTP 服务器并将以太网电缆连接到设备的管理端口，或者需要将设备的管理端口连接到运行中设备的网络端口。然后，您可以将带有目标映像的设备配置为 TFTP 服务器:

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

Cisco IOS 设备作为 TFTP 服务器是首选，因此您不必担心 Windows 防火墙或计算机账户权限问题。设置 TFTP 服务器后，您需要在 ROMMON 中完成以下配置:

DEFAULT_GATEWAY=172.27.74.1

IP_ADDRESS=172.27.74.111

IP_SUBNET_MASK=255.255.255.0

TFTP_SERVER=172.19.64.31

通过对 TFTP 服务器执行 Ping 操作来测试配置:

ping 172.19.64.31

建立连接后，立即采用 TFTP 上的文件完成启动：

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

注意：有关 ROMMON 恢复的详细信息，请访问以下链接：recover_from_corrupt_or_missing_file_image_or_in_rommon_mode。

成员中缺少Bin文件

验证在堆栈中的所有成员设备上是否都看到.bin文件。

步骤 1：

使用show file systems检查堆栈上使用的命名约定：

Switch#show file systems

File Systems:

Size(b)       Free(b)      Type  Flags  Prefixes

-             -    opaque     rw   system:

-             -    opaque     rw   tmpsys:

*  11250098176    6275858432      disk     rw   bootflash: flash:         <- Name of Active Switch

11250171904    4123000832      disk     rw   bootflash-2:              <- Name of Standby Switch

1651314688    1344073728      disk     rw   crashinfo:

1651507200    1180696576      disk     rw   crashinfo-2:

236092686336  224026628096      disk     rw   disk0:

8166649856    8053047296      disk     ro   webui:

-             -    opaque     rw   null:

-             -    opaque     ro   tar:

-             -   network     rw   tftp:

33554432      33494025     nvram     rw   nvram:

-             -   network     rw   rcp:

-             -   network     rw   http:

-             -   network     rw   ftp:

-             -   network     rw   scp:

-             -   network     rw   sftp:

-             -   network     rw   https:

-             -    opaque     ro   cns:

33554432      33507337     nvram     rw   stby-nvram:

-             -     nvram     rw   stby-rcsf:

11250098176    4122718208      disk     rw   stby-bootflash:

1651314688    1180504064      disk     rw   stby-crashinfo:

-             -    opaque     rw   revrcsf:

注意：如果遇到文件空间不足的错误，show file systems会指示大小和可用空间。

步骤 2：

逐个检查每个目录中的.bin文件：

Switch#dir bootflash: | i .bin

81126   -rw-       1265422219  Jun 19 2023 03:04:30 +00:00  cat9k_iosxe.17.11.01.SPA.bin              <- The Active has 17.11.01.SPA.bin

194733  -rw-       1027574083  Jun 13 2023 01:33:41 +00:00  cat9k_iosxe.17.06.05.SPA.bin

Switch#dir bootflash-2: | i .bin

210971  -rw-       1027574083  Jun 29 2023 22:19:23 +00:00  cat9k_iosxe.17.06.05.SPA.bin              <- The Standby does not have 17.11.01.SPA.bin

注意：处于安装模式的设备预计在提交安装添加命令之前，只能激活.bin文件。如果发现问题，请继续执行步骤3。

步骤 3：

如果需要手动干预，有2个选项可以将.bin文件从主用模式复制到成员/备用模式。

第 1 项

将.bin文件复制到Member/Standby：

Switch#copy bootflash:cat9k_iosxe.17.11.01.SPA.bin bootflash-2:

第 2 项

将.bin复制到USB（如果无法直接复制）

Switch#copy bootflash:cat9k_iosxe.17.11.01.SPA.bin usbflash0:

注意：必须针对FAT32格式化USB，并使用show file systems验证交换机是否读取了该格式。

将其复制到USB后，将其插入备用/成员：

Switch#copy usbflash0:cat9k_iosxe.17.11.01.SPA.bin bootflash-2:

步骤 4：

验证.bin文件是否在所有设备上：

Switch#dir flash: | i .bin

81126   -rw-       1265422219  Jun 19 2023 03:04:30 +00:00  cat9k_iosxe.17.11.01.SPA.bin           <- The Active has 17.11.01.SPA.bin

194733  -rw-       1027574083  Jun 13 2023 01:33:41 +00:00  cat9k_iosxe.17.06.05.SPA.bin

Switch#dir bootflash-2: | i .bin

210971  -rw-       1027574083  Jun 29 2023 22:19:23 +00:00  cat9k_iosxe.17.06.05.SPA.bin

210974  -rw-       1265422219  Jun 20 2023 03:32:23 +00:00  cat9k_iosxe.17.11.01.SPA.bin           <- The Standby now has 17.11.01.SPA.bin

已安装了超级软件包

如果在尝试运行完全安装添加文件flash：name activate commit时收到错误输出，说明Super package已添加，则这意味着该软件包已填充为非活动状态，并正在等待激活和提交。

Switch#install add file flash:cat9k_iosxe.17.11.01.SPA.bin activate commit

install_add_activate_commit: START Wed Jul 26 12:36:58 UTC 2023

*Jul 26 12:36:58.491: %INSTALL-5-INSTALL_START_INFO: R0/0: install_engine: Started install one-shot bootflash:cat9k_iosxe.17.11.01.SPA.bininstall_add_activate_commit: Adding PACKAGE

install_add_activate_commit: Checking whether new add is allowed ....

FAILED: install_add_activate_commit : Super package already added. Add operation not allowed. 'install remove inactive' can be used to discard added packages

可以通过发出show install summary命令验证此状态

Switch#show install summary

[ R0 ] Installed Package(s) Information:

State (St): I - Inactive, U - Activated & Uncommitted,

C - Activated & Committed, D - Deactivated & Uncommitted

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

Type  St   Filename/Version

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

IMG   C    17.06.05.0.5797

IMG   I    17.11.01.0.1324                                                          <- Here it is seen as Inactive

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

Auto abort timer: inactive

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

有2个选项可用于解决此问题

第 1 项

执行install remove inactive命令以清除已添加的程序包

Switch#install remove inactive

install_remove: START Wed Jul 26 13:42:14 UTC 2023

Cleaning up unnecessary package files

No path specified, will use booted path bootflash:packages.conf

Cleaning bootflash:

Scanning boot directory for packages ... done.

Preparing packages list to delete ...

cat9k-cc_srdriver.16.09.03.SPA.pkg

File is in use, will not delete.

cat9k-espbase.16.09.03.SPA.pkg

File is in use, will not delete.

<...snip...>

The following files will be deleted:

[R0]:

/bootflash/cat9k-cc_srdriver.17.06.05.SPA.pkg

/bootflash/cat9k-cc_srdriver.17.11.01.SPA.pkg

/bootflash/cat9k-espbase.17.06.05.SPA.pkg

/bootflash/cat9k-espbase.17.11.01.SPA.pkg

<...snip...>

Do you want to remove the above files? [y/n]y

[R0]:

Deleting file bootflash:cat9k-cc_srdriver.17.06.05.SPA.pkg ... done.

Deleting file bootflash:cat9k-cc_srdriver.17.11.01.SPA.pkg ... done.

Deleting file bootflash:cat9k-espbase.17.06.05.SPA.pkg ... done.

Deleting file bootflash:cat9k-espbase.17.11.01.SPA.pkg ... done.

<...snip...>

SUCCESS: Files deleted.

--- Starting Post_Remove_Cleanup ---

Performing Post_Remove_Cleanup on Active/Standby

[R0] Post_Remove_Cleanup package(s) on R0

[R0] Finished Post_Remove_Cleanup on R0

Checking status of Post_Remove_Cleanup on [R0]

Post_Remove_Cleanup: Passed on [R0]

Finished Post_Remove_Cleanup

第 2 项

如果install remove inactive无法解决问题，请清除安装状态

注意：这需要重新加载设备

Switch(config)#service internal                                        <- Service internal is required to be turned on for clear install state to work

Switch(config)#exit

Switch#clear install state

clear_install_state: START Wed Jul 26 12:25:09 UTC 2023

This command will remove all the provisioned SMUs, and rollback points. Use this command with caution.

A reload is required for this process. Press y to continue [y/n]y

--- Starting clear_install_state ---

Performing clear_install_state on Active/Standby

[1] clear_install_state package(s) on R0

[1] Finished clear_install_state on R0

Checking status of clear_install_state on [R0]

clear_install_state: Passed on [R0]

Finished clear_install_state

Send model notification for  before reload

Install will reload the system now!

验证选项1和2是否均可以通过show install summary命令进行验证，以确保非活动映像不再出现。

Switch#show install summary

[ R0 ] Installed Package(s) Information:

State (St): I - Inactive, U - Activated & Uncommitted,

C - Activated & Committed, D - Deactivated & Uncommitted

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

Type  St   Filename/Version

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

IMG   C    17.06.05.0.5797                                                           <- 17.11.01 is no longer seen

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

Auto abort timer: inactive

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

继续运行完整的install add file flash：name activate commit，没有问题

不正确的引导变量

本节介绍执行升级和设置错误引导变量时发现的问题。

场景 1

- 引导变量设置为bootflash：packages.conf

- 由于某种原因，交换机在安装add file flash：name activate commit发生之前重新加载

- 这会破坏其packages.conf文件，或者该文件为空并且交换机找不到引导参数

Switch#show boot

BOOT variable = bootflash:packages.conf;

MANUAL_BOOT variable = no

当交换机重新启动/重新加载时，出现了一个错误

Preparing to autoboot. [Press Ctrl-C to interrupt]  0

boot: attempting to boot from [bootflash:packages.conf]

ERROR: failed to boot from bootflash:packages.conf (Not Found)

Please wait while the system restarts.

Initializing Hardware......

- 按CTRL-C或按交换机/Supervisor上的Mode按钮以进入ROMMON

- 发出set命令

- 验证BOOT=

switch:set

BAUD=9600

BOOT=bootflash:packages.conf;

BOOTLDR=packages.conf

BSI=0

<snip>

有2个选项可引导至所需的IOS

注意：如果需要，您也可以引导至先前的ios bin文件

第 1 项

使用新IOS版本设置新启动语句

switch:BOOT=cat9k_iosxe.17.09.03.SPA.bin

验证BOOT语句是否已更新

switch:set

BAUD=9600

BOOT=bootflash:cat9k_iosxe.17.09.03.SPA.bin                                        <-Boot statement successfully updated

BOOTLDR=packages.conf

BSI=0

<snip>

第 2 项

立即启动，而不更改变量，直到交换机加载到ios中

switch:boot bootflash:cat9k_iosxe.17.09.03.SPA.bin

注意：如果不确定闪存中存在哪个.bin文件，请发出dir flash：命令获取文件列表

场景 2

运行install add file flash：name activate commit命令，但引导变量设置为.bin文件而不是packages.conf

Switch#show boot

Current Boot Variables:

BOOT variable = flash:cat9k_iosxe_npe.17.03.03.SPA.bin;

Boot Variables on next reload:

BOOT variable = flash:cat9k_iosxe_npe.17.03.03.SPA.bin;

Manual Boot = no

Enable Break = yes

Boot Mode = DEVICE

iPXE Timeout = 0

Switch#install add file flash:cat9k_iosxe.17.09.03.SPA.bin activate commit

install_add_activate_commit: START Tue Sep 12 15:01:12 UTC 2023

install_add_activate_commit: Adding PACKAGE

install_add_activate_commit: Checking whether new add is allowed ....

This operation requires a reload of the system. Do you want to proceed?

Please confirm you have changed boot config to flash:packages.conf [y/n]y

--- Starting initial file syncing ---

Info: Finished copying flash:cat9k_iosxe.17.09.03.SPA.bin to the selected switch(es)

Finished initial file syncing

<snip>

当重新加载时，可以看到交换机加载到17.3.3.SPA.bin而不是包含17.9.3的packages.conf中的输出。

Initializing Hardware......

System Bootstrap, Version 17.9.2r, RELEASE SOFTWARE (P)

Compiled Wed 11/23/2022 12:30:48.96 by rel

Current ROMMON image : Primary

Last reset cause     : CpuReset

C9500-12Q platform with 16777216 Kbytes of main memory

Preparing to autoboot. [Press Ctrl-C to interrupt]  0

boot: attempting to boot from [flash:cat9k_iosxe_npe.17.03.03.SPA.bin]

boot: reading file cat9k_iosxe_npe.17.03.03.SPA.bin

引导交换机后，验证packages.conf是否已正确更新为17.9.3。

Switch#more flash:packages.conf

boot   rp 0 0   rp_boot cat9k-rpboot.17.09.03.SPA.pkg

boot   rp 1 0   rp_boot cat9k-rpboot.17.09.03.SPA.pkg

iso   rp 0 0   rp_base cat9k-rpbase.17.09.03.SPA.pkg

iso   rp 1 0   rp_base cat9k-rpbase.17.09.03.SPA.pkg                                                       <-All .pkg set to 17.9.3 correctly

iso   rp 0 0   rp_daemons cat9k-rpbase.17.09.03.SPA.pkg

iso   rp 1 0   rp_daemons cat9k-rpbase.17.09.03.SPA.pkg

iso   rp 0 0   rp_iosd cat9k-rpbase.17.09.03.SPA.pkg

iso   rp 1 0   rp_iosd cat9k-rpbase.17.09.03.SPA.pkg

iso   rp 0 0   rp_security cat9k-rpbase.17.09.03.SPA.pkg

iso   rp 1 0   rp_security cat9k-rpbase.17.09.03.SPA.pkg

iso   rp 0 0   rp_wlc cat9k-wlc.17.09.03.SPA.pkg

iso   rp 1 0   rp_wlc cat9k-wlc.17.09.03.SPA.pkg

iso   rp 0 0   rp_webui cat9k-webui.17.09.03.SPA.pkg

iso   rp 1 0   rp_webui cat9k-webui.17.09.03.SPA.pkg

<snip>

更改引导变量为flash：packages.conf

Switch(config)#no boot system

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

Switch(config)#do wr                                                                  <- Configuration must be saved for boot variable to be updated properly before reloading

Switch#show boot

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

重新加载交换机，使其处于安装模式，并位于正确的ios映像17.9.3上

Switch#reload

Initializing Hardware......

System Bootstrap, Version 17.9.2r, RELEASE SOFTWARE (P)

Compiled Wed 11/23/2022 12:30:48.96 by rel

Current ROMMON image : Primary

Last reset cause     : CpuReset

C9500-12Q platform with 16777216 Kbytes of main memory

Preparing to autoboot. [Press Ctrl-C to interrupt]  0

boot: attempting to boot from [flash:packages.conf]                                           <-Boot variable correctly loading from packages.conf instead of .bin file

boot: reading file packages.conf

<snip>

在交换机加载后验证版本

Switch#show version

Cisco IOS XE Software, Version 17.09.03

Cisco IOS Software [Cupertino], Catalyst L3 Switch Software (CAT9K_IOSXE), Version 17.9.3, RELEASE SOFTWARE (fc6)

相关信息

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

思科漏洞 ID

思科漏洞 ID CSCvr29736 - 文档漏洞：9600 无法执行 reloadfast

思科漏洞 ID CSCvr29864 - 增强功能：在 9300 将 reloadfast 添加到 install 命令

思科漏洞 ID CSCvr29886 - 增强功能：能够在 V-mismatch 状态下更改交换机的引导语句

思科漏洞 ID CSCvr30159 - 增强功能：在运行 install add 命令时添加手动引导检查

思科漏洞 ID CSCvr30189 - 增强功能：添加选项以撤消“install add”，而无需删除 .bin 文件