How many times have I received a router that has no operating system on it? Way to many!! You turn on the router and it comes up in ROM Monitor mode (ROMMON).
There is a way to get the operating system on the router from ROMMON. Below, I have documented the procedure.
Preparation
Before starting the procedure of IOS upgrade or installation, you need to know the IP address of a TFTP server that has the IOS binary file. Certainly this can be your PC or laptop. If you chose your laptop, you will need to install TFTP server software on a PC connected to the router Ethernet interface. There are many free downloadable TFTP servers’ software on the Internet.
Afterwards, you make sure to direct the TFTP server to the folder containing the new IOS image that you have.
If you are using this procedure to upgrade the IOS file and your router works fine, it is preferred to backup the old IOS file before starting the upgrade procedure.
Procedure
1. Create a console connection with the default settings (9600 baud, 8 databits, 0 parity bits, 1 stop bit, no flow control).
2. If your flash or IOS file are corrupted and your router goes directly to router boot mode (Router(boot)#), go to step 4. If your router has some problems and boots into the ROMmon mode directly(rommon 1> or >), go to step 3. If your router boots normally, interrupt the router boot sequence by pressing Ctrl-Break once the router is powered on. This will take you to ROMmon mode with the prompt:
rommon 1>
Or
>
3. Change the value of the configuration register to 0x2101 to instruct the router to boot into router boot mode. Afterwards, reload the router.
If you have the ‘rommon 1>’ prompt use the commands:
rommon 1> confreg 0x2101
rommon 2> reset
While if you have the ‘>’ prompt, use:
> o/r 0x2101
> i
4. Now you are in the router boot mode with the prompt (Router(boot)#), you will need to give a valid IP address and default-gateway address to the router so it can communicate with the TFTP server.
Router(boot)>enable
Router(boot)#configure terminal
Router(boot)(config)#interface ethernet 0
Router(boot)(config-if)#ip address ZZZ.ZZZ.ZZZ.ZZZ 255.255.255.0
Router(boot)(config-if)#no shutdown
Router(boot) (config-if)#exit
Router(boot)(config)#ip default-gateway YYY.YYY.YYY.YYY
5. Check the connectivity between the router and the TFTP server with the ‘ping’ command.
6. Start the copying of the new IOS file from the TFTP server to the flash.
Router(boot)#copy tftp flash
Now you will be asked for the IP address of the TFTP server
Address or name of remote host [255.255.255.255]? XXX.XXX.XXX.XXX
Then, the source file name,
Source file name? cXXXX-X-X.XXX-XXX.bin
Please note that the file name is case sensitive and make sure that the TFTP server’s working directory is the one containing the new IOS file.
Afterwards, you will be asked for a destination file name,
Destination file name [cXXXX-X-X.XXX-XXX.bin]?
It is advised that you keep the file name unchanged for future reference.
Accessing file ‘cXXXX-X-X.XXX-XXX.bin’ on XXX.XXX.XXX.XXX…
Loading cXXXX-X-X.XXX-XXX.bin from XXX.XXX.XXX.XXX (via Ethernet0):
! [OK] Device needs erasure before copying new file
Erase flash device before writing? [confirm]y
Copy ‘cXXXX-X-X.XXX-XXX.bin’ from server as ‘cXXXX-X-X.XXX-XXX.bin’ into Flash
WITH erase? [yes/no]yes
Erasing device…
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee …erased
Loading cXXXX-X-X.XXX-XXX.bin from XXX.XXX.XXX.XXX (via Ethernet0): !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!
[OK – xxxxxx/yyyyyyy bytes]Verifying checksum… OK (0x6526)
Flash device copy took 00:yy:yy [hh:mm:ss]
Router(boot)#
7. Change back the configuration register value to 0x2102.
Router(boot)#configure terminal
Router(boot)(config)#config-register 0x2102
Router(boot)(config)#exit
Router(boot)#
8. Reload the router
Router(boot)#reload
System configuration has been modified. Save? [yes/no]: no
Building configuration…
[OK]
Proceed with reload? [confirm]
9. Everything should look fine now, and you should be getting the regular (Router>) prompt. To check the version and file name of the new IOS, use the ‘show version’ command.
We hope this helps you understand how to update Cisco IOS from an TFTP server.