Wednesday, 8 February 2012

Cisco IOS Configuration Register

To control various startup and operating parameters, Cisco IOS devices have the concept of a configuration register. The configuration register is quite often used to perform password resets, but can be used for some other things as well.

The configuration register is 16-bits of storage that is carved up to represent different configuration options and exists outside of the configuration you create and save to flash. The values in the configuration register can be altered through IOS and also through the ROMmon boot loader.

To view the current configuration register value, you can use show version command through IOS and confreg through the ROMmon boot loader.

IOS:

TestRTR#show version
Cisco IOS Software, C870 Software (C870-ADVSECURITYK9-M), Version 12.4(4)T7, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2006 by Cisco Systems, Inc.
Compiled Wed 29-Nov-06 00:43 by kellythw

<snip>

5 FastEthernet interfaces
128K bytes of non-volatile configuration memory.
24576K bytes of processor board System flash (Intel Strataflash)

Configuration register is 0x2102


ROMmon:


rommon 4 > confreg

           Configuration Summary
   (Virtual Configuration Register: 0x2102)

enabled are:
load rom after netboot fails
console baud: 9600

boot: image specified by the boot system commands
or default to: cisco2-


do you wish to change the configuration? y/n [n]:


In the examples above, the configuration register is 0x2102, which signifies
  1. Fall back to booting ROM if network boot fails (0x2000)
  2. The break key will be ignored during standard operation (0x100)
  3. Use the image specified with the 'boot' command in IOS (0x2)

Most of the bits in the configuration register represent individual settings, which are based on their position within the register. The default configuration register setting (0x2102) is represented below in binary.


Bits 13 (0x2000), 8 (0x100) and 2 (0x2) are enabled, which represent the settings covered earlier. In the example below, different settings have been enabled.



Bits 15 (0x8000), 13 (0x2000), 8 (0x100), 7 (0x40) and 1 (0x1) have been set, which will change the function of the router when it starts up. Compared to the default, these settings will cause diagnostic messages will be displayed, the startup config in flash to be ignored and the first image available in flash to be loaded, ignoring the 'boot' directive.

The settings in these examples above can be referenced in the table below


Bits
Hex
Description
0-3
0x0-0xF
Boot configuration (0 - Stay in ROMmon boot loader, 1 - Load first image on flash, 2- use the image specified with the boot system command)
6
0x0040
Ignore the startup config in NVRAM
7
0x0080
Disable boot messages on startup
8
0x0100
Disable the usage of the 'break' key during normal IOS operation
9
0x0200
Uses secondary bootstrap (obsolete ?)
10
0x0400
Enable IP broadcast with all zeros (old broken BSD method of broadcast)
5,11,12


Configure the console line speed
13
0x2000
Boots default image if the network boot fails
14
0x4000
Do not include network number in broadcast packets
15
0x8000
Enable diagnostic messages on startup and ignore startup config in NVRAM (like bit 6)

To modify the current value in the configuration register the config-register command can be used through IOS and the confreg command can be used through ROMmon.

IOS:

TestRTR(config)#config-register ?
 <0x0-0xFFFF> Config register number

TestRTR(config)#config-register 0xA141
TestRTR(config)#


ROMmon:

rommon 1 > confreg 0xA141
You must reset or power cycle for new config to take effect
rommon 2 >


Once the configuration register has been modified, the system will need to be restarted for the changes to take effect.


No comments:

Post a Comment