ASR9001 - Erase and fresh install via ROMMON


Using a USB drive/disk in the ASR will take the process of say a 5.3.3 + SP4 install from like 3 hours down to about 1. This can be booted from using the ROMMON command "boot disk1://asr9k-mini-px.vm-5.3.5 -a none -o none"

Update 2:
To boot into ROMMON it may not be possible to enter the key sequence CTRL+R via a remote console server. Whilst the box is still running "normaly" setting the config-reg to 0 and then reloading the box will drop it into ROMMON:
config-register 0x0


An example of an ASR9001 on which the software packages are screwed and it won't boot properly

# Wait until this point in the boot process than hit CTRL+C to interupt and drop into ROMMON mode

MBI validation sending request.
HIT CTRL-C to abort
....... [CTRL-C]
 MBI Validation aborted

 Boot Status 15
Serial ID: XXXXX
rommon B1 >

# "set" shows the current variables and their values
rommon B4 > set
PS1=rommon ! >

# Clear the boot variable so we don't book from disk
rommon B5 > unset BOOT

# Clear the TFTP file name, I don't want to boot 5.2.2, I want to boot 4.3.4
rommon B6 > unset TFTP_FILE

# Disable disk mirroring (no mirroring on ASR9001): unset MIRROR_ENABLE

# Config IP details for the Mgmt0 interface so we can TFTP
rommon B7 > IP_ADDRESS=
rommon B8 > IP_SUBNET_MASK=

# Enable turbo boot and format the disk (no space between commans)
rommon B10 > TURBOBOOT=on,disk0,format

# Tweak some of the TFTP settings
rommon B11 > TFTP_TIMEOUT=6000
rommon B12 > TFTP_VERBOSE=2
rommon B13 > TFTP_RETRY_COUNT=2
rommon B14 > TFTP_MGMT_INTF=0
rommon B15 > TURBOBOOT=on,disk0,format
# The turboboot option will copy the VM to RAM, then install it to disk and reboot and boot from disk.
# Without this the router boots from the VM running in RAM and after reboot its blank still, show ver
# shows the following in that case
RP/0/RSP0/CPU0:ios#show ver
System image file is "tftp://"

rommon B16 > confreg 0x102

# Save these changes (they haven't taken effect yet)
rommon B17 > sync

# View variables and values to check it's all correct
rommon B18 > set

# Now boot the core VM image extrated from the full IOS-XR 4.3.4 default tarball
rommon B19 > boot tftp:// -a none -o none

 Boot Status 16

           TFTP_FILE: asr9k-mini-px.vm-4.3.4

Performing tftpdnld
TFTP: Enabling cache

Mgt LAN 0 interface is selected using TSEC.

dtsec_init_hw: configuring DTSEC (port 8) for: 1GB, Full Duplex
Initializing interface.
Interface link state up.

ARPing for
ARP reply for received.  MAC address 1005.ca9e.1b65
tftp_process_packet: received OACK.
tftp_process_packet: Change blksize to 1250.
Receiving asr9k-mini-px.vm-4.3.4 from !!!!

tftp_process_packet: last packet, block=16310, size=1043.
File reception completed.
Image size=348067293, TFTP download size=348067293

TFTP: Disabling cache
program load complete, entry point: 0x202518, size: 0x14bf06dd

# (if booting a pre 17th Nov 2015 image, like 4.3.4 one must watch the TFTP copy and boot up process,
# there is a y/n option that only displays for a few seconds, its a warning about the certificate has expired
# because of

# Also note the login screen can show before the system has actually finished copying some packages and booting
# It will give an error...
  Enter root-system username: cisco
  Enter secret:
  Enter secret again:
 Could not commit admin config.

# Wait for the various TURBOBOOT: messages to stop...

Feb 01 05:32:13.816 : TURBOBOOT: Resetting TURBOBOOT rommon variable to (TURBOBOOT=).
Feb 01 05:32:13.882 : TURBOBOOT: Setting config-register to autoboot the router and disable send break.
Feb 01 05:32:13.939 : TURBOBOOT: Turboboot completed successfully: the router will now reload from disk
Feb 01 05:32:13.941 : TURBOBOOT: *** RESETTING IN 30 SECONDS ***

# IOS-XR re-boots and then one has to create a new root account and then login as that account

RP/0/RSP0/CPU0:ios#show ver
System image file is "tftp://"

# Erase all the config data and free space (optional)
RP/0/RSP0/CPU0:ios#erase nvram:
RP/0/RSP0/CPU0:ios#erase nvram-raw:
RP/0/RSP0/CPU0:ios#format disk0a:
RP/0/RSP0/CPU0:ios#format harddisk:
RP/0/RSP0/CPU0:ios#format configflash:
RP/0/RSP0/CPU0:ios#format bootflash: location 0/0/cpu0

# Ensure all line cards are showing "READY" or "RUN" - some show "IOS XR PREP" for a while until they are fulling online
RP/0/RSP0/CPU0:ios#show platform

# Check if any LCs need upgrading
RP/0/RSP0/CPU0:ios(admin)#show hw-module fpd location all
# If any LC firmware needs upgrading, upgrade it before continuing:
RP/0/RSP0/CPU0:ios#conf t
RP/0/RSP0/CPU0:ios(config)#interface MgmtEth 0/RSP0/CPU0/0
RP/0/RSP0/CPU0:ios(config-if)#ipv4 add
RP/0/RSP0/CPU0:ios(config-if)#no shut
RP/0/RSP0/CPU0:ios(config)#router static address-family ipv4 unicast
RP/0/RSP0/CPU0:ios(admin)#install add tftp:// actvate sync
RP/0/RSP0/CPU0:ios(admin)#show install active summary
RP/0/RSP0/CPU0:ios(admin)#install commit 
RP/0/RSP0/CPU0:ios(admin)#upgrade hw-module fpd all location all

# Copy the remaining IOS-XR 4.3.4 packages across...
# This is much faster via USB:
# admin install add tar disk1:ASR9K-iosxr-px-K9-5.3.3.tar sync
RP/0/RSP0/CPU0:ios(admin)#copy tftp:// disk0: RP/0/RSP0/CPU0:ios(admin)#copy tftp:// disk0: RP/0/RSP0/CPU0:ios(admin)#copy tftp:// disk0: RP/0/RSP0/CPU0:ios(admin)#copy tftp:// disk0: RP/0/RSP0/CPU0:ios(admin)#copy tftp:// disk0: RP/0/RSP0/CPU0:ios(admin)#copy tftp:// disk0: RP/0/RSP0/CPU0:ios(admin)#copy tftp:// disk0: RP/0/RSP0/CPU0:ios(admin)#copy tftp:// disk0: # Becasue this is something pre 17th Oct 2015 (IOS-XR 4.3.4) this means a temporary root certificate # needs installing and SMU applying as per RP/0/RSP0/CPU0:ios(admin)#copy tftp:// disk0: Destination filename [/disk0:/asr9k-px-4.3.4.CSCut52232.pie]? Accessing tftp:// C 289740 bytes copied in 0 sec RP/0/RSP0/CPU0:ios(admin)#copy tftp:// disk0: Destination filename [/disk0:/css-root.cer]? Accessing tftp:// C 1217 bytes copied in 0 sec RP/0/RSP0/CPU0:ios(admin)#exit RP/0/RSP0/CPU0:ios#sam add certificate /disk0:/css-root.cer root trust SAM: Successful adding certificate /disk0:/css-root.cer RP/0/RSP0/CPU0:ios#admin RP/0/RSP0/CPU0:ios(admin)#install add disk0:/asr9k-px-4.3.4.CSCut52232.pie synchronous RP/0/RSP0/CPU0:ios(admin)#show install inactive RP/0/RSP0/CPU0:ios(admin)#install activate disk0:asr9k-px-4.3.4.CSCut52232-1.0.0 synchronous RP/0/RSP0/CPU0:ios(admin)#install commit RP/0/RSP0/CPU0:ios(admin)#install add disk0:/asr9k-mpls-px.pie-4.3.4 disk0:/asr9k-optic-px.pie-4.3.4 disk0:/asr9k-mgbl-px.pie-4.3.4 disk0:/asr9k-mcast-px.pie-4.3.4 disk0:/asr9k-li-px.pie-4.3.4 disk0:/asr9k-k9sec-px.pie-4.3.4 disk0:/asr9k-services-px.pie-4.3.4 asr9k-fpd-px.pie-4.3.4 synchronous RP/0/RSP0/CPU0:ios(admin)#show install inactive RP/0/RSP0/CPU0:ios(admin)#install activate disk0:asr9k-mpls-px-4.3.4 disk0:asr9k-optic-px-4.3.4 disk0:asr9k-mgbl-px-4.3.4 disk0:asr9k-mcast-px-4.3.4 disk0:asr9k-li-px-4.3.4 disk0:asr9k-k9sec-px-4.3.4 disk0:asr9k-services-px-4.3.4 disk0:asr9k-fpd-px-4.3.4 RP/0/RSP0/CPU0:ios(admin)#install commit # Check everything is OK then reboot the router for good measure RP/0/RSP0/CPU0:ios(admin)#install verify packages synchronous
# remove any unused packages with "install remove inactive sync" RP/0/RSP0/CPU0:ios(admin)#show platform RP/0/RSP0/CPU0:ios(admin)#reload # If all the device configs have been applied the follow additional checks can be made: admin cfs check ! Check for any file system corruption from all the copying admin show configuration failed incompatible ! Check for any configuration inssues admin clear configuration inconsistency ! Clear the configuration issues flag