Conversion on Supervisor Engine with MSFC2

From NesevoWiki
Jump to: navigation, search

This section describes the steps to convert the system software that runs on a Catalyst 6500/6000 Series Switch from CatOS to Cisco IOS Software when there is an MSFC2 on the Supervisor Engine.

This section uses this terminology:

   *
     Switch Processor (SP)—Refers to the switch component of the system or Supervisor Engine.
   *
     Route Processor (RP)—Refers to the router component of the system or MSFC2.

Note: The images that this document uses are for example purposes only. Replace the images with the images that you use in your switch environment. Make sure to refer to the Catalyst 6500 Series Release Notes for memory and ROMmon requirements.

Step 1

Establish a console connection to the SP.

Log your console session as a best practice. This log enables you to capture a record of the session and compare the log to the steps in this document, if you need to troubleshoot. For example, in HyperTerminal, choose Transfer > Capture Text in order to log a console session. Refer to Connecting a Terminal to the Console Port on Catalyst Switches for more information.

Step 2

Back up the CatOS configuration from the Supervisor Engine and the Cisco IOS Software configuration from the MSFC2.

You need to reconfigure the switch after you convert to Cisco IOS Software as the system software because the conversion process loses the configuration. If you back up the files, they can serve as a reference after the conversion or as a backup if you decide to convert back to CatOS. Issue the copy config tftp command on the Supervisor Engine and the copy start tftp command on the MSFC2 in order to back up the configurations.

Refer to Managing Software Images and Working with Configuration Files on Catalyst Switches for more information on how to use the copy config tftp and copy start tftp commands to back up configuration files.

Step 3

Issue the show module command in order to confirm that the PFC or PFC2 and the MSFC2 are installed in the switch.

Note: You cannot run a Cisco IOS Software image (c6sup*) without a PFC and an MSFC.

   Console> (enable) show module
   Mod Slot Ports Module-Type               Model               Sub Status
   --- ---- ----- ------------------------- ------------------- --- --------
   1   1    2     1000BaseX Supervisor      WS-X6K-S2U-MSFC2    yes ok
   15  1    1     Multilayer Switch Feature WS-F6K-MSFC2        no  ok
   !--- In this case, the SP in slot 1 is a Supervisor Engine 2
   !--- with an RP or MSFC2.
   3   3    48    10/100BaseTX Ethernet     WS-X6548-RJ-45      no  ok
   5   5    0     Switch Fabric Module 2    WS-X6500-SFM2       no  ok
   Mod Module-Name          Serial-Num
   --- -------------------- -----------
   1                        SAD060302XM
   15                       SAD060102KP
   3                        SAL0701B2S0
   5                        SAD061506MD
   Mod MAC-Address(es)                        Hw     Fw         Sw
   --- -------------------------------------- ------ ---------- -----------------
   1   00-01-c9-da-ee-d2 to 00-01-c9-da-ee-d3 3.5    7.1(1)     8.1(1)
   !--- This is the current CatOS software version that runs on the SP.
       00-01-c9-da-ee-d0 to 00-01-c9-da-ee-d1
       00-04-9b-bd-c0-00 to 00-04-9b-bd-c3-ff
   15  00-08-7c-a1-cf-80 to 00-08-7c-a1-cf-bf 1.3    12.1(19)E1 12.1(19)E1a
   !--- This is the current Cisco IOS Software release that runs on the RP.
   3   00-09-11-f3-88-48 to 00-09-11-f3-88-77 5.1    6.3(1)     8.1(1)
   5   00-01-00-02-00-03                      1.2    6.1(3)     8.1(1)
   Mod Sub-Type                Sub-Model           Sub-Serial  Sub-Hw Sub-Sw
   --- ----------------------- ------------------- ----------- ------ ------
   1   L3 Switching Engine II  WS-F6K-PFC2         SAD054104B3 3.0
   !--- A PFC2 is installed in the switch in this case.
   Console> (enable)

Step 4

Verify that the Cisco IOS Software image (c6sup*) is available on the SP bootflash or on the PC card in slot0.

Note: Where you choose to store the Cisco IOS Software image (c6sup*) depends on the Supervisor Engine flash device capacity and image size.

Use the dir command in order to verify the location of the Cisco IOS Software image (c6sup*).

   Console> (enable) dir bootflash:
   -#- -length- -----date/time------ name
     1  8040396 Oct 30 2003 23:17:13 cat6000-sup2k8.8-1-1.bin
   !--- This is the SP bootflash and the location for the current
   !--- CatOS software version that runs on the SP.
   23941044 bytes available (8040524 bytes used)
   Console> (enable)
   Console> (enable) dir slot0:
   -#- -length- -----date/time------ name
     1 19769600 Oct 31 2003 00:39:30 c6sup22-js-mz.121-19.E1a
   !--- This is the PCMCIA or Flash PC device with the name slot0:.
   !--- This is the Cisco IOS Software image (c6sup*) release for this conversion.
   5002880 bytes available (19769728 bytes used)
   Console> (enable)

If the Cisco IOS Software image (c6sup*) is missing from either bootflash: or slot0:, download the image. Step 5 provides the procedure. If the image is present, go to Step 6. Step 5 (Optional)

Note: Complete this step only if the Cisco IOS Software image (c6sup*) is missing from either bootflash: or slot0:. See Step 4 in order to determine if you need to complete this step.

Issue the copy tftp bootflash: command or the copy tftp slot0: command in order to download the image to either the SP bootflash or to the PC card in slot0.

Note: You might need to format the PC cards if it has never been used before or if it was formatted with the Cisco IOS Software algorithm. Issue the format slot0: command or the format slot1: command or both commands in order to format PC cards on a Supervisor Engine 1, 1A or 2.

Note: You can free up space as necessary on the flash devices. Issue the delete bootflash: command or the delete slot0:filename command in order to delete the file. Then, issue the squeeze bootflash: or squeeze slot0: command in order to erase all deleted files from the device.

   Console> (enable) copy tftp slot0:
   IP address or name of remote host []? 10.1.1.2
   Name of file to copy from []? c6sup22-js-mz.121-19.E1a
   24772480 bytes available on device slot0, proceed (y/n) [n]? y
   CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
   CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
   CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
   CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
   File has been copied successfully.
   Console> (enable)
   !--- Verify the image location.
   Console> (enable) dir slot0:
   -#- -length- -----date/time------ name
     1 19769600 Oct 31 2003 21:37:39 c6sup22-js-mz.121-19.E1a
   5002880 bytes available (19769728 bytes used)
   Console> (enable)

Step 6

In order to access the RP, issue either the switch console command or the session module command.

   Console> (enable) switch console
   Trying Router-15...
   Connected to Router-15.
   Type ^C^C^C to switch back...
   Router>
   !--- Issue the enable command in order to enter privileged EXEC mode.
   Router>enable
   Router#

Step 7

Issue the dir bootflash: command in order to verify that the MSFC2 boot image (c6msfc2-boot) is present on the RP bootflash.

Important Note: A boot image is not a requirement for the MSFC2. However, Cisco recommends that you use a boot image as described in this procedure. A boot image is a much smaller, scaled-down version of the system image. With a boot image, you can perform a TFTP image transfer if the main system image becomes corrupt or lost. If you choose to use an MSFC2 boot image, you must store it in the RP bootflash.

   Router#dir bootflash:
   Directory of bootflash:/
       1  -rw-     1820676   Aug 20 2003 18:13:11  c6msfc2-boot-mz.121-19.E1a
   15204352 bytes total (13383548 bytes free)

If the c6msfc2-boot image is missing from the RP bootflash, download the image. Step 8 provides the procedure. If the image is present, go to Step 9. Step 8 (Optional)

Note: Complete this step only if the c6msfc2-boot image is missing from the RP bootflash. See Step 7 in order to determine if you need to complete this step.

Issue the copy tftp bootflash: command in order to download the image to RP bootflash.

Note: You can free up space as necessary on RP bootflash. Issue the delete bootflash:filename command in order to delete the file. Then, issue the squeeze bootflash: command in order to erase all deleted files from the device.

   Router#copy tftp bootflash:
   Address or name of remote host []? 10.1.1.2
   Source filename []? c6msfc2-boot-mz.121-19.E1a
   Destination filename [c6msfc2-boot-mz.121-19.E1a]?
   Accessing tftp://10.1.1.2/c6msfc2-boot-mz.121-19.E1a...
   Loading c6msfc2-boot-mz.121-19.E1a from 10.1.1.2 (via Vlan1): !!!!!!!!!!!!!
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !!!!!!!!!!!!!!!!!!!!!!!
   [OK - 1820676 bytes]
   1820676 bytes copied in 18.800 secs (96844 bytes/sec)
   Verifying compressed IOS image checksum...
   Verified compressed IOS image checksum for bootflash:/c6msfc2-boot-mz.121-19.E1a
   !--- Verify the image location.
   Router#dir bootflash:
   Directory of bootflash:/
       1  -rw-     1820676   Nov 01 2003 00:37:41  c6msfc2-boot-mz.121-19.E1a
   15204352 bytes total (13383548 bytes free)
   Router#

Step 9

Verify that the BOOTLDR variable statement points to the c6msfc2-boot image in RP bootflash. and that the configuration register is set to 0x2102.

Issue the show bootvar command in order to check the BOOTLDR variable and configuration register settings.

Note: A BOOTLDR variable statement is not a requirement for the MSFC2. However, Cisco recommends that you use the BOOTLDR variable statement as described in this procedure.

   Router#show bootvar
   BOOT variable = sup-slot0:c6msfc2-jsv-mz.121-19.E1a,1
   CONFIG_FILE variable =
   BOOTLDR variable = bootflash:c6msfc2-boot-mz.121-19.E1a
   !--- The BOOTLDR variable statement is set correctly for the MSFC2.
   Configuration register is 0x2102
   !--- The configuration register is set to 0x2102, which is correct
   Router#

If the BOOTLDR variable statement or the configuration register is not set correctly, complete Step 10 in order to change the setting. If both these settings are correct, go to Step 11. Step 10 (Optional)

Note: Complete this step only if the BOOTLDR variable statement or the configuration register were not set correctly. See Step 9 in order to determine if you need to complete this step.

Issue these commands in order to set the BOOTLDR variable statement and change the configuration register setting:


   !--- Verify the boot image name.
   Router#dir bootflash:
   Directory of bootflash:/
       1  -rw-     1820676   Nov 01 2003 00:37:41  c6msfc2-boot-mz.121-19.E1a
   15204352 bytes total (13383548 bytes free)
   Router#
   !--- Set the BOOTLDR variable.
   Router#configure terminal
   Enter configuration commands, one per line.  End with CNTL/Z.
   Router(config)#boot bootldr bootflash:c6msfc2-boot-mz.121-19.E1a
   Router(config)#end
   Router#
   !--- Set the configuration register so that the MSFC2 boots automatically.
   Router#configure terminal
   Enter configuration commands, one per line.  End with CNTL/Z.
   Router(config)#config-register 0x2102
   Router(config)#end
   Router#
   !--- Save the changes.
   Router#write memory
   Building configuration...
   [OK]
   !--- Verify the BOOTLDR variable and configuration register settings.
   Router#show bootvar
   BOOT variable = sup-slot0:c6msfc2-jsv-mz.121-19.E1a,1
   CONFIG_FILE variable =
   BOOTLDR variable = bootflash:c6msfc2-boot-mz.121-19.E1a
   Configuration register is 0x2102
   Router#

Step 11

In order to go back to the SP, press Ctrl-C three times on the RP.

Note: If you issued the session module command in order to access the RP, you must issue the exit command instead of Ctrl-C.


   !--- Press Ctrl-C three times.
   Router#^C
   Router#^C
   Router#^C
   Console> (enable)
   !--- This is the SP console prompt.

Step 12

Change the configuration register setting on the SP so that the switch does not boot the CatOS image and goes to ROMmon.

   Console> (enable) set boot config-register 0x0
   Configuration register is 0x0
   ignore-config: disabled
   auto-config: non-recurring, overwrite, sync disabled
   console baud: 9600
   boot: the ROM monitor
   Console> (enable)
   !--- Verify the settings.
   Console> (enable) show boot
   BOOT variable = bootflash:cat6000-sup2k8.8-1-1.bin,1;
   CONFIG_FILE variable = bootflash:switch.cfg
   Configuration register is 0x0
   ignore-config: disabled
   auto-config: non-recurring, overwrite, sync disabled
   console baud: 9600
   boot: the ROM monitor
   Console> (enable)

Step 13

Reset the switch so that it goes into ROMmon:

   Console> (enable) reset
   This command will reset the system.
   Do you want to continue (y/n) [n]? y
   2003 Nov 01 03:44:12 %SYS-5-SYS_RESET:System reset from Console//
   Powering OFF all existing linecards
   2003 Nov 01 03:44:12 %ETHC-5-PORTFROMSTP:Port 3/1 left bridge port 3/1
   System Bootstrap, Version 7.1(1)
   !--- This is the SP ROMmon image version.
   Copyright (c) 1994-2001 by cisco Systems, Inc.
   c6k_sup2 processor with 262144 Kbytes of main memory
   !--- After this message, the router goes into SP ROMmon.
   rommon 1

Step 14

Issue the set command at the ROMmon prompt in order to check the environment variables.

Note: The switch is currently set to boot into the CatOS image.

   rommon 1 > set
   !--- Press Enter or Return.
   PS1=rommon ! >
   BOOTLDR=
   SLOTCACHE=cards;
   RET_2_RTS=22:35:52 UTC Thu Oct 30 2003
   RET_2_RUTC=1067553353
   ?=0
   BOOT=bootflash:cat6000-sup2k8.8-1-1.bin,1;
   CONFIG_FILE=bootflash:switch.cfg
   rommon 2

Cisco IOS Software does not use the CONFIG_FILE environment variable, so the variable can cause a problem. In order to avoid the problem, remove either bootflash:switch.cfg or slot0:switch.cfg from the environment settings. Issue these commands:

   rommon 2 > CONFIG_FILE=
   !--- The CONFIG_FILE statement is case sensitive and is all capital letters.
   rommon 3 > BOOT=
   !--- The BOOT statement is case sensitive and is all capital letters.
   rommon 4 > confreg 0x2102


   You must reset or power cycle for new config to take effect
   !--- When you set the config register to 0x2102, the SP autoboots once
   !--- the BOOT variable is set to the correct IOS image file name after it 
   !--- converts to Native IOS mode.
   rommon 5 > sync
   !--- The sync command writes the new environment variable setting to NVRAM.
   rommon 6 > reset
   !--- The reset command is necessary after you change any environment variable.
   System Bootstrap, Version 7.1(1)
   Copyright (c) 1994-2001 by cisco Systems, Inc.
   c6k_sup2 processor with 262144 Kbytes of main memory
   Autoboot: failed, BOOT string is empty
   rommon 1 >
   !--- You are still in SP ROMmon after the reset.

Step 15

Boot the switch with the Cisco IOS Software image (c6sup*).

Issue either the dir bootflash: command or the dir slot0: command. The command you issue depends on the device to which you previously downloaded the Cisco IOS Software image (c6sup*). Then, issue the boot bootflash: command or the boot slot0:filename command in order to start the bootup sequence.

   rommon 1 > dir slot0:
            File size           Checksum   File name
     19769600 bytes (0x12da900)  0x4dbcb14a    c6sup22-js-mz.121-19.E1a
   !--- The Cisco IOS Software image (c6sup*) is on slot0: in this case.
   !--- This is the device from which the image boots in this procedure.


   rommon 2 > boot slot0:c6sup22-js-mz.121-19.E1a
   Self decompressing the image : #################################################
   ################################################################################
   ################################################################################
   ############################################################################ [OK]


   !--- Output suppressed.
   00:00:02: %PFREDUN-6-ACTIVE: Initializing as ACTIVE processor
   00:00:05: %OIR-SP-6-CONSOLE: Changing console ownership to route processor
   System Bootstrap, Version 12.1(4r)E, RELEASE SOFTWARE (fc1)
   !--- This is the RP ROMmon image release.
   Copyright (c) 2000 by cisco Systems, Inc.
   Cat6k-MSFC2 platform with 262144 Kbytes of main memory



   Download Start
   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
    Download Completed! Booting the image.
    Self decompressing the image : #################################################
   #################################################################################
   #################################################################################
   #################################################################################
   #################################################################################
   #################################################################################
   #################################################################################
   #################################################################################
   #################################################################################
   #################################################################################
   #################################################################################
   #################################################################################
   ########################################## [OK]
   !--- Output suppressed.
   Press RETURN to get started!
   !--- Output suppressed.
   Router>

Step 16

At this point, the Cisco IOS Software image (c6sup*) has successfully booted, but the Supervisor Engine Flash devices are still formatted with the previous CatOS algorithm. Therefore, Cisco IOS Software cannot correctly write to sup-bootflash: or slot0:. You need to reformat these Flash devices and replace the images that are on the Flash devices.

Issue the format command in order to format both the Supervisor Engine bootflash and slot0 Flash devices.

   Router>enable
   Router#format sup-bootflash:
   Format operation may take a while. Continue? [confirm]
   !--- Press Enter or Return.
   Format operation will destroy all data in "sup-bootflash:".  Continue? [confirm]
   !--- Press Enter or Return.


   Format of sup-bootflash complete
   Router#
   Router#format slot0:
   Format operation may take a while. Continue? [confirm]
   !--- Press Enter or Return.
   Format operation will destroy all data in "slot0:".  Continue? [confirm]
   !--- Press Enter or Return.
   Enter volume ID (up to 64 chars)[default slot0]:
   !--- Press Enter or Return.
   Format of slot0 complete
   Router#

Step 17

When you format the Supervisor Engine Flash devices in Step 16, the Cisco IOS Software image (c6sup*) used to boot the Supervisor Engine, as well as all data on the device, is erased. You need to recopy the Cisco IOS Software image (c6sup*).

Note: Remember that the conversion lost the configuration. You need to configure an IP address and possibly a static or dynamic routing in order to reestablish connectivity to your TFTP server. Verify that you can ping your TFTP server from the switch.

Issue the copy tftp command in order to copy the Cisco IOS Software image (c6sup*) to either the sup-bootflash: or slot0: Flash device.

   Router#copy tftp slot0:
   !--- The Cisco IOS Software image (c6sup*) copies to slot0: in this case.
   Address or name of remote host []? 10.1.1.2
   Source filename []? c6sup22-js-mz.121-19.E1a
   Destination filename [c6sup22-js-mz.121-19.E1a]?
   Accessing tftp://10.1.1.2/c6sup22-js-mz.121-19.E1a...
   Loading c6sup22-js-mz.121-19.E1a from 10.1.1.2 (via FastEthernet3/1): !!!!!
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !!!!!!!!!!!!!!!!!
   [OK - 19769600 bytes]
   19769600 bytes copied in 290.032 secs (68164 bytes/sec)
   Verifying compressed IOS image checksum...
   Verified compressed IOS image checksum for slot0:/c6sup22-js-mz.121-19.E1a
   Router#

Step 18

Set the boot variable to boot from the Cisco IOS Software image (c6sup*) in sup-bootflash: or slot0:.


   !--- Check the current boot variable settings.
   Router#show bootvar
   BOOT variable = sup-slot0:c6msfc2-jsv-mz.121-19.E1a,1
   !--- The BOOT variable incorrectly points to an old MSFC image.
   CONFIG_FILE variable =
   BOOTLDR variable = bootflash:c6msfc2-boot-mz.121-19.E1a
   Configuration register is 0x2102
   Standby is not up.
   Router#
   !--- Set the boot variable to boot the Cisco IOS Software image (c6sup*).
   Router#configure terminal
   Enter configuration commands, one per line.  End with CNTL/Z.
   Router(config)#boot system flash slot0:c6sup22-js-mz.121-19.E1a
   Router(config)# 
   !--- Save the changes.
   Router#write memory
   Building configuration...
   [OK]
   Router#

Step 19

Verify if the configuration register is set to 0x2102. If not, update the configuration register to the correct value of 0x2102.

   Router#show bootvar
   BOOT variable = slot0:c6sup22-js-mz.121-19.E1a,1
   CONFIG_FILE variable does not exist
   BOOTLDR variable = bootflash:c6msfc2-boot-mz.121-19.E1a
   Configuration register is 0x2102
   Standby is not up.

Step 20

Reload the switch.

   Router#reload
   Proceed with reload? [confirm]
   !--- Output suppressed.
Personal tools