Ciscoルータ ROMモニターモードからの復旧手順

ROMモニタモードとは

ROMモニタモードは格納されているIOSの読み込まないで起動するモードです。
IOSの読み込みに失敗したときや、作業ミス等でIOSが消えてしまった場合などにROMモニタモードで立ち上がってきます。

ROMモニタモードは通常のIOSのプロンプトではなく次のようなプロンプトが表示されます。

rommon 1 \>

まずルータにIOSが格納されているかどうかを調べてみます。
コマンドは「dev」コマンドを使用します。

コマンド実行結果

rommon 1 > dev
Devices in device table:
        id  name
    flash:  flash

上記例ですと、「flash:」と表示されていますのでフラッシュメモリが存在しているようです。
そこでフラッシュメモリ内にIOSが格納されていないか調べてみましょう。コマンドは「dir」コマンドを使用します。

コマンド実行結果

rommon 3 > dir flash:
         File size           Checksum   File name
  16019804 bytes (0xf4715c)   0x74fa    c2600-is-mz.123-17a.bin

IOSが存在しています。
そこで「boot」コマンドを使用して、このIOSで起動を試みてみましょう。

コマンド実行結果

rommon 4 > boot flash:c2600-is-mz.123-17a.bin
program load complete, entry point: 0x80008000, size: 0xf47040
Self decompressing the image : ############################################
######################################################################
######################################################################
######################################################################
######## [OK]

格納されているIOSイメージが正常であれば、IOSが立ち上がってきます。

もし再度ROMモニタモードで立ち上がってしまう場合は、そのIOSイメージは壊れている可能性があります。
その場合は新たにIOSイメージを準備し、ルータにダウンロードさせてやらなければいけません。

ROMモニタモードでIOSをダウンロードする

格納しているIOSが壊れてしまった場合には、ROMモニタモードからIOSをダウンロードしなければいけません。

その場合の方法として、TFTPを使ったダウンロードがあります。
まず、TFTPサーバとIOSイメージを準備します。
TFTPサーバを準備したら、次はルータとの接続方法です。

接続構成は次のようになります。

TFTPサーバとコンソールPCを1台で行う場合は次のような構成になります。

前提条件として、ルータとTFTPサーバ間でIP到達性がなければなりません。
TFTPサーバの準備と接続ができたら、ルータに環境変数を設定します。

必要な情報は次のとおりです。

  • ルータのIPアドレス
  • ルータのサブネットマスク
  • デフォルトゲートウェイ
  • TFTPサーバのIPアドレス
  • TFTPサーバに格納されているIOSイメージのファイル名

以上の情報を次のように環境変数に書き込みます。

コマンド実行結果

rommon 1 >IP_ADDRESS=10.1.1.100
rommon 2 >IP_SUBNET_MASK=255.255.255.0
rommon 3 >DEFAULT_GATEWAY=10.1.1.200
rommon 4 >TFTP_SERVER=10.1.1.200
rommon 5 >TFTP_FILE=c2600-ik9o3s3-mz.123-17a.bin

コマンドは大文字小文字を区別しますので、間違えないように記述していきます。
環境変数を記述し終わったら、「tftpdnld」コマンドでIOSイメージをダウンロードします。

コマンド実行結果

rommon 14 > tftpdnld

          IP_ADDRESS: 10.1.1.100
      IP_SUBNET_MASK: 255.255.255.0
     DEFAULT_GATEWAY: 10.1.1.200
         TFTP_SERVER: 10.1.1.200
           TFTP_FILE: c2600-ik9o3s3-mz.123-17a.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
#yを入力してリターンキーを押すとダウンロードが始まります。
.
Receiving c2600-ik9o3s3-mz.123-17a.bin from 10.1.1.200 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
File reception completed.
Copying file c2600-ik9o3s3-mz.123-17a.bin to flash.
Erasing flash at 0x60fc0000
program flash location 0x60f40000
rommon 15 >

ダウンロードが終了するまでに数十分かかりますので、気長に待ちましょう。
ダウンロードが終了したらおもむろにルータを再起動します。

コマンドは「i」コマンドを使用します。

コマンド実行結果

rommon 15 > i

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 65536 Kbytes of main memory

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

これで正常にIOSが立ち上がってくるはずです。
立ち上がってきたら、「show version」でバージョンを確認することを忘れずに。

最後に、ここで説明した方法は、Cisco2600ルータで行う手順を書いております。
他の機種であっても基本的な手順は変わりませんが、若干メッセージの表示や
手順が変わってきますのでご注意下さい。

ネットワークの接続環境もなかったら…

ルータがROMモニタモードで立ち上がってしまった。
手元にはTFTPサーバもなければ、ましてやネットワークの接続環境もない!!あるのはPCとコンソールケーブル1本のみ。こんな状況の場合、さきほど説明したTFTPを使ったIOSダウンロードはできません。

このような絶望的な状況でも、PCとコンソールケーブル、そしてIOSイメージさえあれば回復することができる方法があります。
いざというときの最後の手段として覚えておくと、一生に一度くらいは使うことがあるかも知れません。

この方法はコンソール接続経由でIOSをダウンロードしてくる方法です。

コンソールポートの速度は通常9600bpsと非常に低速です。
そのためIOSをダウンロードにめちゃくちゃ時間が掛かります。

ヘタするとダウンロードに数時間を要するなんてことも…
そこでまずはダウンロードの時間を短縮するために、コンソールの速度を9600bpsから115200bpsに変更します。

confreg」コマンドを使用して速度を変更します。

コマンド実行結果

rommon 1 >confreg
  Configuration Summary
  enabled are:
  break/abort has effect
  console baud: 9600
  boot: the ROM Monitor
  do you wish to change the configuration? y/n [n]: y
#コンフィグを変更しますか?と聞いてくるので「y」を入力してリターン

  enable "diagnostic mode"? y/n [n]:
#そのままリターン

  enable "use net in IP bcast address"? y/n [n]:
#そのままリターン

  enable "load rom after netboot fails"? y/n [n]:
#そのままリターン

enable "use all zero broadcast"? y/n [n]:
#そのままリターン

  disable "break/abort has effect"? y/n [n]:
#そのままリターン

  enable "ignore system config info"? y/n [n]:
#そのままリターン

  change console baud rate? y/n [n]: y
#「y」を入力してリターン

  enter rate: 0 = 9600, 1 = 4800, 2 = 1200, 3 = 2400
  4 = 19200, 5 = 38400, 6 = 57600, 7 = 115200 [0]: 7
#速度を115200bpsに変更するので、「7」を入力してリターン

  change the boot characteristics? y/n [n]:
#そのままリターン

  Configuration Summary
  enabled are:
  break/abort has effect
  console baud: 115200
  boot: the ROM Monitor
  do you wish to change the configuration? y/n [n]:
#そのままリターン

  You must reset or power cycle for new config to take effect.
  rommon 2 >
#「reset」コマンドを投入するか、電源を落としてルータを再起動させます

ルータが立ち上がってくるとターミナルに文字化けした文字が表示されてくるはずです。
これはターミナルとルータでデータレートが違うために起こる現象です。

さきほどルータ側の速度を115200bpsにしましたので、ターミナルソフト側も速度を変更する必要があります。
TeraTermの場合はメニューバーから、【Setup】-【Serial port】を選択して、Baud rateのタブを115200に変更します。

これで事前準備は完了です。
それでは新しいIOSをルータへコピーしていきましょう。
コマンドは「xmodem」コマンドを使用します。

コマンド実行結果

rommon 2 > xmodem -c c2600-ik9o3s3-mz.123-17a.bin

  Do not start the sending program yet...
         File size           Checksum  File name
  9939820 bytes (0x97ab6c)   0x4991    c2600-ik9o3s3-mz.123-17a.bin

All existing data in bootflash will be lost!
  Invoke this application only for disaster recovery. Do you wish to continue?
  y/n [n]: y
#「y」を入力してリターン

Ready to receive file c2600-ik9o3s3-mz.123-17a.bin ...

「y」を入力すると、ファイルの転送待ちになりますので、ターミナルからxmodemプロトコルを使ってIOSイメージを転送します。TeraTermの場合はメニューバーから、【File】-【Transfer】-【XMODEM】-【Send】を選択し、転送するIOSイメージを選べば転送が始まります。

コマンド実行結果

Erasing flash at 0x60fc0000
program flash location 0x60f40000
Download Complete!
rommon 3 >

ダウンロードが終了したら、「reset」コマンドでルータを再起動させます。

コマンド実行結果

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 65536 Kbytes of main memory

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

再起動後にコンソールのポート速度を9600bpsに戻します。

コマンド実行結果

Router#conf terminal
Enter configuration commands, one per line.  End with CNTL/Z.

Router(config)#line con 0
Router(config-line)#speed 9600
Router(config-if)#end
Router#

ルータの再起動を実施し、正常にIOSが立ち上がってくれば終了です。

ここで説明した方法は、Cisco2600ルータで行う手順を書いております。
他の機種であっても基本的な手順は変わりませんが、若干メッセージの表示や手順が変わってきますのでご注意下さいませ。

関連記事

メールマガジン

ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!

「初心者にも理解できるネットワーク技術」

これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。

もちろん無料です!!

↓メールマガジン購読はこちら↓

メールアドレス: