On CRS ROMMON is the piece of code which is validating and loading the mbi file or from where you can perform a Turboboot installation.
When the system or a module boots, ROMMON validates the mbi image version with the active RP. If the local mbi has the same version as on the active RP, it proceeds to boot the local mbi. Else it downloads the mbi via tftp from the active RP.
Rommon resides on SPI flash on each module with CPU. CRS modules with a CPU like MSC-B, FP-40, RPs, PRPs etc. maintain two copies of the ROMMON version, called ROMMON A and ROMMON B. ROMMON versioning is defined as MAJOR_VERSION.MINOR_VERSION.
When a module boots ROMMON A always runs first, and then it checks the compatibility with ROMMON B. If that passes, ROMMON A will handover the execution to ROMMON B. ROMMON B is now used from that point on to boot IOS-XR. Any module on CRS can have different versions of ROMMONA and B. But note, if the major version numbers are different ROMMON A and ROMMON B are not considered as compatible. In this case the module will run from Rommon A. This may lead to problems, especially if the deployed IOS-XR version requires a minimal supported version.
One example is if the IOS-XR version is ≥ 4.0 (px) a rommon version of ≥ 2.01 is mandatory. I.e. the major version of ROMMON A must not be < 2. This affects the PIE upgrade and Turboboot.
Beside others ROMMON contains the boot variable, which determines the image to boot. Options are available allowing to boot an alternative admin and sdr config.
If an alternative sdr config is saved on disk0 device it can be booted like the following example from the rommon prompt: boot bootflash:/disk0/hfr-os-mbi-4.3.2/mbihfr-rp.vm -a disk0:/alternative-config
Images larger than 360MB (≥IOS-XR 5.1.1) require rommon version ≥2.08 if the the image is installed via Turboboot. boot options are ignored to load an alternate config on CRS-PRP before version 2.06 Rommon versions with major version < 2 have a TFTF limitation of 256Mb.
ROMMON can be upgraded with the admin CLI command upgrade hw-module fpd rommon location <all|node>. In this case the module is upgraded to the bundled version of the running immage. To activate the new ROMMON version a reload of the module or system is required.
ROMMON can also be upgraded with an external file to a different version as the bundled IOS-XR version. As a general rule it is not required to upgrade ROMMON with the external files. But some cases are possible. One example is the IOS-XR upgrade from releases before 4.0 to releases ≥ 4.0 (px).
In this case the following procedure is applicable:
1) Download the tar file (rommonx.y.tar) from CCO, untar it on a PC and copy the binaries to disk0: or copy the tar file to disk0: and untar it with the corresponding ksh command.
# cd /disk0:
# tar -xvf rom2.07.tar
Tar: blocksize = 20
x rommon-hfr-ppc7450-sc-dsmp-A.bin, 393232 bytes, 769 tape blocks
x rommon-hfr-ppc7450-sc-dsmp-B.bin, 393232 bytes, 769 tape blocks
x rommon-hfr-ppc7455-asmp-A.bin, 938000 bytes, 1833 tape blocks
x rommon-hfr-ppc7455-asmp-B.bin, 938000 bytes, 1833 tape blocks
x rommon-hfr-ppc8255-sp-A.bin, 271744 bytes, 531 tape blocks
x rommon-hfr-ppc8255-sp-B.bin, 271324 bytes, 530 tape blocks
x rommon-hfr-ppc8347-sp-A.bin, 185344 bytes, 362 tape blocks
x rommon-hfr-ppc8347-sp-B.bin, 184448 bytes, 361 tape blocks
x rommon-hfr-x86e-kensho.bin, 4194304 bytes, 8192 tape blocks
x rommon-hfr-x86e-prp.bin, 4194304 bytes, 8192 tape blocks
x 20110407_release_notes.txt, 195 bytes, 1 tape blocks
2) Upgrade rommon B like the following example from admin mode:
RP/0/RP0/CPU0:CRS-C#admin Thu Jan 21 14:47:53.694 PST RP/0/RP0/CPU0:CRS-1(admin)#upgrade rommon b all disk0 Thu Jan 21 14:49:16.608 PST Please do not power cycle, reload the router or reset any nodes until all upgrades are completed. Please check the syslog to make sure that all nodes are upgraded successfully. If you need to perform multiple upgrades, please wait for current upgrade to be completed before proceeding to another upgrade. Failure to do so may render the cards under upgrade to be unusable.
RP/0/RP0/CPU0:CRS-C(admin)#show logging | inc is programmed successfully
RP/0/RP0/CPU0:Oct 13 14:00:13.566 : rommon_burner: %PLATFORM-ROMMON_BURNER-5-progress : ROMMON B is programmed successfully.
RP/0/RP0/CPU0:Oct 13 14:00:13.523 : syslog_dev: upgrade_daemon: OK, ROMMON B is programmed successfully.
RP/0/RP0/CPU0:Oct 13 14:00:13.580 : syslog_dev: upgrade_daemon: OK, ROMMON B is programmed successfully.
4) Now you can upgrade rommon A with the following command from admin mode:
RP/0/RP0/CPU0:CRS-1(admin)#upgrade rommon a all disk0
5) Verify the success as in step 3
Since IOS-XR 3.8.4 FPD auto-upgrade is supported. If it is configured ROMMON B is upgraded automatically when a software upgrade takes place.
Note: FPD auto-upgrade is only working if the FPD PIE is isntalled.
To enable FPD auto-upgrade please configure and commit the following command in admin configuration mode:
Because each module is running from ROMMON B and ROMMON A is serving as backup if ROMMON B is corrupted it is usually not required to upgrade ROMMON B if the major numbers are the same.
Please Note: From release 6.3.1 onwards we may have different bundled rommon versions on the different types of modules like LCs or PRPs. In release 6.3.1 the bundled rommon version for PRP is 2.12, while the version for all other modules remains 2.11.