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
問題:
韌體升級失敗。
韌體升級是使用預設韌體下載程序啟動。
在韌體下載期間,新程式碼會上傳至次要磁碟分割,但當發生自動 hareboot 時,為了交換磁碟分割,交換器會改為使用舊韌體版本開機。
範例:
韌體顯示 輸出:
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 命令,則會傳回無法啟動韌體認可錯誤,因為下載的韌體未啟用。 而命令 firmwaredownloadstatus 顯示 Firmwarecommit 失敗。(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
修正:若要復原,請將開機設定修改回預設值。
方法 #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