Connectrix:由于启动设置错误,B 系列 DS-6620B 交换机在固件升级期间无法启动至新固件
Summary: Connectrix B 系列:由于启动参数设置错误,DS-6620B 交换机在固件升级期间无法启动至新固件。
Symptoms
从 Fabric OS 8.1.0a 升级到 Fabric OS 8.1.2f。
冲击:
交换机无法升级到新固件。
环境:
EMC 硬件:Connectrix DS-6620B
Brocade 软件:Fabric OS 8.1.0a
Brocade 软件:Fabric OS 8.1.2f
问题:
固件升级失败。
固件升级使用默认的固件下载过程启动。
在固件下载期间,新代码将上传到辅助分区,但是当发生自动重新启动时,为了交换分区,交换机将使用旧固件版本启动。
示例:
Firmwareshow 输出:
DS6620B:root> firmwareshow
Appl Primary/Secondary Versions
------------------------------------------
FOS v8.1.0a
v8.1.2f
WARNING: Firmwaredownload is in progress.
DS6620B:FID1:root>
命令 firmwaredownloadstatus指示固件已下载到交换机的辅助分区,但没有进一步下载。
例:
DS6620B:FID1:root> firmwaredownloadstatus
[1]: Fri Nov 30 18:18:26 2018
Firmware is being downloaded to the switch. This step may take up to 30 minutes.
[2]: Fri Nov 30 18:30:25 2018
Firmware has been downloaded to the secondary partition of the switch.
DS6620B:FID1:root>
如果在此状态下运行 命令 firmwarecommit ,则返回错误 Cannot start firmwarecommit because the downloaded firmware not activated(由于下载的固件未激活而无法启动 firmwarecommit)。 并且命令 firmwaredownloadstatus 显示 Firmwarecommit failed。(0x1a)。
例:
DS6620B:FID1:root> firmwarecommit
Cannot start firmwarecommit because the downloaded firmware is not activated.
DS6620B:FID1:root>
DS6620B:FID1:root> firmwaredownloadstatus
[1]: Fri Nov 30 18:18:26 2018
Firmware is being downloaded to the switch. This step may take up to 30 minutes.
[2]: Fri Nov 30 18:30:25 2018
Firmware has been downloaded to the secondary partition of the switch.
[3]: Fri Nov 30 19:44:40 2018
The firmware commit operation has started. This may take up to 10 minutes.
[4]: Fri Nov 30 19:44:40 2018
Firmware commit failed - Firmwarecommit failed. (0x1a)
DS6620B:FID1:root>
Cause
在此交换机上,固件下载后升级未引导至新的固件版本,发现引导加载程序参数 (bootargs) 已被修改,可引导至特定分区。
(root=/dev/sda1) 而不是 (root=/dev/sda$prt)
示例:
bootargs=root=/dev/sda1 rootfstype=ext4 quiet console=ttyS0,9600
通常在升级过程中,固件最初下载到辅助分区,而主分区固件在重新启动之前保持不变。
主分区和辅助分区会交换,交换机通常会启动至具有新固件的分区。
但是,由于之前修改了 bootargs 参数以引导至特定分区 (root=/dev/sda1) 而不是 (root=/dev/sda$prt),因此交换机继续引导至具有旧固件的分区。
因此,升级后,在启动时,活动固件版本仍为 v8.1.0a,而不是预期的 v8.1.2f。
导致引导加载程序配置中的 bootargs 值不正确的原因是密码恢复过程无意中设置了该值。
请注意,在运行上述命令后,bootargs 参数的结果显示 /dev/sda1 而不是 /dev/sda$prt 。
示例取自串行端口:
=> setenv bootargs "root=/dev/sda$prt rootfstype=ext4 console=ttyS0,9600 quiet"
=> saveenv
Saving Environment to NVRAM...
=>
=> printenv
bootargs=root=/dev/sda1 rootfstype=ext4 console=ttyS0,9600 quiet
=>
Resolution
修复:要恢复,请将 bootargs 设置修改回默认值。
方法#1:
- 以 root 用户身份登录以切换并使用 bootenv 命令。
bootenv bootargs 'root=/dev/sda$prt rootfstype=ext4 console=ttyS0,9600 quiet'
hareboot
方法#2:
-通过串行控制台连接并进入 bootloader 命令shell。
setenv bootargs 'root=/dev/sda$prt rootfstype=ext4 console=ttyS0,9600 quiet'
saveenv
boot
遵循方法 #1 或 #2 后,交换机应使用新固件启动并完成固件下载过程。
Additional Information
bootargs=root=/dev/sda$prt rootfstype=ext4 console=ttyS0,9600 quiet