背景及故障現象
一臺新購入的二手Cisco 3750X-48P,原機自帶IOS軟件版本為12.x,可以正常工作。
但將IOS版本升級到15.2之后,在啟動過程中卡住。
第一次加載IOS軟件時是正常的,提示:
Loading "flash:/c3750e-universalk9-mz.152-4.E10.bin"...@@@@@@@@@@@@@@@@@@@
但加載完畢后系統并未啟動,而是進行第二次加載,且速度比第一次慢很多。
第二次加載IOS軟件完畢后,提示如下:
File "flash:/c3750e-universalk9-mz.152-4.E10.bin" uncompressed and installed, entry point: 0x3000
executing...
Boot process failed...
至此,啟動失敗,交換機自動接入bootloader模式(顯示“switch:”提示符)。
問題原因分析
在Cisco Community上搜到了一則討論,其中有人表示這可能是bootloader版本的問題。
3750X Bootloader - Cisco CommunityI have a 3750X running: Cisco IOS Software, C3750E Software (C3750E-UNIVERSALK9-M), Version 15.2(2)E, RELEASE SOFTWARE (fc3) Technical Support: http://www.cisco.com/techsupport Copyright (c) 1986-2014 by Cisco Systems, Inc. Compiled Thu 26-Jun-14https://community.cisco.com/t5/switching/3750x-bootloader/td-p/2502792查看了一下故障交換機的bootloader版本,發現其版本為12.2(58r)SE,而其他正常的同型號交換機則為12.2(58r)SE1(結尾多個1)。于是決定按老外說的辦法,先升級一下bootloader。
從正常交換機備份bootloader
找到一臺正常的3750X交換機,將其斷電。按住前面板MODE按鈕,再插上電源線,直到機器背面的console口亮燈且有輸出時松手,交換機將直接進入bootloader模式(提示符為switch:)。
將一個小容量U盤(實測FAT32格式,8GB可用)插入交換機背板USB接口。然后執行flash_init命令,讓交換機對本地的存儲介質進行初始化(識別)操作。
存儲介質初始化后,可用dir usbflash0:命令檢查是否正確識別U盤。
之后執行 copy bs: usbflash0:btld.bin 命令,將bs(boot sector)整個復制到U盤的btld.bin文件中。
注意:【bs:】是指boot sector文件系統,有一個冒號,下同。
恢復bootloader到故障交換機
之后將U盤插入故障交換機(故障交換機已經在bootloader模式下),然后執行 flash_init 命令。
同樣,初始化后可以使用 dir usbflash0: 命令檢查U盤是否正確識別。
執行 set_bs bs: rw 命令,將bs設置為可讀寫(默認是只讀)。
執行 copy usbflash0:btld.bin bs: 命令,將U盤中備份的文件恢復到bs中。
執行 set_param 命令,設置系統參數(Set system parameters in flash)。
執行 set_bs bs: ro 命令,設置bs為只讀。
執行 reset 命令,重啟交換機。
操作結果
重啟后,bootloader的版本已經成功更新,且IOS 15.2可以正確加載并運行。