0% found this document useful (0 votes)
1K views

Brocade CF Replacement

This document provides steps to backup and restore the CF drive of a Brocade 300 SAN switch in the event of failure. It describes using dd commands over SSH to backup partitions to a Linux PC. The new CF drive is prepared with partitions and the backups copied over using tar. The switch is then booted from a RAM disk using U-Boot tools to bypass errors, and the OS is loaded over NFS. Specific parameters like map numbers are set to make the new drive bootable.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1K views

Brocade CF Replacement

This document provides steps to backup and restore the CF drive of a Brocade 300 SAN switch in the event of failure. It describes using dd commands over SSH to backup partitions to a Linux PC. The new CF drive is prepared with partitions and the backups copied over using tar. The switch is then booted from a RAM disk using U-Boot tools to bypass errors, and the OS is loaded over NFS. Specific parameters like map numbers are set to make the new drive bootable.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

How to replace the CF-drive of a Brocade 300 Sans witch

Introduction

If you open a Brocade SAN switch you’ll see a standard CF (Compact Flash) drive. On this drive are
stored all the specific information of your switch (licenses, configuration) and your Linux OS that
keeps your switch working.
I not aware of a procedure how to reinstall your OS and your specific configuration if this CF drive
fails.
So, it is better to do a complete backup / dump of your CF drive and to know how a replace your
drive with a new one.
All step a described here.

Backup
You need a running Linux PC (here with IP-Address 192.168.50.53) to manage the complete copy
task.

Login to your brocade switch as root and run the following command

dd if=/dev/hda1 | ssh [email protected] "dd of=/home/a/hda1.dmp"

where “[email protected]” and “/home/a/” are specific for your environment.

To be sure dump your second CF partition, too:

dd if=/dev/hda2 | ssh [email protected] "dd of=/home/a/hda2.dmp"


Restore

You need a USB card reader for CF.

Put the new CF drive into this reader. Create two primary partitions of the same size on this CF drive
(gParted helps a lot):

The filesystem type should be the same as the original. In this case here it is “ext3”

# file hda1.dmp

hda1.dmp: Linux rev 1.0 ext3 filesystem data, UUID=53bb0b15-4e32-4df2-9f15-93ce178318a2


(needs journal recovery)

Now copy all files to the new CF drive:

# mount -t ext3 hda1.dmp -o loop /mnt

# mount /dev/sdc1 /mnt1

# cd /mnt ; tar cf - . | (cd /mnt1 ; tar xvf -)

# cd ; umount /mnt ; umount /mnt1 (remark: the umount take some time to be finished; be patient!)

Do this for your second partition, too:

# mount -t ext3 hda2.dmp -o loop /mnt

# mount /dev/sdc2 /mnt1


# cd /mnt ; tar cf - . | (cd /mnt1 ; tar xvf -)

# cd ; umount /mnt ; umount /mnt1

Make your new drive bootable in your SAN switch

If you put your new CF drive into your SAN switch, the boot process fails (logged through the serial
line):

The system is coming up, please wait...

U-Boot 1.1.3 (Jan 29 2020 - 02:02:19), Build: jenkins-bsnfos-v7.4.2x_patch-202

CPU: AMCC PowerPC 440EPx Rev. A at 660 MHz (PLB=132, OPB=66, EBC=33 MHz)
No Security/Kasumi support
I2C boot EEPROM enabled
Bootstrap Option G - Boot ROM Location I2C (Addr 0x54)
Internal PCI arbiter enabled, PCI async ext clock used
32 kB I-Cache 32 kB D-Cache
Board: Tomahawk
I2C: ready
DRAM: Initializing DDRSDRAM
DDR Init: speed = 132000002
DQS calibration - Window detected:
max_passing_cases = 54
wr_dqs_shift = 95
dll_dqs_delay_X = 30
dll_dqs_delay_X window = 4 - 57
DDR0_09=0x00011d5f
DDR0_22=0x00267f0b
DDR0_17=0x1e005900
DDR0_18=0x1e1e1e1e
DDR0_19=0x1e1e1e1e
ECC Enabling DONE
512 MB
POST RAM test disabled.
Now running in RAM - U-Boot at: 1fb26000
trap_init : 0x0
system inventory subsystem initialized
FLASH: Tomahawk CFI Flash Driver Initialized
4 MB
CPLD: Init complete
bootrom_verbose_flag=1
PCI: gd->brcd_flags = 0, PCI init
Skip our host bridge
00 07 1657 0011 0280 18
In: serial
Out: serial
Err: serial
Net:
Checking system RAM - press any key to stop test
Checking memory address: 00100000
System RAM test using Default POST RAM Test succeeded.
set_bootstatus: BS_LOAD_OS, platform_idx = 1
Type run flash_nfs to mount root filesystem over NFS
Hit ESC to stop autoboot: 0
ATA device vendor SMI MODEL, product SMI 00004A18, revision 20071116
Map file at LBA sector 0x19ad08
Blk map has an invalid version 0
ATA device vendor SMI MODEL, product SMI 00004A18, revision 20071116
Map file at LBA sector 0x9c067
Blk map has an invalid version 0
do_bootm 171: load_addr 0x00100000 addr 0x00400000
do_bootm 174: ## Booting image at 00400000 load_addr 0x00100000 ...
Bad Magic Number

You have to change specific parameters that you’ll get if you have a running SAN switch.
So, you need to bypass the “Bad Magic Number” problem.

It is possible to boot the SAN switch not only from your CF drive but from a RAM-disk, too. This RAM
boot process lets you get into your SAN Linux OS.

You need specific programs to handle the RAM images. The program package is called “u-boot-
tools”.

After installation two programs a used here:

dumpimage and mkimage

First of all, you must create a new directory i.e. /home/a/boot and get into this directory.

Mount the hda1.dmp again and copy the contents of the ./boot directory into directory just created:

# mount -t ext3 hda1.dmp -o loop /mnt

# cp /mnt/boot/* /home/a/boot

The file that has to be used is named “zImage.tree.initrd”:

# dumpimage -l ./zImage.tree.initrd
Image Name: Linux-2.6.14.2
Created: Wed Jan 29 11:06:53 2020
Image Type: PowerPC Linux Multi-File Image (uncompressed)
Data Size: 4306459 Bytes = 4205.53 KiB = 4.11 MiB
Load Address: 00000000
Entry Point: 00000000
Contents:
Image 0: 3227782 Bytes = 3152.13 KiB = 3.08 MiB
Image 1: 1078663 Bytes = 1053.38 KiB = 1.03 MiB

This file consists of two images that must be extracted into separate files:

# dumpimage -l ./zImage.tree.initrd -o kernel.extracted


# dumpimage -l ./zImage.tree.initrd -o ramdisk.extracted -p 1
Now mkimage is used to generate two img files:

# mkimage -n '2.6.14.2 kernel' -T kernel -A ppc -O Linux -C none -a 0 -e 0 -d kernel.extracted kernel.img


Image Name: 2.6.14.2 kernel
Created: Sun Sep 6 10:22:17 2020
Image Type: PowerPC Linux Kernel Image (uncompressed)
Data Size: 3227782 Bytes = 3152.13 KiB = 3.08 MiB
Load Address: 00000000
Entry Point: 00000000

# mkimage -n '2.6.14.2 initrd' -T ramdisk -A ppc -O Linux -C gzip -a 0 -e 0 -d ramdisk.extracted ramdisk.img


Image Name: 2.6.14.2 initrd
Created: Sun Sep 6 10:22:28 2020
Image Type: PowerPC Linux RAMDisk Image (gzip compressed)
Data Size: 1078663 Bytes = 1053.38 KiB = 1.03 MiB
Load Address: 00000000
Entry Point: 00000000

Put these two img-files into a tftp-server file directory (I use a OpenTFTPServer for Windows that can
be started by a batch-script).

Access your brocade SAN switch through a serial line and select the command shell option:

1) Start system.
2) Recover password.
3) Enter command shell.

Option? 3

Boot PROM password has not been set.


=>

Configure an appropriate IP configuration

=> setenv ipaddr “192.168.50.103”


=> setenv submask “255.255.255.0”
=> setenv gatewayip “192.168.50.1”
=> setenv serverip “192.168.50.51” <= this is the address of your tftpserver

=> saveenv
=> Saving Environment to Flash...
Done
=>
Now it’s time to download this img-files

=> tftpboot 0x100000 kernel.img


Waiting for PHY auto negotiation to complete. done
ENET Speed is 100 Mbps - FULL duplex connection (EMAC0)
ppc_4xx_eth0 initialized
Using ppc_4xx_eth0 device
TFTP from server 192.168.50.51; our IP address is 192.168.50.103
Filename 'kernel.img'.
Load address: 0x100000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
##############################################
done
Bytes transferred = 3227846 (3140c6 hex)
=> imi 0x100000
## Checking Image at 00100000 ...
Image Name: 2.6.14.2 kernel
Image Type: PowerPC Linux Kernel Image (uncompressed)
Data Size: 3227782 Bytes = 3.1 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK

=> tftpboot 0x800000 ramdisk.img


ENET Speed is 100 Mbps - FULL duplex connection (EMAC0)
ppc_4xx_eth0 initialized
Using ppc_4xx_eth0 device
TFTP from server 192.168.50.51; our IP address is 192.168.50.103
Filename 'ramdisk.img'.
Load address: 0x800000
Loading: #################################################################
#################################################################
#################################################################
################
done
Bytes transferred = 1078727 (1075c7 hex)

=> imi 0x800000


## Checking Image at 00800000 ...
Image Name: 2.6.14.2 initrd
Image Type: PowerPC Linux RAMDisk Image (gzip compressed)
Data Size: 1078663 Bytes = 1 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Now boot your brocade switch from RAM:

=> bootm 0x100000 0x800000


do_bootm 171: load_addr 0x00800000 addr 0x00100000
do_bootm 174: ## Booting image at 00100000 load_addr 0x00800000 ...
Image Name: 2.6.14.2 kernel
Image Type: PowerPC Linux Kernel Image (uncompressed)
Data Size: 3227782 Bytes = 3.1 MB
Load Address: 00000000
Entry Point: 00000000
do_bootm_linux 565: ## Current stack ends at 0x1FAE4BB0 => set upper limit to 0x00C00000
## Loading RAMDisk Image at 00800000 ...
Image Name: 2.6.14.2 initrd
Image Type: PowerPC Linux RAMDisk Image (gzip compressed)
Data Size: 1078663 Bytes = 1 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
## initrd at 0x00800040 ... 0x009075C6 (len=1078663=0x107587)
Loading Ramdisk to 1f9dc000, end 1fae3587 ... OK
initrd_start = 1f9dc000, initrd_end = 1fae3587
## Transferring control to Linux (at address 00000000) ...
Start Autoneg
Installing Linux 2.6 Kernel
Attempting to find a root file system on hda2...
INIT: version 2.78 booting
Bypassing firmware validation.
INIT: Entering runlevel: 3
Enabling FOS failure detection feature
Starting Fabric OS Services...
FIPS off, RRD...

….

Login as root

Now change the “magic numbers”:

# mapinst /mnt/boot/zImage.tree.initrd
Map file starting LBA: 0x19ad08
# mapinst /mnt/boot/zImage.tree.initrd
Map file starting LBA: 0x9c067
# bootenv OSLoader "ATA()0x19ad08;ATA()0x9c067" <= hex numbers from output above!

# reboot

The boot process starts now regularly from your new CF drive.

You might also like