Using the IOS Filesystem for Images

The upgrade procedure described in the previous sections is for a Class B IOS filesystem. Class B filesystems are probably the most common, but they aren't universalparticularly on high-end routers. There are also Class A and Class C filesystems ; the filesystem you have depends on the router you're using. Table 2-4 shows which filesystem a number of different routers use.

Table 2-4. Flash filesystem types

Filesystem type

Router

Class A

7000 series, C12000, and LightStream 1010

Class B

1003, 1004, 1005, 2500, 2600, 3600, 4000, AS5200, 800

Class C

3810, disk0 of SC3640

As far as a user is concerned, the filesystems differ primarily in the commands that they support. Table 2-5 lists the filesystem commands and what they do.

Table 2-5. Filesystem commands

Command

Filesystem

Description

cd

All

Changes the working directory.

delete

All

Deletes a file. On Class A filesystems , this command marks the file for deletion; the squeeze command purges deleted files from the filesystem. On Class B filesystems, the files disappear from directory listings (unless you use /all), but there is no way to reclaim the space, short of erasing the entire filesystem. On Class C filesystems, the file is deleted immediately.

dir

All

Displays the directory's contents. The /all option shows deleted and undeleted files.

erase

A, B

Erases the entire filesystem.

format

A, C

Formats the filesystem.

fsck

C

Verifies the filesystem's consistency.

mkdir

C

Makes a new subdirectory.

more

All

Displays a file's contents.

pwd

All

Displays the current directory.

rename

C

Renames a file.

rmdir

C

Deletes a directory.

show file descriptors

All

Shows open file descriptors.

show file information

All

Shows file size, location, etc.

show file system

All

Shows available filesystems on the device.

squeeze

A

Makes more room by moving files to the beginning of the flash memory, removing deleted files, and removing files with errors. Note that while this is a class A filesystem command, it is also IOS-dependent. Not all versions have this command.

tftp-server

All

Sets the device to act as a TFTP server.

undelete

A, B

Recovers any deleted files. Erased files cannot be undeleted.

verify

All

Verifies that a file's checksum is correct.

All filesystems use a notation similar to a URL to specify filenames and locations. File specifications look like this:

prefix:path/filename prefix://server-name/path/filename prefix://username:password@server-name/path/filename

The prefix indicates where the file is located; Table 2-6 lists the valid prefixes. The path indicates the directory where the file is found. If the prefix is ftp, rcp, or tftp, the URL refers to a file located on a server; you must supply a server name and, if necessary, a username and a password.

Table 2-6. Valid prefixes

Prefix

File location

bootflash

Boot flash memory.

flash

Flash memory.

ftp

FTP server.

null

Bit bucket; files copied to a null destination are discarded. The null prefix is useful for testing connectivity and determining file size.

nvram

Nonvolatile memory.

rcp

RCP server.

slot0

First PCMCIA flash memory card.

slot1

Second PCMCIA flash memory card.

system

Volatile system memory. Often used for access to the currently running system configuration.

You can view and copy files on remote servers using the TFTP, RCP, and FTP protocols, but you cannot delete files from them. For example, the following command uses TFTP to view the file config1 on the server myserver:

Router1# more tftp://myserver/config1 ! ! version 12.0 ...

 

2.4.1. Upgrading Flash Memory Using the Filesystem Commands

The following example upgrades a 3640 router using flash, slot0 (PCMCIA flash card), and the IOS filesystem. The router is initially running IOS 11.2, which doesn't have the filesystem commands; we will upgrade to a version that does. The new IOS image was shipped to us on a flash card, which we have inserted into slot0 on the router. Now that the card is in, we can see the two images by using the show flash and show slot0 commands:

Router#show flash System flash directory: File Length Name/status 1 5061960 c3640-ajs40-mz.112-23.P [5062024 bytes used, 11715192 available, 16777216 total] 16384K bytes of processor board System flash (Read/Write) Router#show slot0 PCMCIA Slot0 flash directory: File Length Name/status 1 8611616 c3640-js-mz_120-5_t1.bin [8611680 bytes used, 8165536 available, 16777216 total] 16384K bytes of processor board PCMCIA Slot0 flash (Read/Write)

We have to use the show commands because IOS 11.2 doesn't have commands like dir. The first command shows the contents of the router's flash memory; the second shows the contents of the card we inserted into slot0.

Now we tell the router to load the image in slot0 instead of the image in the flash memory. We use the boot command to tell the router where the image is located; by default, the router loads the first image it finds in flash memory. The boot command modifies the router's running configuration; we copy the running configuration to the startup configuration, then reboot. Upon reboot, the router loads the image from the flash card in slot0:

Router#conf terminal Router(config)#boot system flash slot0:c3640-js-mz_120-5_t1.bin Router#copy run start Router#reload

After the router reboots, the show version command shows we are running the new image:

Router>show version Cisco Internetwork Operating System Software IOS (tm) 3600 Software (C3640-JS-M), Version 12.0(5)T1, RELEASE SOFTWARE (fc1) Copyright (c) 1986-1999 by cisco Systems, Inc. Compiled Tue 17-Aug-99 22:32 by cmong Image text-base: 0x600088F0, data-base: 0x60F24000 ROM: System Bootstrap, Version 11.1(20)AA2, EARLY DEPLOYMENT RELEASE SOFTWARE (fc1) Router uptime is 0 minutes System returned to ROM by reload System image file is "slot0:c3640-js-mz_120-5_t1.bin"

Now we can use the filesystem commands:

Router#dir flash: Directory of flash:/ 1 -rw- 5061960 c3640-ajs40-mz.112-23.P 16777216 bytes total (11715192 bytes free) Router#dir slot0: Directory of slot0:/ 1 -rw- 8611616 c3640-js-mz_120-5_t1.bin 16777216 bytes total (8165536 bytes free)

Next, we want to copy the image from the PCMCIA card to the router's flash memoryit's not a good idea to rely on booting from the flash card. We can use the filesystem commands to perform this copy:

Router#copy slot0:c3640-js-mz_120-5_t1.bin flash:c3640-js-mz_120-5_t1.bin Destination filename [c3640-js-mz_120-5_t1.bin]? Erase flash: before copying?[confirm]n CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC Verifying checksum... OK (0xB648) 8611616 bytes copied in 38.440 secs (226621 bytes/sec)

Check the flash contents:

Router#dir flash: Directory of flash:/ 1 -rw- 5061960 c3640-ajs40-mz.112-23.P 2 -rw- 8611616 c3640-js-mz_120-5_t1.bin 16777216 bytes total (3103512 bytes free)

Now, we can either delete the old 11.2 image or tell the router which image to boot. If we don't use the boot command to specify an image, the router will load the first available image, which will be the old 11.2 image. (Note that this wouldn't have been an issue if we had told the router it could erase flash memory before copying. However, that would have left us without a backup image to boot if the new image failed.) So we issue two more boot commands: the first to tell the router not to boot the image in slot0, and the second to specify the image we want. We then copy the running configuration into the startup configuration. Finally, we reboot and remove the slot0 memory card.

Router#config terminal Router(config)#no boot system flash slot0:c3640-js-mz_120-5_t1.bin Router(config)#boot system flash c3640-js-mz_120-5_t1.bin Router(config)#^Z Router#copy run start Router#reload

When it reboots, the router loads the right image from its flash memory:

Router>show version Cisco Internetwork Operating System Software IOS (tm) 3600 Software (C3640-JS-M), Version 12.0(5)T1, RELEASE SOFTWARE (fc1) Copyright (c) 1986-1999 by cisco Systems, Inc. Compiled Tue 17-Aug-99 22:32 by cmong Image text-base: 0x600088F0, data-base: 0x60F24000 ROM: System Bootstrap, Version 11.1(20)AA2, EARLY DEPLOYMENT RELEASE SOFTWARE (fc1) ROM: 3600 Software (C3640-AJS40-M), Version 11.2(23)P, RELEASE SOFTWARE (fc1) Router uptime is 0 minutes System returned to ROM by power-on System image file is "flash:c3640-js-mz_120-5_t1.bin"

Let's delete the old image anyway:

Router#delete c3640-ajs40-mz.112-23.P Delete filename [c3640-ajs40-mz.112-23.P]? Delete flash:c3640-ajs40-mz.112-23.P? [confirm]y Router#dir /all flash: Directory of flash:/ 1 -rw- 5061960 [c3640-ajs40-mz.112-23.P] 2 -rw- 8611616 c3640-js-mz_120-5_t1.bin 16777216 bytes total (3103512 bytes free)

Notice that our deleted file is still there; it won't be deleted permanently until we give the erase command. On a Class A filesystem, we could use the squeeze command to erase the deleted file. With this filesystem, though, we are stuck with the deleted file until we give the erase command, which erases the entire filesystem. In this case, we would have to reload our new image. Since there's plenty of room in flash, there is no need to clean the filesystem out now. Next time we upgrade this router, though, we will probably answer "yes" to the "Erase flash before copying" question.

Категории