对于许多初学者来说,cisco路由器的ROM Monitor常常令人感到陌生甚至望而生畏的,原因很简单,一是我们并不常常用到该模式,对其相关操作不熟悉;二是在ROM Monitor模式下的操作失误,往往会对路由器造成致命的伤害(比如破坏flash中的IOS文件,导致系统崩溃。),以致于很多人对它束手束脚,望而却步。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

其实,ROM Monitor并不复杂,它只是cisco路由器的一个低级操作系统,通常用于测试和排错,我们只需花费很少的时间,就可以轻松搞定。下面笔者就以网管员在实际工作中最常遇到的两种需要使用ROM Monitor的情况为例,做一说明,希望能够抛砖引玉,以飨读者!

情景一:路由器的口令恢复

为了防止别人知道路由器的口令(特别是特权口令),威胁本地网络安全,故,许多管理员将口令设得特别复杂。但由于路由器的配置完成后,我们就很少在去操作路由器,这样过了一段时间后,我们再因为某种需要需对路由器进行配置时,就可能因忘记口令而无法进行。

这时候,我们只需要一台PC机(OS为windows系列),console电缆一条及相应的接口转换器,还有就是我们在路由器的旁边。然后按照下面的操作,就可以轻松搞定。

1.  设置PC机的超级终端,使我们能够使用路由器的console口直接对路由器进行操作。注:因其过程非常简单,笔者为节省篇幅,将其省略。

2.  启动路由器,并在前60秒内按下break或ctrl+break键,进入路由器的ROM Monitor模式。

3.  下面以初学者最常接触到的cisco 2600系列路由器为例,做一简要描述。

System Bootstrap, Version 11.3(2)XA4, RELEASE SOFTWARE (fc1)

Copyright (c) 1999 by cisco Systems, Inc.

TAC:Home:SW:IOS:Specials for info

C2600 platform with 32768 Kbytes of main memory   (该路由器为2600系列路由器)

(按下ctrl+break键,进入ROM Monitor模式)

rommon 1 > ?         注:我们可以使用?或help命令查看该模式下可以使用的命令。

alias               set and display aliases command

boot                boot up an external process

break               set/show/clear the breakpoint

confreg             configuration register utility

cont                continue executing a downloaded p_w_picpath

……(省略多行)

reset               system reset

set                 display the monitor variables

stack               produce a stack trace

sync                write monitor environment to NVRAM

sysret              print out info from last system return

tftpdnld            tftp p_w_picpath download

unalias             unset an alias

unset               unset a monitor variable

xmodem              x/ymodem p_w_picpath download           

rommon 2 > confreg 0x2142    注:使用该命令修改路由器的配置寄存器的值,使路由器在下次重起时不要加载启动配置,从而跳过用户口令及特权口令的验证,进入特权模式。

You must reset or power cycle for new config to take effect

rommon 3 > reset      注:使用该命令重新启动路由器

System Bootstrap, Version 11.3(2)XA4, RELEASE SOFTWARE (fc1)

Copyright (c) 1999 by cisco Systems, Inc.

TAC:Home:SW:IOS:Specials for info

C2600 platform with 32768 Kbytes of main memory

program load complete, entry point: 0x80008000, size: 0x487758

Self decompressing the p_w_picpath : #################################################

################################################################################ (以下启动过程省略)

--- System Configuration Dialog ---

Would you like to enter the initial configuration dialog? [yes/no]: n    注:选择no直接进入CLI模式

Press RETURN to get started!     (按回车键)

Router>en

Router#      注:此时使用show version命令查看配置寄存器的值为0x2142.

Router#copy star run     注:使用该命令加载启动配置,然后设置新口令。若没有该步操作,会导致在下次重起后,新口令设置失败。

Router#conf t

Router(config)#config-register 0x2102     注:路由器下次重起后将加载启动配置,需使用新口令进行验证

Router(config)#end

Router#copy run star     注:保存运行配置到启动配置

Destination filename [startup-config]?

Building configuration...

[OK]

提示:

cisco2500、2000、3000、4000和7000系列路由器的口令恢复与上述操作基本相同,其主要差别为修改配置寄存器的命令为“o/r 0x2142”,以及重起命令为“i”,其它系列的路由器与2600系列基本一致。

情景二:路由器flash中IOS文件的升级或损坏后的恢复       

相比较而言,第二种情况更为少见,但也更为严重,它常常发生在对路由器IOS版本升级操作失误或其它软硬件故障原因导致路由器系统崩溃无法进行工作,致使整个网络的瘫痪。

此时,我们常常需要在路由器的ROM Monitor模式下将其修复。  

下面就以笔者的一个学生遇到的问题为例,做一探讨。该生在对一台cisco 2600路由器的IOS进行升级时,出现如下故障:

   System Bootstrap, Version 11.3(2)XA4, RELEASE SOFTWARE (fc1)

Copyright (c) 1999 by cisco Systems, Inc.

TAC:Home:SW:IOS:Specials for info

C2600 platform with 32768 Kbytes of main memory

loadprog: bad file magic number:      0x0

boot: cannot load "flash:"

(路由器引导程序在重复上述过程,失败后,进入ROM Monitor模式)

System Bootstrap, Version 11.3(2)XA4, RELEASE SOFTWARE (fc1)

Copyright (c) 1999 by cisco Systems, Inc.

TAC:Home:SW:IOS:Specials for info

C2600 platform with 32768 Kbytes of main memory

rommon 1 > boot    注:使用该命令,使路由器重新加载flash中的IOS文件,失败。

boot: cannot determine first file name on device "flash:"

注: 在确定故障是由路由器不能确定flash中的IOS文件后,我们需要将IOS文件从TFTP Server中恢复到路由器的flash中。此时我们可是通过两种方法完成此任务:其一,使用安装了cisco TFTP Server的PC机通过以太网对路由器IOS进行恢复,其二,在ROM Monitor模式下使用 xmodem (一种能使用console电缆传输文件的传输协议)命令对路由器IOS进行恢复。

在这里,我们优先使用第一种方法,其步骤为:

1.  将安装了cisco TFTP Server的PC机通过以太网与路由器的以太网接口相连,运行cisco TFTP Server 程序。

2.  使用超级终端登陆路由器console口控制台(路由器已启动,查询故障时已登陆),终端屏幕显示如下:

rommon 2 > set      注:该命令显示路由器相关默认设置

PS1=rommon ! >

IP_ADDRESS=192.168.1.1

IP_SUBNET_MASK=255.255.255.0

DEFAULT_GATEWAY=192.168.1.2

TFTP_SERVER=192.168.1.2

TFTP_TIMEOUT=20000

TFTP_RETRY_COUNT=10

TFTP_FILE=/c2600-ik8o3s-mz.122-11.T/

?=1

3.  检查路由器的默认设置,将PC机的IP地址改为192.168.1.2(我们同样可以使用命令 TFTP_SERVER= 192.168.1.x修改该设置,但要保证路由器的IP、默认网关与PC机的IP在统一网段),这样更简单。

4.  指定要恢复的IOS文件名,并保证该文件在cisco TFTP Server根目录下。          rommon 3 > TFTP_FILE=/c2600-i-mz.121-3.T.bin     注:不要忘记加上扩展文件名.bin

5.  开始恢复IOS文件:

rommon 4 > tftpdnld     注:执行该命令从TFTF Server下载IOS文件到flash,该命令仅适用于cisco 2600系列路由器。

           IP_ADDRESS: 192.168.1.1

      IP_SUBNET_MASK: 255.255.255.0

     DEFAULT_GATEWAY: 192.168.1.2

         TFTP_SERVER: 192.168.1.2

           TFTP_FILE: /c2600-i-mz.121-3.T.bin

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-i-mz.121-3.T.bin from 192.168.1.2 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! (确认后,路由器开始下载IOS文件,省略多行。)

File reception completed.

Copying file /c2600-i-mz.121-3.T.bin to flash.

Erasing flash at 0x60fc0000

program flash location 0x60160000

6.  重新启动路由器,运行新的IOS

rommon 5 > reset

System Bootstrap, Version 11.3(2)XA4, RELEASE SOFTWARE (fc1)

Copyright (c) 1999 by cisco Systems, Inc.

TAC:Home:SW:IOS:Specials for info

C2600 platform with 32768 Kbytes of main memory

program load complete, entry point: 0x80008000, size: 0x487758

Self decompressing the p_w_picpath : #################################################

############################################## (下面为正常的启动过程,故省略)

提示:

Cisco ROM Monitor模式下还有其他很多不同功能的命令,我们可以使用它们对路由器进行一系列的测试与排错,有关该模式的详细说明请访问cisco 站点: [url]www.cisco.com[/url] ,进行相关搜索,搜索关键字:Using the ROM Monitor。