Connectrix:BシリーズDS-6620Bスイッチがファームウェアのアップグレード中に、起動設定が間違っているために新しいファームウェアが起動しない
Summary: 「Connectrix B-Series: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 コマンドを実行すると、「ダウンロードしたファームウェアがアクティブ化されていないため、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/sda$prt)ではなく(root=/dev/sda1)
例:
bootargs=root=/dev/sda1 rootfstype=ext4 quiet console=ttyS0,9600
通常、アップグレード プロセス中、ファームウェアは最初にセカンダリー パーティションにダウンロードされますが、プライマリー パーティションのファームウェアは再起動後まで変更されません
プライマリー パーティションとセカンダリー パーティションがスワップされ、スイッチは通常、新しいファームウェアでパーティションから起動します。
ただし、bootargsパラメーターは以前に(root=/dev/sda$prt)ではなく特定のパーティション(root=/dev/sda1)で起動するように変更されていたため、スイッチは古いファームウェアを使用してパーティションから起動し続けました。
その結果、アップグレード後の起動時に、アクティブなファームウェア バージョンは、期待されるv8.1.2fではなく、v8.1.0aのままでした。
ブートローダー構成のbootargs値が正しくない原因は、値が誤って設定されたパスワード回復手順が原因でした。
上記のコマンドを実行すると、bootargsパラメーターの結果が/dev/sda$prtではなく/dev/sda1と表示されることに注意してください
シリアル ポートから取得した例:
=> 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
Fix: リカバリーするには、bootargs設定をデフォルトに戻します。
方法#1:
-rootとしてスイッチにログインし、 bootenv コマンドを使用します。
bootenv bootargs 'root=/dev/sda$prt rootfstype=ext4 console=ttyS0,9600 quiet'
hareboot
方法#2:
-シリアルコンソール経由で接続し、 ブートローダー コマンドシェルを入力します。
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