对于网络工程师来说,不小心把IOS删掉或者升级IOS失败,重起后进ROMMON(ROMMON状态是ROM MONITOR的缩写)状态,是比较常见的事。路由器进入ROMMON状态,不能进行正常的路由转发功能和软件配置,在这种模式下,原IOS中的大部分命令都无法使用。
那么如何去恢复IOS呢?有2种常用的方法:1.使用TFTP server恢复IOS;2.使用Xmodem恢复IOS。不同的路由器可能命令有些不一样,但思路是差不多的,这里以2600,2800,3600系列路由器为例来讲解这两种方法:
那么如何去恢复IOS呢?有2种常用的方法:1.使用TFTP server恢复IOS;2.使用Xmodem恢复IOS。不同的路由器可能命令有些不一样,但思路是差不多的,这里以2600,2800,3600系列路由器为例来讲解这两种方法:
在进行恢复之前,可以先看一下路由器的Flash里文件,用命令:dir flash:;注意命令中flash后面跟冒号(:),执行命令后会显示flash现存的IOS大小和文件名,如下面:
rommon 1 > dir flash:
File size Checksum File name
2179331 bytes (0x214103) 0x7b95 c1600-nsy-mz_112-15a_p
rommon 1 > dir flash:
File size Checksum File name
2179331 bytes (0x214103) 0x7b95 c1600-nsy-mz_112-15a_p
如果File name和File size的两项都是符合你的要求的,正确无误,那么你就不必要进行升级。这样也许是你的config-register的设置有问题,正常的一般config-register应该是0x2102(0x2100是从rommon 0x2101是从mini IOS 0x2102是标准IOS)的。注意0x2102中的最后一位值2, 最后一位值在2到F都是正常的。注意config-register的值控制着路由器的启动!如果最后一位数值不是在这个范围内,可以使用confreg命令来改变它的值,就不需要进行下面2种方法的升级了。
A.使用TFTP server恢复IOS
1.首先下载安装TFTP server在你的PC机上,在PC机上启动TFTP Server软件,并把新的IOS文件放在TFTP server所在目录下,如:你的TFTP Server软件在PC上装的是Cisco TFTP Server目录,那么就把新的IOS文件放在Cisco TFTP Server目录下就可以了。然后使用交叉网线连接路由器的以太口,再用控制线将调试的PC机与路由器的console口连接;
2.先要配置一下ROMMON状态下的环境变量,打开PC上的超级终端,连上路由器,此时窗口出现命令行提示符为: ROMMON 1 > (其中"1"代表命令行的行数),输入命令如下------注意所有的命令参数是大小写敏感的,一定要严格匹配
ROMMON 1 >IP_ADDRESS= 路由器的IP地址(要和TFTP软件所在的机器在同一网段内)
1.首先下载安装TFTP server在你的PC机上,在PC机上启动TFTP Server软件,并把新的IOS文件放在TFTP server所在目录下,如:你的TFTP Server软件在PC上装的是Cisco TFTP Server目录,那么就把新的IOS文件放在Cisco TFTP Server目录下就可以了。然后使用交叉网线连接路由器的以太口,再用控制线将调试的PC机与路由器的console口连接;
2.先要配置一下ROMMON状态下的环境变量,打开PC上的超级终端,连上路由器,此时窗口出现命令行提示符为: ROMMON 1 > (其中"1"代表命令行的行数),输入命令如下------注意所有的命令参数是大小写敏感的,一定要严格匹配
ROMMON 1 >IP_ADDRESS= 路由器的IP地址(要和TFTP软件所在的机器在同一网段内)
ROMMON 2 >IP_SUBNET_MASK= 路由器的子网掩码
ROMMON 3 >DEFAUT_GATEWAY= 默认网关地址 (可以没有,也可以是TFTP服务器)
ROMMON 4 >TFTP_SERVER= TFTP server 的IP地址
ROMMON 5 >TFTP_FILE= IOS文件名(只给出文件名,不需要路径)
ROMMON 6 >tftpdnld 回车
设置完后要用sync命令保存环境变量到NVRAM,用set命令进行察看设置。
设置完后要用sync命令保存环境变量到NVRAM,用set命令进行察看设置。
在tftpdnld命令执行后,只要根据提示选择,就可完成文件的传输。当文件传输完后,将自动回到命令行下,输入reset重启ROUTER,重启后就又回到了熟悉的IOS模式下 甚至连以前配置的信息都不会丢失。
举个例子:
rommon 16 > IP_ADDRESS=172.16.0.1
rommon 16 > IP_ADDRESS=172.16.0.1
rommon 17 > IP_SUBNET_MASK=255.255.255.0
rommon 18 > DEFAULT_GATEWAY=172.16.0.2
rommon 19 > TFTP_SERVER=172.16.0.2
rommon 20 > TFTP_FILE=c2600-is-mz.113-2.0.3.Q
rommon 21 > tftpdnld
IP_ADDRESS: 172.16.0.1
IP_SUBNET_MASK: 255.255.255.0
DEFAULT_GATEWAY: 172.16.0.2
TFTP_SERVER: 172.16.0.2
TFTP_FILE: c2600-is-mz.113-2.0.3.Q
Invoke this command for disaster recovery only.
WARNING: all existing data in all partitions on flash will be lost!
Do you wish to continue? y/n: [n]: y
Receiving c2600-is-mz.113-2.0.3.Q from 172.16.0.2 !!!!!.!!!!!!!!!!!!!!!!!!!.!!
File reception completed.
Copying file c2600-is-mz.113-2.0.3.Q to flash.
Erasing flash at 0x607c0000
program flash location 0x60440000
rommon 22 >
B.使用Xmodem恢复IOS
使用Xmodem和TFTP的主要区别就在于传输的途径不一样,TFTP的IOS传输必须经过以太网线,而Xmodem则是通过控制线来传输的,所以使用Xmodem恢复IOS就不必进行PC机和路由器的网线连接,也不需要IP地址方面的设置,省了不少事。但是Xmodem是通过控制线(console)来进行传输的,一般和cisco路由器相连的控制线波特率是9600,就是9.6k/s,速度很慢传输一个几M大小的文件需要比较长的时间,需要耐心的等待。幸好,还可以在路由器上更改波特率,最大是115200,即115.2K/S,所以先进行默认波特率的修改,可以用confreg命令来修改,如下:
rommon 2 > confreg
rommon 2 > confreg
Configuration Summary
enabled are:
load rom after netboot fails
console baud: 9600
boot: p_w_picpath specified by the boot system commands
or default to: cisco2-C3600
do you wish to change the configuration? y/n [n]: y
enable "diagnostic mode"? y/n [n]: !--- pressing "Enter" accepts the
!--- default (value between the brackets)
enable "use net in IP bcast address"? y/n [n]:
disable "load rom after netboot fails"? y/n [n]:
enable "use all zero broadcast"? y/n [n]:
enable "break/abort has effect"? y/n [n]:
enable "ignore system config info"? y/n [n]:
change console baud rate? y/n [n]: y
enter rate: 0 = 9600, 1 = 4800, 2 = 1200, 3 = 2400
4 = 19200, 5 = 38400, 6 = 57600, 7 = 115200 [7]: 7
change the boot characteristics? y/n [n]:
Configuration Summary
enabled are:
load rom after netboot fails
console baud: 115200
boot: p_w_picpath specified by the boot system commands
or default to: cisco2-C3600
do you wish to change the configuration? y/n [n]:
You must reset or power cycle for new config to take effect
改完了,你需要重起一下,让配置生效,注意,你的调试机器上的超级终端的连接波特率也要改为115200,不然你重起后你可能看见的就是一堆乱码#^¥&%×^×^。
改完了,你需要重起一下,让配置生效,注意,你的调试机器上的超级终端的连接波特率也要改为115200,不然你重起后你可能看见的就是一堆乱码#^¥&%×^×^。
接下就是用xmodem命令来做了,举个例子:
1. 来执行xmodem命令:rommon 1 > xmodem c1600-nsy-mz_112-15a_P
c1600-nsy-mz_112-15a_P是我们打算在路由器中保存的文件名,你可以起自己想要的名字,不过最好是按原文件的名字来。
2.等待ROMmon 提示信息,类似下面:
Ready to receive file c1600-nsy-mz_112-15a_P ...
3.ok,可以进行文件传输了,在超级终端界面,点击鼠标右键,选择发送文件,弹出的对话框,上面选择你要传送到路由器内的新的IOS,下面选择Xmodem协议。然后点击发送,就可以了。
4.接下来就是文件传输的界面了,耐心些等待吧......:)
5.当显示:Download Complete!信息时,就基本上好了,不过做为列行的检查还是必要的,用命令:dir flash: 看看文件是不是已经正确无误的传过去了。
rommon 1 > dir flash:
File size Checksum File name
2179331 bytes (0x214103) 0x7b95 c1600-nsy-mz_112-15a_p
File size Checksum File name
2179331 bytes (0x214103) 0x7b95 c1600-nsy-mz_112-15a_p
6.使用rommon 1 > reset或者rommon 1 > boot flash:c1600-nsy-mz_112-15a_P
重起路由器,如果已经进入正常的界面了,那就恭喜你了,IOS恢复就成功了,你可以检查一些看看:show version;show flash等。但是别忘了,刚才你把默认的控制线波特率9600改为115200了,现在要做就是改回来,命令:config t;config-register 0x2102;end;reload重启路由