You are on page 1of 50

October 30, 2000

Linux Development Environments

springboard/fabos/doc/specs/linux_devenv.fm rev. 0.7 (10/02/2000)

Brocade Communications Systems, Inc. - confidential

1

October 30, 2000

Revision History

Version 0.1 0.2

Date 6/23/00

Modified by Zheng Diao Jessica Chen Initial draft.

Comment 1) Added extra information found for the Linux installation procedures. 2) Added installation options and telnet command access information into the chapter 3. 3) Added “Troubleshooting” section for build/installation/command.

6/27/00

0.3

6/28/00

Jessica Chen

Added the following areas: 1) more tips for fabos developments/installations. 2) more details on “make” options and supporting scripts. 3) DXM commands

0.4 0.5 0.6

7/13/00 8/11/00 9/01/00 9/15/00

Jessica Chen Jessica Chen Jessica Chen

Added more information in fabos build environments. Added more tips to solve various problems which were encountered by many developers. 1) Added more inputs from Webtool group. 2) Added Grant Erickson’s cross-compilation setup information into the Chapter 4.

0.7

10/02/00

Jessica Chen

1) Modified linux 2.4-test2 loading procedures. 2) Modified based upon new IT network setup (temporary solution). 3) Added George’s linux remote printer setup tips. 4) Added module compilation example.

2

Brocade Communication Systems, Inc. - confidential

October 30, 2000

CHAPTER 1

RedHatLinuxInstallation for Linux PC

1.1. Introduction This chapter serves as a supplementary to the RedHat installation manual. The main purpose of this document is to provide the additional installation data (not from RedHat) and exercise tips which have been collected by the Linux FABOS porting team members. After you install the RedHat linux, you will need to make a new kernel that has the same version as the linux development team (currently, we are using linux2.3.99pre3). LILO, the Linux loader, allows you to boot from any versions of OS you have installed. 1.2. Survivors who originally contribute to this document:
Zheng Diao Grant Erickson David Adair Nhan Pham Jessica Chen Jacqueline Yu

If you run into any problems during installation, check the Problems and Fixes section first. If your problem is not listed, you may consult the survivors listed here, in the reserve order of the list. If you found the fix for your problem, please update the Problems and Fixes section.

Brocade Communication Systems, Inc. - confidential

3

RedHat Linux Installation for Linux PC

October 30, 2000

1.3. Installation Steps 1.3.1. Partition and Get device Information. 1. Request a hostname and IP address for your new Linux machine first. 2. Install NT or Windows 98 if your machine did not come with it. You need Windows to obtain device driver information for setting configuration linux kernel configuration parameters (e.g. Ethernet card, mouse, video card driver, etc.). 3. Logon to your PC, and delete all partitions except the system partition using disk administrator program. You should keep at least 900MB “Unused” (doesn’t belong to any partition) disk spaces to install Linux. Write down the type of the mouse (e.g. Logitech PS/2), Video Card type, and Ethernet card type (e.g. 3com Fast-Ethernet 3c59X) If you already have NT or Windows installed on the machine IT gave to you and it’s not properly partitioned (e.g. C drive already occupies the entire disk space), you will need to reinstall NT or using some utility tools to re-partition it. Before you reinstall the system, be sure back up system configuration parameters/types, like ethernet driver and video card driver. During the installation, make the C: drive the installation drive and make C: a FAT based file system (don’t use NTFS). Available utility tools for re-partitioning are Partition Magic and System Commander (David Adair has a copy of the latter utility). 1.3.2. Install Linux kernel. 1. Insert the RedHat boot disk and Installation CD 2. Use TEXT mode installation 3. Select GNOME workstation type installation 4. You might get some sort of partition error(like mounting, not enough space, etc.). If so, go back to NT and delete none-system partitions.You should not delete the partitions during linux installation, because you might erase NT from your disk. and it’s much more trouble to install NT after you installed Linux.(if you install NT after linux, you will need to re-install Linux again so LiLo will recognize the NT, before NT can be booted.). If you insist to install Linux before installing NT (assuming you know the mouse, video

4

Brocade Communication Systems, Inc. - confidential

October 30, 2000

card, ethernet type), don’t use up all the partitions spaces. Leave around 500MB for NT. 5. Be careful about the Mouse selection. Your mouse might be a PS/2 type(the connector is round shape) or Serial type(the connector is squire shape). 7. Monitor: If it’s a Dell computer, 17 inch monitor, i use Dell Ultrascan 17FS-LR. Try as many configuration as possible till you find the one that you “looks right”. For my computer, I have been lucky that the RedHat CD contains the driver for my video card. If you can’t get a nice screen resolution, that’s probably because the RedHat CD don’t have the driver for your video card. You will need to download the video driver from the manufacturer’s website, and install it after you complete the installation process. Most likely, you have i810 video card, then definitely you need to download two images from the vendor. A complete procedures are listed in the Problems and Fixes section. If you need any further assistance, please check with Jacqueline, David Adair and Thio who have in-depth knowledge on the Video driver installation. 1.3.3. Configure your linux 1. Login as root. 2. Edit the system configuration files: /etc/sysconfig/network file: (case sensitive) NETWORKING=yes FORWARD_IPV4="false" HOSTNAME="your machine’s hostname. e.g. swd100" GATEWAY="192.168.198.1" (consult IT to find out your subnet number) GATEWAYDEV="eth0" NISDOMAIN =”brocade.com” YPSERVER=nisslave1 /etc/sysconfig/network-scripts/ifcfg-eth0 IPADDR=192.168.198.xxx 3. Obtain auto mount support files to setup auto-mounted home directory: (Thank Grant for giving the following information). 1) #ftp ftp.freesoftware.com

Brocade Communication Systems, Inc. - confidential

5

RedHat Linux Installation for Linux PC

October 30, 2000

2) user> <RETURN> 3) passwd> <RETURN> 4) ftp> cd /pub/linux/redhat/old-releases/redhat-6.1/i386/RedHat/RPMS (the reason why you should not do “cd /pub/linux/redhat/current/i386/ RedHat/RPMS” is that we found the auto mount of the newest Redhat don’t work too well. the most recent RedHat is version 6.2). 5) ftp> bin 6) frp> mget autofs-*.rpm 7) ftp> bye 8) #rpm -ivUh autofs-*.rpm 9) #vi /etc/auto.master add the following lines: /import auto.import /home auto.home (comment this line out temporarily if you have one before) /users auto.users NOTE: Item #9 contains temporary modifications to accomodate the current network configurations. It can be different once the “auto mount” issue solved. If you run into home directory not found problem, try to following steps: . %df ${USER} => find out where is your home directory resides in SunOS machine . su => become the superuser in your linux PC . mount nsf05:/export/blue/... /home 4. #/sbin/chkconfig autofs on 5. Turn on NIS daemon process for traditional NIS support (/etc/yp.conf file is for NYS support): #/sbin/chkconfig ypbind on 6. Setup local shells symbolic links #cd /usr/local/bin #ln -s /bin/bash bash #ln -s /bin/tcsh tcsh 7. Support CVS commit: add the following soft link in /usr directory; otherwise “cvs commit” execution will fail.

6

Brocade Communication Systems, Inc. - confidential

October 30, 2000

#ln -s /usr /usr/gnu 8. Final files checking before rebooting the system (case-sensitive): a) /etc/hosts 127.0.0.1 localhost 192.168.1.10 mail01 192.168.126.100 nisslave1 192.168.198.xxx swdxxx.brocade.com swdxxx b) /etc/resolv.conf search brocade.com nameserver 192.168.126.60 nameserver 192.168.126.61 c) /etc/yp.conf (for modern NYS support, one line only) ypserver nisslave1 d) /etc/conf.modules alias eth0 3c59x alias char-major-10-175 agpgart => only for i810 video card support 9. #reboot. You should be able to login as your regular user name (e.g.. zdiao). 10. Install modules support: login as root /usr/local> mkdir modules; cd modules /usr/local/modules> cp -r /home/zdiao/alibaba/v2.2b . /usr/local/modules> ln -si v2.2b latest /usr/local/modules> cd /usr/local /usr/local> ln -si /import/apps/modulefiles modulefiles /usr/local> cd /usr/local/man /usr/local/man> ln -si ./usr/local/modules/latest/man/man1/module.1 man1/ /usr/local/man> ln -si /usr/local/modules/latest/man/man4/modulefile.4 man4/ 1.4. Questions , Problems and Fixes 1) I don’t want to delete my old stuffs on my PC. Likely, when you install linux, you may accidently delete your old stuffs. A solution used by Thio is to buy a new hard disk, and install your linux on the new hard disk. A 1GB disk is sufficient.

Brocade Communication Systems, Inc. - confidential

7

RedHat Linux Installation for Linux PC

October 30, 2000

2) Why the screen resolution doesn’t look right? Here is a section written by David Adair about his experience installing Intel 810 video driver: # su root (login as the root) # mkdir i810 (/root/i810) # cd i810 # tar -xvf /dev/fd0 (Intel driver disk) If you don’t have the driver disk, please ask for further information on required tar files which had been downloaded in-hose before. # tar -zxpvf XFCom-i810-glibc2.1-1.0.0.tar.gz # ./INSTALL # tar -zxpvf I810Gtt-0.1-5.src.tar.gz # vi /etc/conf.modules Add the following line: alias char-major-10-175 agpgart # make If the following errors encountered, then fix the Makefile first (see the “rebuild i810 after installation” section for procedures): KERNEL_VERSION_MAJOR=2.3 agpgart.o not yet available for non-2.2 kernels exit -1 agpgart.o not yet available for non-2.2 kernels make: *** [agpgart.o] Error 255 # make install (create /lib/modules/2.3.99-pre3/misc directory, add agpgart.o into /lib/modues/2.3.99-pre3/modules.dep file load agpgart.o file into /lib/modules/2.3.99-pre3/misc load agpgart.h into /usr/local/include create /dev node # /sbin/insmod agpgart => load module # /sbin/lsmod => check the module loading status # vi /etc/X11/XF86Config Add the following two sections:

8

Brocade Communication Systems, Inc. - confidential

October 30, 2000

Section "Device" Identifier "i810" EndSection Section "Screen" Driver Device Monitor Depth Modes ViewPort EndSection ** If you have different monitor type, such as sun, you need to adjust the “Subsection” data to match its specifications. Most likely, you need to change the “Depth” and “Modes” fields. An example is listed as follows: Section “Screen” Driver Device Monitor Depth Modes ViewPort EndSubsection EndSection # ln -sf /usr/X11R6/bin/XFCom_i810 /etc/X11/X # startx -- -bpp 16 (or bpp 24) 3) rebuild i810 after installation “svga” “i810” “sun “ 24 “1280x1024” “1024x768” “640x480” “800x600” 00 "svga" "i810" "Dell Ultrascan 15LR" 16 "1024x768" 00

Subsection "Display"

EndSubsection

Subsection “Display”

Brocade Communication Systems, Inc. - confidential

9

RedHat Linux Installation for Linux PC

October 30, 2000

To have the i810 run in 2.3.99 version, rebuild is needed; otherwise two errors will occur: a) Rebuild i810 driver will get the following errors: KERNEL_VERSION_MAJOR=2.3 agpgart.o not yet available for non-2.2 kernels exit -1 b) Insert module will get the following errors: /lib/modules/2.3.99-pre3/misc/agpgart.o: kernel-module version mismatch /lib/modules/2.3.99-pre3/misc/agpgart.o was compiled for kernel version 2.2.12-20 while this kernel is version 2.3.99-pre3. To fix these errors, first modify the Makefile by removing: all references to “!= 2.2” exit” lines Next, there are two way to load the module after this fix: a) temporary solution (until reboot): make; make install; /sbin/insmod agpgart or b) permanent solution (part of boot sequences): cp agpgart /lib/modules/2.3.99-pre3/misc vi /etc/rc.d/rc.sysinit Added the following lines: # Load graphic module for i810 /sbin/insmod agpgart shutdown -r now 4) Cannot remote login %rlogin swdxxx -l $USER Sorry, this system is engaged by user: $USER. Connection closed. Solution: First, check NIS/NFS database related files: /etc/hosts, /etc/ resolv.conf, and /etc/conf.modules. It is highly possible that these files did not contain the correct data, such as: /etc/host 192.168.68.xxx localhost.localdomain

10

Brocade Communication Systems, Inc. - confidential

October 30, 2000

/etc/resolv.conf search localdomain Next, check whether all automounter processes are up by typing: #ps -auxw | grep auto root root root 470 0.0 0.4 1192 556 ? S 08:54 0:00 /usr/sbin/ automount --timeout 60 /misc file /etc/auto.misc 475 0.0 0.4 1280 584 ? S 08:54 0:00 /usr/sbin/ automount --timeout 60 /import yp auto.import 484 0.0 0.4 1280 584 ? S 08:54 0:00 /usr/sbin/ automount --timeout 60 /home yp auto.home

Final, check the conflict IP address. Yes, the IP address of “swdxxx” has been assigned. 5) No directory /home/xxx after logging into the system The auto mounter did not run the auto.home file. Make sure you see the automounter is running appropriately: root 484 0.0 0.4 1280 584 ? S 08:54 0:00 /usr/sbin/ automount --timeout 60 /home yp auto.home

6) X won’t start for my user name: The old orbit session might be holding you from running X window. Remove the obsolete session data by typing: #su #cd /tmp #rm -rf orbit-<your name> #exit you can set up your printer on Linux: 7) How to setup your remote printer. a) Login as root, Start X windows, and type the following from a terminal window: # su -c printtool b) Select "Remot Unix (lpd) Queue" on the dialog box, click "OK" c) Set the following value on the next dialog box: Names: prt (your printer name, say "prt") Spool Directory: /var/spool/lpd/lp

Brocade Communication Systems, Inc. - confidential

11

RedHat Linux Installation for Linux PC

October 30, 2000

File limit in Kb: 0 Remote Host: 192.168.128.64 Remote Queue: lp Input Filter/Select: Printer Type: PostScript Printer Letter Resolution: 300x300 Papersize:

12

Brocade Communication Systems, Inc. - confidential

October 30, 2000

CHAPTER 2

Building/Installing Linux Kernel From Source Code

2.1. Introduction This document serves as a step-by-guide for building a new linux kernel on a I386 computer. This part is for upgrade your kernel version only. Do not proceed until you finished CHAPTER 1 “Red Hat Installation”. Many instructions here are copied from Grant’s instruction on building a Linux kernel on a PPC, with some modification. Currently, we are using linux-2.3.99-pre3 as the kernel platform for development. In the future, we will move to linux 2.4. When Red Hat release linux2.4, we shouldn’t need to build linux kernels by ourselves. In general, there are two approaches for building the kernel. If you get the linux source code from the CVS tree, you will build it in your $USER/springboard/linux directory. On the other hand, you can directly download the linux source from FTP site, and you should build it at the /usr/src/linux directory as root. The second approach is easier and more flexible. Currently, since linux-2.3.99-pre3 is not yet added to the CVS tree, you should use the second approach: building the kernel at /usr/src directory as root. I will document both approach here. 2.2. Get the source files 2.2.1. For building linux-2.3.99-pre3 from /usr/src 1. login as root

Brocade Communication Systems, Inc. - confidential

13

Building/Installing Linux Kernel From Source Code

October 30, 2000

2./root>cd /usr/src 3. copy the compressed source code from Zheng’s public directory. You may also download it from ftp.kernel.org (The location is /pub/linux/kernel/v2.3/). /usr/src>cp/home/zdiao/alibaba/linux-2.3.99-pre3.tar.gz. 4. remove “linux” softlink or rename “linux” directory, if one exists. /usr/src/> ls -l lrwxrwxrwx 1 root drwxr-xr-x 3 root drwxr-xr-x 7 root /usr/src/> rm linux root 12 Mar linux -> linux-2.2.5 root 1024 Mar linux-2.2.5 roo 1024 Mar redhat

5. uncompress. the files will be uncompressed to “linux” directory /usr/src/> tar zxvf linux-2.3.99-pre3.tar.gz 6. rename the linux directory and create a softlink “linux” pointing to it. /usr/src/> mv linux linux-2.3.99-pre3 /usr/src/> ln -s linux-2.3.99-pre3 linux 7. change owner and group of linux-2.3.99-pre3 to root /usr/src/> ls -l linux-2.3.99-pre3 drwxr-xr-x 14 XrandyfX console 1024 Mar linux-2.3.99-pre3 /usr/src/> chown -R root: linux-2.3.99-pre3 8. (optional) /usr/src/> rm linux-2.3.99-pre3.tar.gz /usr/src/> ls -l lrwxrwxrwx 1 root root 17 Apr linux -> linux-2.3.99-pre3 drwxr-xr-x 14 root root 1024 Mar linux-2.3.99-pre3 9. make sure you have the following softlink set up correctly: /usr/src> ls -l /usr/include/linux

14

Brocade Communication Systems, Inc. - confidential

October 30, 2000

lrwxrwxrwx 1 root root /usr/include/linux -> ../src/linux/ include/linux 2.3. For building linux at /home/$USER/springboard/linux The following procedures are an example for loading linux_2_4_0-test2. IMPORTANT: Please don’t state a spcific linux version unless you are intention to do so. 1. >cd ~$USER 2. /home/zdiao>tcsh 3. /home/zdiao>module unload VxWorks/5.3 . If it compains “module” command not found, do “source /home/gerickso/.cshrc“ 4. /home/zdiao> module load Springboard 5. /home/zdiao>cvs co -r linux_2_4_0-test2 linux (This compand will check out linux kernel source codes from the CVS. You may want to remove the old springboard directory first). Verify the linux version installed by reading the top 4 lines inside the ${HOME}/springboard/ linux/Makefile file: VERSION = 2 PATCHLEVEL = 4 SUBLEVEL = 0 EXTRAVERSION = -test2 ** You should only use “cvs co linux or cvs co -Q linux” to get the latest version. ** If you previously specified an explicit (i.e. "sticky") release (e.g. cvs co -r linux_2_3_45) then you can do updates or checkouts until the next millenium and you’ll still keep getting branch ’linux_2_3_45’. You need to give the "-A" option to ’update’ clear the "sticky" branch setting (Watch out: cvs update can merge files for you during the process): cvs update -A linux or cvs update -AQ linux ** If you still see the following 4 lines, that means your update did not work. ““ VERSION = 2 PATCHLEVEL = 3

Brocade Communication Systems, Inc. - confidential

15

Building/Installing Linux Kernel From Source Code

October 30, 2000

SUBLEVEL = 45 EXTRAVERSION = 6. Log into your Linux machine (e.g. rsh swd100) 7. su 8. /root> cd /usr/src 9./usr/src> mkdir linux-2.3.45 10. /cd linux-2.3.45 11. cp -pr /home/$USER/springboard/linux/include . (replace $USER with your username) 12. rm ../linux 13. ln -si linux-2.3.45 linux 14. exit 2.4. Build the Kernel 2.4.1. Configure the make process. 1. For building linux-2.3.99-pre3 at /usr/src as root: /root>cd /usr/src/linux For building linux-2.3.45 at /home/$USER/springboard/linux as $USER /home/zdiao> cd /home/$USER/springboard/linux 2. >make config This command will let you config the options that will be build into your kernel. Before you proceed, make sure you know the manufacture and type of your ethenet card. For example, 3com 3c59x, intel i82557, etc. Select defaults except: Processor family: Pentium/TSC Symmetric multi-processing support: NO PCMCIA/CardBus Support: NO Ethernet (10 or 100Mbit) : YES (Choose your ethernet manufacturer and type for the list here): i.e. For intel i82557, use EISA, VLB, PCI and on board controllers: Yes (default)

16

Brocade Communication Systems, Inc. - confidential

October 30, 2000

i.e. For 3com 3c59x, use 3COM cards: Yes 3c590 series: Yes EISA, VLB, PCI and on board controllers: NO Fibre Channel diver support (CONFIG_NET_FC): Yes When you done this step, you should have the following softlink setup automaticly. If you didn’t, that must because you choose the wrong processor family. /usr/src/linux> ls -l include/asm lrwxrwxrws 1 root root asm->asm-i386 or if you are building from springboard directory ~/$user/springboard/linux> ls -l include/asm lrwxrwxrwx 1 zdiao bin asm->asm-i386 3. /usr/src/linux>make dep (or /home/$user/springboard/linux> make dep) “make dep” will generate two files: .depend and .hdepend. If you did “make dep” before, make sure you delete those files before execute “make dep”. 4. /usr/src/linux> make bzImage (or ~$USER/springboard/linux> make bzImage) This command will generate two files. linux/arch/i386/boot/bzImage, which is the executable of the linux kernel, and /usr/src/linux/System.map 5. /usr/src/linux> make modules This command will create a directory called “modules” 6. /usr/src/linux>su (Do this only if you are building at the springboard directory.) 7. /usr/src/linux>make modules_install Before you do this command, check /lib/modules. If this is NOT the first time you try to install this version of linux, you should remove the old directory(i.e. 2.3.99-pre3) that was created. 2.4.2. Install the Kernel 1. copy the binaries to the /boot directory /usr/src/linux>cp arch/i386/boot/bzImage /boot/vmlinuz-2.3.99-pre3

Brocade Communication Systems, Inc. - confidential

17

Building/Installing Linux Kernel From Source Code

October 30, 2000

/usr/src/linux> cp System.map /boot/System.map-2.3.99-pre3 2. Create softlink /usr/src/linux> cd /boot /boot> rm System.map (this remove the old softlink.) /boot> ln -s System.map-2.3.99-pre3 System.map 3. Edit the lilo entries. Doing this will enable you to boot into different OS(Windows, different version of linux). You should never remove the old version of linux you had from the lilo entries because you want to be able to go back to your old linux if the installation of your new linux failed or not complete. The file /etc/lilo.conf is a text files where you tell the LILO loader what OS to load. You should only add to it, and never remove or change any lines. If you look at lilo.conf, you should have a few lines specifies the information of the current version of linux you are running. you should just copy those lines, and paste it, and only change the binary file name and label. The following is a “lilo.conf” file example which will boot from the latest revision as the default bootstrap: /boot> vi /etc/lilo.conf:
boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=50 default=linux (new linux) image=/boot/vmlinuz-2.3.99-pre3 label=linux root=/dev/hda7 (or whatever you had) read-only image=/boot/vmlinuz-2.2.5-15 label=linux-2.2 root=/dev/hda7 (system dependent). read-only

(old linux)

other=/dev/hda1 label=dos

18

Brocade Communication Systems, Inc. - confidential

October 30, 2000

table=/dev/hda

When you reboot your machine, you should see on the screen a line “LILO:” (Each letter that printed represent the successful booting of different stages). If you do a “tab” as soon as you see all letters of LILO, you will see a list of OSes that can be boot(i.e. Dos, Linux, Linux2.3.99, or whatever you had in your lilo.conf file). Type a name to load that kernel, otherwise the default kernel will be loaded(the default kernel is the first entry you put in your lilo.conf file). 13. /boot>/sbin/lilo (This will activate the changes to lilo.conf file). Make sure it really takes effect by seeing: Added linux * Added linux-2.2 Added dos 14. #reboot Note: If you see “APM failed” during rebooting, that’s normal, because you didn’t build APM module with the default configuration. If you see “eth0 failed”, that’s probably because you entered the wrong ethernet driver during the “make config” step. Congratulation! you have became one of the survivors! Please add or modify things you found during this installation exercise into the associated problems and fixes or tips areas to benefit others.

Brocade Communication Systems, Inc. - confidential

19

Building/Installing Fabos Software

October 30, 2000

CHAPTER 3

Building/Installing Fabos Software

3.1. Introduction This chapter describes the Springboard/fabos Makefile options and software building/installing procedures under the “cvs” source control system in addition to telnet commands access scheme. Please also see /home/$user/springboard/fabos/ doc/README file for detailed information on the Fabos source tree. 3.2. Fabos Source Codes For the first time user, Fabos source codes have to be checked out before proceeding other steps. /home/$user> cvs co -P fabos This command will check out all fabos source codes into /home/$user/springboard/ fabos/ directory. The “-P” option will purge all empty directories. Many problems can cause it. Possible problems are listed as follows: Case 1: If you fails on this first command because of permission problem, please check your group id by typing: %groups other sw-team-1 linux-team You must to have “sw-team-1” to access some CVS commands and “linux-team” to receive Linux project related mails.

20

Brocade Communication Systems, Inc. - confidential

October 30, 2000

Case 2: If you fails on this first command beacuse of “Exec format error”, please check your file searching path ($PATH): %which cvs /usr/bin/cvs %echo $PATH xxx Most likely, your path is only good in Solaris system. You can avoid this problem by executing cvs command in Solaris with module crosscompilation support or changing your file searching path setup after logining into the Linux machine. NOTE: Please see Chapter 4 for cross-compilation setup. After this step, any cvs file changes can be previewed by typing: /home/$user> make check To obtain the latest changes by typing: /home/$user> cvs update 3.3. Making Fabos software If your PC is not Dell base machine, PCI interrupt setup might not be the same as stated in here. Please consult with Vince or Grant for correct setup. The following statements indicate correct interrupt setup in Dell machine (springboard/cvs/fabos/src/sys/dev/port/sample/loom_pci.c): > char *loom_int = "C"; > int loom_irq = 5; Please also make sure the first jumper, the interrupt channels to control the first PCI slot, in your loom card is set in the “C” position (totally, there are four channels: A, B, C, and D). This setup is system dependent; in other words, the final released product can have different settings.

Brocade Communication Systems, Inc. - confidential

21

Building/Installing Fabos Software

October 30, 2000

3.3.1. Software Build Procedures

• Modify /etc/group to contain 4 required groups first; otherwise installation will
fail due to undefined group names: swt_root, swt_mfg, swt_adm, swt_usr. swt_root::600:root swt_mfg::601: swt_adm::602:xxx <== add your user name if you are an administrator. swt_usr::603: You can log out and log in, then verify this change by typing: %groups => check whether “swt_adm” shown: bin swt_adm sw-team ulysses linux-team or try it out with the following commands: #newgrp swt_adm #groups swt_adm, ... If group add fails, the following error will be reported: newgrp: No such group.: Resource temporarily unavailable

• Build/Install the Fabos software
> cd ~${USER}/springboard/fabos/src > make clean > make > su # make install # cd $SWITCHHOME/bin # rc.switch start

• Install all the Fabos software - root user
#cd ${USER}/springboard/fabos/src #make install_all

22

Brocade Communication Systems, Inc. - confidential

October 30, 2000

This “Install_all” option will also load daemons into the system boot area for supporting automatic invocations. This action won’t take effect until you reboot the system. And this option is required once only. Note: If you are a device driver developer, you might like to run “make install” instead of “make install_all” and then manually load all device modules.

• Manage the Fabos software driver modules installation
There are three make options which can be used to assist your modules loading process. #cd ~${USER}/springboard/fabos/src #make modules => load modules #make rm_modules => unload modules #make ls_modules => list modules loaded

• Verify DXM daemons running status
> cd ${SWITCHHOME}/sbin/rc.switch > rc.switch status Usage: switch {start|stop|status|restart} {268}: rc.switch status Status of switch modules: Module Size Used by loom-module 79112 0 (unused) fc-module 57028 3 port-module 17540 0 [loom-module fc-module] switch-module 40716 3 [loom-module fc-module port-module] fciu 10380 246 [loom-module fc-module port-module switch-module] portlog-module 52396 0 [loom-module fc-module port-module switchmodule fciu] loom-fixup 3420 0 (unused) agpgart 4620 1 <=== i810 driver Status of DXM services: /usr/local/switch/sbin/dxmd (pid 2089) is running... /usr/local/switch/sbin/zoned (pid 2139 2138 2137 2136) is running... /usr/local/switch/sbin/fabricd (pid 2143 2142 2141 2140) is running...

Brocade Communication Systems, Inc. - confidential

23

Building/Installing Fabos Software

October 30, 2000

/usr/local/switch/sbin/fspfd (pid 2147 2146 2145 2144) is running... /usr/local/switch/sbin/nsd is stopped <=== problem! ** See 3.5 “Troubleshooting” section for helps. 3.3.2. Make Options There are various make options which can be used to assist your developments. They are listed as follows:

• • • • • • • • • • • • • • •

all clean check install install_all daemons modules services telnets rm_libs

: the main target : source codes clean up : check file change status : install targets into being released areas : install targets and more for final product : setup daemons : load device modules : setup /etc/services file : load telnet commands : remove share libraries installed

uninstall_all : uninstall previously installed targets rm_daemons : remove daemons loaded rm_modules : unload driver modules rm_services : remove /etc/services change rm_telnets : remove all telnet command symbolic links : list all modules loaded

• ls_modules

3.3.3. Execution Scripts These BASH scripts are mainly for internal developers use. Don’t execute them directly. If new commands are created, then include them inside the “load_remote.sh” script file. NOTE: If the command also exists in vxWorks product, please add two entries for it to cover upper and lower cases support. For any new linux command, only one alllower-case command syntax will be supported. location: springboard/fabos/bin

24

Brocade Communication Systems, Inc. - confidential

October 30, 2000

load_all_modules.sh load_module.sh unload_all_modules.sh unload_module.sh load_remote.sh load_services.sh rc.switch 3.3.4. Switch Home

- load all device driver modules - load one module - unload all device driver modules - unload one module - load all remote telnet command soft links - load TCP service data - control module/daemon invocations

The $SWITCHHOME (/usr/local/switch) contains the following directories: No
1 2 3 4 5 6

Name
bin lib man modules sbin share

Description
user level commands, e.g. fabricShow, nsShow, etc... switch runtime execution share libraries, e.g. libiot.so, etc. user man page device driver modules, e.g. fc-module.o, switch-module.o, etc... superuser level commands, daemons, e.g. dxmd, nsd, configure, setDbg, etc... share scripts/executable programs (indirectly executed by dxm.remote) and database files, e.g. dxm.remote, configure, spinSilk, configure.txt, etc...

3.4. Telnet Commands 3.4.1. Command Access At this point, you are ready to access the installed switch with FABOS software support. Before exercising telnet commands, please make sure the following procedures are completed and validated if you are the first time user (also see the “Switch File Architecture” section in the DXM design specification for usage details: springboard/fabos/doc/specs/dxm_design.fm):

• Make sure the /etc/group file contain all groups for command access permission
setup: swt_root::600:root swt_mfg::601: swt_adm::602:xxx <== add your user name if you are an administrator.

Brocade Communication Systems, Inc. - confidential

25

Building/Installing Fabos Software

October 30, 2000

swt_usr::603: You can log out and log in again to verify this change by typing: %groups => check whether “swt_adm” shown: bin swt_adm sw-team ulysses linux-team

• Modify startup script file to add “SWITCHHOME” environmental variable.
The SWITCHHOME default value is /usr/local/switch. The startup script file can be .profile, .bash_profile, .login or .cshrc. It depends on the usr’s preference and what “SHELL” got configured.

• Modify root’s PATH to include “$SWITCHHOME/sbin:$SWITCHHOME/bin”
for accessing switch commands. This is just for your convenience. In most cases, we are running the switch in “root” user account during the development stage for easy command access. In general, the /root directory is the “root” home. Please double check it in the /etc/ passwd file. root:Frnt0q/1.dqPE:0:0:root:/root:/bin/bash ^^^^^ root user home %ls -la /root It is highly possible that the “.bashrc” is the root startup script file. 3.4.2. Command Types All telnet command can be classify to be the following categories based upon their access permissions: User Commands These commands was placed in $SWITCHHOME/bin directory. They are soft links to the $SWITCHHOME/share/dxm.remote executable program. Group id: swt_usr Permission: 755, for any user Administration Commands These commands are placed in $SWITCHHOME/sbin directory. They are soft links to $SWITCHHOME/share/dxm.remote executable program which might not be the only program being executed. The actual program or script must have the “swt_adm” group id set.

26

Brocade Communication Systems, Inc. - confidential

October 30, 2000

Group Id: swt_adm Permission: 770, only swt_adm group member can access them. Manufacture Commands These commands are placed in $SWITCHHOME/bin and $SWITCHHOME/sbin directories depending on their scopes. They are soft links to $SWITCHHOME/ share/dxm.remote executable program. Similar to swt_adm commands, the “dxm.remote” control program might not be the only program being executed. The actual program or script must have the “swt_mfg” group id set. To allow “swt_mfg” group members to access all commands, it is required to add the “swt_mfg” member user id into the “swt_adm” group in /etc/group database file. Group Id: swt_mfg Permission: 770, only the swt_mfg member can access them. 3.4.3. Command Availability To verify whether the switch is ready or not, please try the following commands:

• • • • •

switchShow nsShow fabricShow zoneShow uRouteShow

- switch status - Name Server - Fabric Server - Zone Server - FSPF Server

Command execution status: value = 0 => success value = 0 = 0x7 => error happens The “commstatsshow” command can be used to see what kind of error happens. For instance, “0x7” indicates that the server is not available; in other words, the server daemon is not up. %commstatsshow Communication status codes: Code= 0: SUCCESS Code= 1: ACCEPTed Code= 2: REJECTed Code= 3: TERMINATed -> okay -> connection accepted -> connection rejected -> connection terminated

Brocade Communication Systems, Inc. - confidential

27

Building/Installing Fabos Software

October 30, 2000

Code= 4: BUSY Code= 5: REQUEST FULL Code= 6: ADDRESS IN USE Code= 7: NOT AVAILABLE Code= 8: EXECUTION ERROR Code= 9: ARGUMENT ERROR Code= 10: PIPE ERROR Code= 11: TIME OUT Code= 12: NO MEMORY Code= 13: I/O ERROR Code= 14: MSG TOO LONG Code= 15: COMM ERROR Code= 16: UNKNOWN 3.5. Troubleshooting

-> client is busy -> server cannot serve more clinets -> server already up -> service client is not up -> cross-function execution fails -> cross-function input argument error -> communication link broken - communication time out occurs - out of memeory - any I/O device/address error - DXM message data is too long - other communication error - unknown error

• install: invalid group ‘swt_root’
Make sure /etc/group file has been modified to contain all groups.

• fail on bring up a DXM client process. Four possible errors can occur:
“fails to establish USER communication” => DXM server is not up “fails to establish I/O communication” => module driver open fails ”fails to establish portLog communication” => portlog driver open fails “fails to establish ASP initializations” => Application initialization routine fails

• nsshow: command not found
Make sure searching PATH has been setup correctly.

• configure: permission denied
Make sure your account has the appropriate group id set. If you have the correct group id set but this command still fails, then check your PATH setting. In linux OS, failing to find a command, the system will report the same error message. Don’t get confused by this message.

• daemon crashes - e.g. fabricd or fspfd

28

Brocade Communication Systems, Inc. - confidential

October 30, 2000

Make sure your loom card have the correct PCI interrupt request line set accordingly; otherwise you will get the “NULL” pointer reference message reported by the kernel.

• fail on device modules installation
Errors reported during the module laoding time by typing: rc.switch start or manually load or automatically load by kernel: /usr/local/switch/modules/fc-module.o: unresolved symbol unregister_fcdev /usr/local/switch/modules/fc-module.o: unresolved symbol init_fcdev /usr/local/switch/modules/fc-module.o: unresolved symbol register_fcdev Causes: kernel did not get configured with the following option: Fibre Channel diver support (CONFIG_NET_FC): Yes You need to re-conchefigure the kernel. Or you can fix it with quick and not quite “dirty” way: *** Please DON”T check in both Makefile and types.c files *** 1) cd ~springboard/fabos/src/sys/dev/fcph 2) emacs Makefile: remove t_ip.c from the following target: TYPE_SRCS= t_bls.c t_ct.c t_els.c t_sw.c 3) emacs types.c: remove ip_init references extern int ip_init(void); <=== remove this line static struct type_init init_funcs[] = { { "Basic Link Services",bls_init }, { "Extended Link Services",els_init }, { "Internet Protocol Services",ip_init }, <== remove this line { "Common Transport Services",ct_init }, { "Switch Fabric Services",sw_init }, { NULL,NULL } };

• compilation fails on “undefined data types, definitions, etc..”
Two possible causes are either you have NO src/include/sys soft link or you have a directory instead of a soft link.

Brocade Communication Systems, Inc. - confidential

29

Building/Installing Fabos Software

October 30, 2000

Frist, if many compilations complain undefined types (or definitions etc), then you might not have this soft link created. To solve it, do "make" from the toplevel src directory: fabos/src which will automatically create this link for you. Second, if you have the sys directory instead of link, then you will ecnounter the same problem like the first case. And it can be worse becasue whatever you change is making no impact. How can this soft link become a directory? It is very simple, if you copy the fabos to different platform directories for systemdependent compilations, such as fabos_386 and fabos_ppc. Then, this soft link will become the directory without your notice. ... 3.6. Tips for frequently ask questions during developments:

• how to rename a file in cvs?
%mv old_file new_file %cvs remove old_file %cvs add new_file %cvs commit -m “Renamed old_file to new_file” old_file new_file

• why cvs commit execution fails?
%cvs commit -m “my new version” file.c => get the following errors: cvs commit: cannot find pre-commit filter ‘/usr/gnu/lib/cvs/contrib/commit_prep’: No such file or directory cvs commit: Pre-commit check failed Errors are coming from missing /usr/gnu softlink (see Configure the linux section again). To solve it typing: %cd /usr %ln -s /usr gnu

• how do I know which command is available in the current on-going development environments? Check springboard/fabos/doc/specs/commands.txt file.

• how to turn on debugging levels for DXM clients/server
Run the following commands to turn on debugging messsages: %setdbg FABRIC 1 (Usage: setdbg module_name level)

30

Brocade Communication Systems, Inc. - confidential

October 30, 2000

%setdbg FABRIC 1 3 To turn on FABRIC and DXMD debugging levels. %setdbg DXMD 7 To turn on DXMD server’s debugging levels.

• How do I turn off the auto-logout feature in my linux machine?
Place the following line inside your start up shell (csh/tcsh) program: To disable: unset autologout To enable: set autologout=<seconds>

• NSF errors happen on automounting => get the following errors:
nfs warning: mount version newer than kernel nfs_read_super: get root fattr failed

Errors are coming from the result of kernel configuration setup process. Check /usr/include/linux/autoconfig,h file to see whether the following statement is shown: #undef CONFIG_NFS_V3 If ’automount’ and ’mount’ were built for a v2.2 kernel and are running on a different version, you’ll get the message. The message about NFS v3 is just informational, indicating that the preferred NFS protocol version isn’t supported. In that case, it does the right thing and falls back to v2. It is no harm.

• why file changes did not show up immediately in Linux PC machine and it is
okay in SUN Solaris or my “cvs commit” takes no effect. First, home directory is automounted into the PC linux system. The automount daemon will drop the link automatically after some pre-defined timeout value if there is no activity happened on the linux machine. It will relink the packet path once you make a move. One situation can be seen: system respond time is slow at the first time you make a move.

Brocade Communication Systems, Inc. - confidential

31

Building/Installing Fabos Software

October 30, 2000

Sometimes, the system atutomatically log you out. You can check it by typing: %ps -auxww | grep automount root 476 0.0 0.8 1280 540 ? S Aug29 0:00 /usr/sbin/automount --timeout 60 /home yp auto.home Second, Linux OS is using "lazy" scheme to update cache data into the data disk. Beware of this feature because you might run into a common situation: file changed did not get checked into the cvs system because the cvs facility did not see the same changes as you made. It really dependes on how soon the Linux OS update the disk I/O data. Two ways to solve the delay problem: 1) wait a little bit after you make a change. 2) run "sync" to force cache data into the data disk. ** You can discover this situation if you issue a checkin command but nothing happens because the cvs thinks there is no delta change. 3.7. Example of Configure Command 3.7.1. LibConfig 3.7.1.1. How to Use: To use libconfig, you need do the following steps: %cd ~/springboard/fabric/src/lib/config %make %su #make install #exit (back to your normal shell) 3.7.1.2. Source codes ~/springboard/fabos/src/config:

32

Brocade Communication Systems, Inc. - confidential

October 30, 2000

This directory contains files that implement the configure command for the user shell. configure.pl is the entry file, and it will prompt the user for configuration parameters and make system calls to “config” to update the database. “config” is a standalone binary program that can perform ConfigGet and ConfigSet. It is linked to the libconfig library. configure.pl use some constants that are defined in some header files such as fabric.h and switch.h. In order to access these constants at run time, a Perl include file need to be generated during the Make process to supply configure.pl these constants. “makeperl.c” is a standalone program that includes proper header files, and write out their values in a Perl script format to the input file argument. The program is called during the Make process of “config” to generate need Perl include file. When Make terminate, this program is deleted. ~/springboard/fabos/src/lib/config:

Brocade Communication Systems, Inc. - confidential

33

Cross-Compilation Setup

October 30, 2000

CHAPTER 4

Cross-Compilation Setup

4.1. Introduction Brocade’s Fabric OS 4.0 is targeted for two initial systems: Warp, an 8-port Loombased prototype switch and Ulysses, a modular, blade-based switch. Both designs utilize the IBM PowerPC 405GP microprocessor for embedded system control and a v2.4-based Linux kernel. Due to the inefficient nature of target-based compilation for these systems (which is possible) and the prevalence of SPARC/Solaris-based workstations for most engineers, we utilize host-based cross-compilation to generate binary images for our target systems. Specifically, we will be doing cross-compilation from SPARC/ Solaris to PowerPC/Linux. For those of you familar with the GNU and GCC tool sets on either Solaris or native Linux systems, this process should be fairly transparent. 4.2. REQUIREMENTS

• SPARC/Solaris workstation running Solaris 5.7 (aka Solaris 7) or newer. • ’Springboard’ and ’GNU’ modules
4.3. PROCEDURE 1. Ensure that the "Springboard" and "GNU" modules are loaded into your shell environment. - If these modules are already loaded, they should appear when you run the ’module list’ command:

34

Brocade Communication Systems, Inc. - confidential

October 30, 2000

gerickso@marathon% module list Currently Loaded Modulefiles: 1) dot 2) GNU 3) xpg4 4) system 5) admin 6) user 7) local 8) OpenWindows 9) X11/R6 10) CDE 11) XEmacs/20.4 12) Frame/5.5.6 13) Netscape/4.72 14) Springboard

- If GNU and Springboard modules are not loaded, you may load them directly from the command line: user% module load GNU Springboard NOTE: If the Springboard module did not get loaded, the $CROSS_COMPILE environmental variable won’t be set accordingly.

or you may load them when a new shell is spawned. See ~gerickso/.cshrc for an example of how to do this for csh or tcsh. It is important that GNU be in your path before the xpg4, SCCS, or local modules. You may need to exercise the ’module unload’ and/or the ’module switch’ commands to accomplish this. The "local" module contains outdated versions of GNU software which are incompatible with the Fabric OS and Linux build environments. - Try ’man module’ for more information on how to use the ’module’ program and system. 2. Check out the Linux and Fabric OS source code: user% cvs co -Q linux user% cvs co -Q fabos - Alternatively, you can check-out both of these simulataneously by running: user% cvs co -Q springboard

Brocade Communication Systems, Inc. - confidential

35

Cross-Compilation Setup

October 30, 2000

This utilizes the cvs "module" feature (not to be confused with "module" above) to conglomerate multiple repositories into one unit. - The "-Q" option to cvs instructs it to be quiet about its check-out operations. If you wish to see the check-out in operation, do not use the "-Q" option. - At completion of the check-out, you will have a directory called "springboard" at the point in your directory structure in which you executed the check-out. Within that directory, should be two additional directories called "fabos" and "linux". The former contains the Fabric OS 4.0 source code and the latter, the Linux kernel source code. NOTE: The revision of the Linux kernel obtained by the above check-out may not be the latest with respect to the development tree maintained by Linus Torvalds; however, it is the latest set of code compatible with Brocade platforms which run Linux. - Try ’man cvs’ or check out <http://w3/~gerickso/Linux/#cvs> for more information on how to use CVS. 3. Generate the Linux header files - The Linux kernel is a highly configurable one, running on hundreds of different boards for tens of different processor variants. As such, it does not make sense to point the compiler tool chain at a default set of system header files. Configuring the Linux kernel is the first step in creating the Linux header files. - Our Linux kernel configuration is based on the configuration of the IBM PowerPC 405GP Walnut evaluation board. user% cd springboard/linux - The top-level Linux Makefile attempts to figure out what architecture the kernel should be compiled for. Since we’re building on a SPARC/Solaris machine, it thinks we’re compiling a SPARC/Linux kernel. This is, of course, in correct. Modify the "ARCH" variable in the file "Makefile" from: ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/a rm.*/arm/ -e s/sa110/arm/) to:

36

Brocade Communication Systems, Inc. - confidential

October 30, 2000

ARCH := ppc - In a native Linux environment, the default GCC and binutils programs can be used and are named ’gcc’, ’g++’, ’as’, ’ld’, ’objcopy’, etc. However, since we are cross-compling, we need differently named tools. For our PowerPC/Linux environment these tools are known as ’powerpc-linux-gcc’, ’powerpc-linuxg++’, powerpc-linux-as’, etc. As such, modify the "CROSS_COMPILE" variable as follows: CROSS_COMPILE = powerpc-linux- You are now ready to set-up a Linux kernel configuration Use the Walnut configuration as a baseline: user% make walnut_config Custom configure it from there: user% make config There are a number of differences from the default set of Walnut options. These differences are outside the scope of this document. At this time, use your best judgement. (An example, which works on most DELL Linux box, is listed in Appendix A) If you already have a kernel configuration that works, you may use it to do a build. user% cp ~<user>/springboard/linux/.config . user% make oldconfig The ’make oldconfig’ command will accept all the default values found in the ".config" file and will only prompt the user for input on values for which no default exists. At the completion of this step, a link from asm-<arch> (in our case asm-ppc) will be made to asm. - Next, generate, source file dependencies: user% make dep This step may take a few minutes to complete. - Generate the required header files:

Brocade Communication Systems, Inc. - confidential

37

Cross-Compilation Setup

October 30, 2000

user% make include/linux/version.h This step will likely fail with a compiler error. This error will have occured due to the Makefile sourcing the wrong version of "echo". Find a line such as: @echo -n \#define UTS_VERSION '\#‘cat .version‘ > .ver and change it to: @echo \#define UTS_VERSION '\#‘cat .version‘ > .ver user% make include/linux/compile.h user% make include/linux/modversions.h The step for "include/linux/modversions.h" may fail. If so, you might just try: user% touch include/linux/modversions.h 4. Compile the Fabric OS source code - Change to the Fabric OS source directory user% cd ~/springboard/fabos/src/ - Compile the code user% make The file "fabos/make/Rules.make" and "fabos/make/Tools.make" contain all the necessary definitions to allow for successful compilation. If you wish to point the cross compile environment at a different set of Linux include files, you may edit the ’LINUX_INCLUDES’ variable in "fabos/ make/Rules.make" or you may specify it on the command line: user% make LINUX_INCLUDES=-I<path>

38

Brocade Communication Systems, Inc. - confidential

October 30, 2000

APPENDIX A

Module Init File

This example file (.module) can be sourced/included inside your startup shell script which was extracted from gerick’s .csrc file. To verify whether it works or not, compile it in SunOS machine. You should see “powerpc-linux-gcc” instead of “gcc” during the compilation time.
#! # for cross-compilation module setup # # Determine the OS type # set os = ‘uname -s‘ if ($os == IRIX64) then set os = IRIX endif # # Modules and PATHs setup # set oldpath = $PATH set oldmanpath = $MANPATH # Forget about them until we figure out if modules are running unsetenv PATH MANPATH if ( $os == "Linux" || $os == "IRIX" ) then setenv MODULESHOME /usr/local/modules/latest else if ( $os == "SunOS" ) then setenv MODULESHOME /usr/local/freeware/modules/latest endif if ( -e ${MODULESHOME}/init/tcsh ) then # # Source the appropriate initialization script for this shell # source ${MODULESHOME}/init/tcsh # # Add some other paths in which to find module files #

Brocade Communication Systems, Inc. - confidential

39

Cross-Compilation Setup

October 30, 2000

module use /usr/local/modulefiles/HW module use /usr/local/modulefiles/SW module use ${HOME}/lib/modulefiles # # Load ’em up # module load dot GNU xpg4 system admin user local module load X11 CDE module load XEmacs tgif Frame Netscape module load Springboard else unsetenv MODULESHOME setenv PATH $oldpath setenv MANPATH $oldmanpath unset oldpath oldmanpath endif

40

Brocade Communication Systems, Inc. - confidential

October 30, 2000

APPENDIX B

Linux Kernel Config file Example

This reference example file is located in “springboard/linux/.config” which was copied from gerick’s .config file.
# # Automatically generated make config: don’t edit # # CONFIG_UID16 is not set # # Code maturity level options # CONFIG_EXPERIMENTAL=y # # Platform support # CONFIG_PPC=y # CONFIG_6xx is not set CONFIG_4xx=y # CONFIG_PPC64BRIDGE is not set # CONFIG_8260 is not set # CONFIG_8xx is not set CONFIG_IBM405=y # CONFIG_IBM405CR is not set CONFIG_IBM405GP=y # CONFIG_MVISTA_UNKNOWN is not set CONFIG_WALNUT=y # CONFIG_MVISTA_DCHU_001 is not set # CONFIG_MVISTA_FTR_001 is not set CONFIG_MVISTA_NONE=y # CONFIG_SMP is not set CONFIG_MACH_SPECIFIC=y # CONFIG_MATH_EMULATION is not set # # Loadable module support # CONFIG_MODULES=y # CONFIG_MODVERSIONS is not set CONFIG_KMOD=y

Brocade Communication Systems, Inc. - confidential

41

Cross-Compilation Setup

October 30, 2000

#
# General setup # # CONFIG_ISA is not set # CONFIG_SBUS is not set CONFIG_PCI=y CONFIG_NET=y CONFIG_SYSCTL=y CONFIG_SYSVIPC=y # CONFIG_BSD_PROCESS_ACCT is not set CONFIG_KCORE_ELF=y CONFIG_BINFMT_ELF=y CONFIG_KERNEL_ELF=y # CONFIG_BINFMT_MISC is not set CONFIG_PCI_NAMES=y CONFIG_HOTPLUG=y # # PCMCIA/CardBus support # # CONFIG_PCMCIA is not set # # Parallel port support # # CONFIG_PARPORT is not set # # Plug and Play configuration # # CONFIG_PNP is not set # CONFIG_ISAPNP is not set # # Block devices # # CONFIG_BLK_DEV_FD is not set # CONFIG_BLK_DEV_XD is not set # CONFIG_PARIDE is not set # CONFIG_BLK_CPQ_DA is not set # CONFIG_BLK_DEV_DAC960 is not set CONFIG_BLK_DEV_LOOP=y # CONFIG_BLK_DEV_NBD is not set # CONFIG_BLK_DEV_LVM is not set # CONFIG_BLK_DEV_MD is not set # CONFIG_MD_LINEAR is not set

42

Brocade Communication Systems, Inc. - confidential

October 30, 2000

# CONFIG_MD_RAID0 is not set # CONFIG_MD_RAID1 is not set # CONFIG_MD_RAID5 is not set CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_SIZE=8192 CONFIG_BLK_DEV_INITRD=y # # Networking options # # CONFIG_PACKET is not set # CONFIG_NETLINK is not set # CONFIG_NETFILTER is not set # CONFIG_FILTER is not set CONFIG_UNIX=y CONFIG_INET=y CONFIG_IP_MULTICAST=y # CONFIG_IP_ADVANCED_ROUTER is not set CONFIG_IP_PNP=y CONFIG_IP_PNP_BOOTP=y CONFIG_IP_PNP_RARP=y # CONFIG_IP_ROUTER is not set # CONFIG_NET_IPIP is not set # CONFIG_NET_IPGRE is not set # CONFIG_IP_MROUTE is not set CONFIG_IP_ALIAS=y # CONFIG_SYN_COOKIES is not set # # # # # # # # # # # # # # # # # # # #

(it is safe to leave these untouched) CONFIG_SKB_LARGE is not set CONFIG_IPV6 is not set CONFIG_KHTTPD is not set CONFIG_ATM is not set

CONFIG_IPX is not set CONFIG_ATALK is not set CONFIG_DECNET is not set CONFIG_BRIDGE is not set CONFIG_X25 is not set CONFIG_LAPB is not set CONFIG_LLC is not set CONFIG_ECONET is not set CONFIG_WAN_ROUTER is not set CONFIG_NET_FASTROUTE is not set

Brocade Communication Systems, Inc. - confidential

43

Cross-Compilation Setup

October 30, 2000

# CONFIG_NET_HW_FLOWCONTROL is not set # # QoS and/or fair queueing # # CONFIG_NET_SCHED is not set # # # # # #

ATA/IDE/MFM/RLL support CONFIG_IDE is not set CONFIG_BLK_DEV_IDE_MODES is not set CONFIG_BLK_DEV_HD is not set

# # SCSI support # # CONFIG_SCSI is not set # # IEEE 1394 (FireWire) support # # CONFIG_IEEE1394 is not set # # Network device support # CONFIG_NETDEVICES=y # # # # # # # #

ARCnet devices CONFIG_ARCNET is not set CONFIG_DUMMY is not set CONFIG_BONDING is not set CONFIG_EQUALIZER is not set CONFIG_NET_SB1000 is not set

# # Ethernet (10 or 100Mbit) # CONFIG_NET_ETHERNET=y # CONFIG_MACE is not set # CONFIG_BMAC is not set # CONFIG_GMAC is not set # CONFIG_NCR885E is not set # CONFIG_OAKNET is not set CONFIG_405GP_NET=y # CONFIG_NET_VENDOR_3COM is not set

44

Brocade Communication Systems, Inc. - confidential

October 30, 2000

# # # # # # # # # # # # # # # # # #

CONFIG_LANCE is not set CONFIG_NET_VENDOR_SMC is not set CONFIG_NET_VENDOR_RACAL is not set CONFIG_AT1700 is not set CONFIG_DEPCA is not set CONFIG_NET_ISA is not set CONFIG_NET_PCI is not set CONFIG_NET_POCKET is not set

Ethernet (1000 Mbit) CONFIG_YELLOWFIN is not set CONFIG_ACENIC is not set CONFIG_SK98LIN is not set CONFIG_FDDI is not set CONFIG_HIPPI is not set CONFIG_PPP is not set CONFIG_SLIP is not set

# # Wireless LAN (non-hamradio) # # CONFIG_NET_RADIO is not set # # Token Ring devices # # CONFIG_TR is not set CONFIG_NET_FC=y # CONFIG_IPHASE5526 is not set # CONFIG_RCPCI is not set # CONFIG_SHAPER is not set # # Wan interfaces # # CONFIG_WAN is not set # # Amateur Radio support # # CONFIG_HAMRADIO is not set # # IrDA (infrared) support # # CONFIG_IRDA is not set

Brocade Communication Systems, Inc. - confidential

45

Cross-Compilation Setup

October 30, 2000

# # ISDN subsystem # # CONFIG_ISDN is not set # # Old CD-ROM drivers (not SCSI, not IDE) # # CONFIG_CD_NO_IDESCSI is not set # # Console drivers # # # Frame-buffer support # # CONFIG_FB is not set # # Character devices # # CONFIG_VT is not set CONFIG_SERIAL=y CONFIG_SERIAL_CONSOLE=y # CONFIG_SERIAL_EXTENDED is not set # CONFIG_SERIAL_NONSTANDARD is not set # CONFIG_UNIX98_PTYS is not set # # I2C support # CONFIG_I2C=y # CONFIG_I2C_ALGOBIT is not set # CONFIG_I2C_ALGOPCF is not set CONFIG_I2C_ALGOPPC405=y CONFIG_I2C_ADAPPPC405=y CONFIG_I2C_CHARDEV=y # # Mice # # CONFIG_BUSMOUSE is not set # CONFIG_MOUSE is not set # # Joysticks # # CONFIG_JOYSTICK is not set

46

Brocade Communication Systems, Inc. - confidential

October 30, 2000

# CONFIG_QIC02_TAPE is not set # # Watchdog Cards # CONFIG_WATCHDOG=y # CONFIG_WATCHDOG_NOWAYOUT is not set # CONFIG_WDT is not set # CONFIG_WDTPCI is not set # CONFIG_SOFT_WATCHDOG is not set # CONFIG_PCWATCHDOG is not set # CONFIG_ACQUIRE_WDT is not set # CONFIG_60XX_WDT is not set # CONFIG_MIXCOMWD is not set CONFIG_405GP_WDT=y # CONFIG_INTEL_RNG is not set # CONFIG_NVRAM is not set # CONFIG_RTC is not set # # # # # # # # # # # # # # #

Video For Linux CONFIG_VIDEO_DEV is not set CONFIG_DTLK is not set CONFIG_R3964 is not set CONFIG_APPLICOM is not set

Ftape, the floppy tape device driver CONFIG_FTAPE is not set CONFIG_DRM is not set CONFIG_DRM_TDFX is not set CONFIG_AGP is not set CONFIG_PPC405_GPIO is not set

# # File systems # # CONFIG_QUOTA is not set CONFIG_AUTOFS_FS=y # CONFIG_AUTOFS4_FS is not set # CONFIG_ADFS_FS is not set # CONFIG_ADFS_FS_RW is not set # CONFIG_AFFS_FS is not set # CONFIG_HFS_FS is not set # CONFIG_BFS_FS is not set # CONFIG_FAT_FS is not set # CONFIG_MSDOS_FS is not set

Brocade Communication Systems, Inc. - confidential

47

Cross-Compilation Setup

October 30, 2000

# CONFIG_UMSDOS_FS is not set # CONFIG_VFAT_FS is not set # CONFIG_EFS_FS is not set # CONFIG_CRAMFS is not set # CONFIG_RAMFS is not set # CONFIG_ISO9660_FS is not set # CONFIG_JOLIET is not set # CONFIG_MINIX_FS is not set # CONFIG_NTFS_FS is not set # CONFIG_NTFS_RW is not set # CONFIG_HPFS_FS is not set CONFIG_PROC_FS=y # CONFIG_DEVFS_FS is not set # CONFIG_DEVFS_MOUNT is not set # CONFIG_DEVFS_DEBUG is not set # CONFIG_DEVPTS_FS is not set # CONFIG_QNX4FS_FS is not set # CONFIG_QNX4FS_RW is not set # CONFIG_ROMFS_FS is not set CONFIG_EXT2_FS=y # CONFIG_SYSV_FS is not set # CONFIG_SYSV_FS_WRITE is not set # CONFIG_UDF_FS is not set # CONFIG_UDF_RW is not set # CONFIG_UFS_FS is not set # CONFIG_UFS_FS_WRITE is not set # # Network File Systems # # CONFIG_CODA_FS is not set CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y CONFIG_LOCKD=y # CONFIG_SMB_FS is not set # CONFIG_NCP_FS is not set # CONFIG_NCPFS_PACKET_SIGNING is not set # CONFIG_NCPFS_IOCTL_LOCKING is not set # CONFIG_NCPFS_STRONG is not set # CONFIG_NCPFS_NFS_NS is not set # CONFIG_NCPFS_OS2_NS is not set # CONFIG_NCPFS_SMALLDOS is not set # CONFIG_NCPFS_MOUNT_SUBDIR is not set # CONFIG_NCPFS_NDS_DOMAINS is not set # CONFIG_NCPFS_NLS is not set

48

Brocade Communication Systems, Inc. - confidential

October 30, 2000

# CONFIG_NCPFS_EXTRAS is not set # # Partition Types # # CONFIG_PARTITION_ADVANCED is not set CONFIG_MSDOS_PARTITION=y # CONFIG_NLS is not set # # Sound # # CONFIG_SOUND is not set # # USB support # # CONFIG_USB is not set # # Kernel hacking # # CONFIG_MAGIC_SYSRQ is not set # CONFIG_KGDB is not set # CONFIG_XMON is not set CONFIG_DEBUG_BRINGUP=y

Brocade Communication Systems, Inc. - confidential

49

Cross-Compilation Setup

October 30, 2000

50

Brocade Communication Systems, Inc. - confidential