HOWTO install NetBackup with a QLogic FibreChannel HBA on Gentoo Linux
From RADION OpenLab
Contents |
1 Introduction
After evaluating a lot of backup software packages we finally came down with VERITAS NetBackup.
It seemed rock solid (and it is), prepared for bigger networks, SAN, multiple storage units,
mature robot handling and a lot of UNIX related history in the back. But it is only supported
on the big Linux companies' "Enterprise Distributions" ( like redHat Enterprise and SuSE Enterprise ).
Gentoo is the Linux of our choice, so we had to drop support by Veritas since they don't support
gentoo and just hoped the software would be good enough to not to need any support. And we were right.
This is a walkthrough of what I did to get NetBackup runnning as Master Server on a GentooLinux box.
It is not foolproof and will need some mind of your own. You can use it as a guide rather than a "step-by-step" manual.
Remember:
Veritas does not support this and although it proved to work here, it doesn't mean you can get it to work.
This HOWTO comes without any warranty. Whatever you do, it is your responsibility.
2 Prerequisites
We need a working gentoo system > 2004.1. This can be a naked stage1-3 source installation incorporating all your performance and system specific requirements ( that is what it was tested with ) or a readymade stage3-system. I have to mention that this is tested only on 2.4 Kernels to work. Also you have to have compiled your own kernel and make sure that the appropriate kernel sources are available. Some deeper Linux-, FibreChannel-, SCSI-knowledge is due to fully understand the mechanics working here.
3 Emerging additional required software packages
the following Gentoo portage packages will be required to get the machine "redHat Enterprise / SuSE Enterprise" ready :
- mtx - Utilities for controlling SCSI media changers and tape drives
- mt-st - Enhanced mt command for Linux, supporting Linux 2.4 ioctls
- xinetd - powerful replacement for inetd
- sys-apps/sg3_utils - apps for querying the sg SCSI interface
- lib-compat - Compatibility C++ and libc5 and libc6 libraries for programs new and old
3.1 Tweaking X11 dependency
NOTE: If you don't have X11 on the box ( which I highly discourage you to have ) - you'll have to tweak the lib-compat dependencies ( remove sdl from ebuild ) since it will require X11 to install lib-compat. At the time setting the USE-Flag did not work, because the sdl dependency was hardcoded into the ebuild script.
Basically it should look like this and you should not find any X11/SDL related entries in there :
# Copyright 1999-2004 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/sys-libs/lib-compat/lib-compat-1.4.ebuild,v 1.2 2004/10/21 00:04:26 vapier Exp $ DESCRIPTION="Compatibility C++ and libc5 and libc6 libraries for programs new and old" HOMEPAGE="http://www.gentoo.org/" SRC_URI="mirror://gentoo/${P}.tar.bz2" LICENSE="GPL-2" SLOT="0" KEYWORDS="x86 ppc sparc alpha" IUSE="" RDEPEND="virtual/libc" S=${WORKDIR}/${P}/${ARCH} src_unpack() { unpack ${A} cd ${S} # Rather install this with the proper filename mv -f libstdc++-libc6.2-2.so.3 libstdc++-3-libc6.2-2-2.10.0.so # libstdc++-2-libc6.1-1-2.9.0.so provides this one ... rm -f libstdc++-libc6.1-1.so.2 # No package installs this one, so no need for the .dummy mv -f libstdc++.so.2.9.dummy libstdc++.so.2.9.0 # dont install if they dont want sdl use sdl || rm -f libsmpeg-0.4.so.0.dummy } src_install() { if use x86 ; then into / dolib.so ld-linux.so.1* rm -f ld-linux.so.1* fi into /usr dolib.so *.so* preplib /usr }
after editing the lib-compat file you should try a pretend emerge first :
# emerge -p lib-compat These are the packages that I would merge, in order: Calculating dependencies ...done! [ebuild N ] sys-libs/lib-compat-1.4
If there are no dependencies left you can emerge lib-compat along with the other required packages
3.2 Finally emerge these packages simply by executing the following
# emerge mtx mt-st xinetd lib-compat sys-apps/sg3_utils
4 System Kernel Extensions
NetBackup requires some kernel tuning to be as fast as it is. If you have ever set up Oracle on Linux you'll probably remember some of the tweaks. The following settings should be sufficient for most systems.
# more /etc/sysctl.conf
# Disable ECN net.ipv4.tcp_ecn = 0 # set system tuning for netbackup kernel.shmmax = 268435456 kernel.shmall = 268435456 kernel.shmmni = 220 # sem parm array : 1. semmsl 2. semmns 3. semopm 4. semni kernel.sem = 300 1024 32 1024 kernel.msgmnb = 65536 kernel.msgmax = 8192 kernel.msgmni = 256
5 Compile and install QLogic HBA drivers
Get the latest drivers from the qlogic website -> support -> [drivers and software | http://www.qlogic.com/support/drivers_software.asp]. I tried the 8.x drivers but I did not find any way to get them working with kernel 2.4.27 so I fell back to 7.00.01 which are decent enough. Additional to the drivers you should download the SANSurferCLI which will give you uttermost control over your HBA.
NOTE:' If you have a multiprocessor system or a single CPU Xeon / Pentium VI with HyperThreading enabled you have to set the SMP=1 parameter, otherwise just leave it out.
Unpack the archive, unpack the driver and compile the driver as a module :
# cd /usr/local/src # tar xvfz qla2x00-v7.00.01-dist.tgz # cd qlogic # ./drvinstall # # make all *SMP=1* OSVER=linux # make install
The driver's module will be installed in /lib/modules/2.4.27/kernel/drivers/scsi - if you use a 2.4.27 vanilla-source kernel.
/etc/modules.d/i386 anpassen :
# more /etc/modules.d/i386
alias parport_lowlevel parport_pc alias char-major-10-144 nvram alias binfmt-0064 binfmt_aout alias char-major-10-135 rtc alias scsi_hostadapter1 qla2300 options scsi_mod max_scsi_luns=256 scsi_allow_ghost_devices=1 alias scsi_hostadapter2 qla2300_conf probeall scsi_hostadapter qla2300 sg st
Es macht Sinn die Karte in einem 1G Netz von Auto-Negotiate auf fest 1G zu setzen.
Es ist ratsam das qlogic scli tools von der qlogic website herunterzuladen oder die bereits vorhandene Version einzusetzen, da dieses Tool sehr gut zum einstellen und überwachen der Karte zu gebrauchen ist.
ACHTUNG :
Nach jeder Neu-Kompilierung des Kernels ist es erforderlich die Module des Treibers neu zu backen. Die aktuellen Module liegen in :
# /opt/QLogic_Corporation/driver
/etc/modules.autoload.d/kernel-2.4
# more /etc/modules.autoload.d/kernel-2.4
tg3 qla2300 aic7xxx
/etc/devfsd.conf anpassen damit die scsi module zusätzlich geladen werden.
# Autoload the sg module if generic scsi driver compiled as module. LOOKUP ^sg$ MODLOAD ACTION sg
/etc/modules.devfsd anpassen
folgende Einträge müssen vorhanden sein :
# SCSI HDDs probeall /dev/sd scsi_hostadapter sd_mod alias /dev/sd* /dev/sd # SCSI CD-ROMs probeall /dev/sr scsi_hostadapter sr_mod alias /dev/sr* /dev/sr alias /dev/scsi/*/cd sr_mod # SCSI tapes probeall /dev/st scsi_hostadapter st alias /dev/st* /dev/st alias /dev/nst* /dev/st # SCSI generic probeall /dev/sg scsi_hostadapter sg alias /dev/sg* /dev/sg alias /dev/scsi/*/generic /dev/sg alias /dev/pg /dev/sg alias /dev/pg* /dev/sg
scsi logging facility built into kernel
activate from user mode via
<verbatim> echo "scsi log token [level]" > /proc/scsi/scsi </verbatim>
To start (or stop) logging information being sent to the console/log use echo "scsi log <token> <n>" > /proc/scsi/scsi where <token> is one of: {all, none, error, timeout, scan, mlqueue, mlcomplete, llqueue, llcomplete, hlqueue, hlcomplete, ioctl} and <n> is a number between 0 and 7. The tokens "all" and "none" don't take an <n> argument. Prefix meanings: Netbackup Syntax für Devices anlegen :
6 NetBackup device mappings
Due to NetBackup's age it is not aware of the new devFS filesystem structure. It just doesn't get any devices out of it. So we basically have to trick NetBackup by linking the devices ourselves. You need to know which HBA, BUS, SCSI ID and LUN each part of the robotic library has ( i.e. controller LUN0, tapedrive 1 LUN1, tapedrive 2 LUN2 ).
First of all we link all devices as generic scsi devices - controller and all tapedrives :
# cd /dev/sg # ln -s /dev/scsi/host1/bus0/target0/lun0/generic h1c0t0l0 # ln -s /dev/scsi/host1/bus0/target0/lun1/generic h1c0t0l1 # ln -s /dev/scsi/host1/bus0/target0/lun2/generic h1c0t0l2 # ln -s /dev/scsi/host2/bus0/target3/lun0/generic h2c0t3l0 # ln -s /dev/scsi/host2/bus0/target4/lun0/generic h2c0t4l0 # # ls –al /dev/sg/
lr-xr-xr-x 1 root root 41 Dec 20 09:06 h1c0t0l0 -> /dev/scsi/host1/bus0/target0/lun0/generic lr-xr-xr-x 1 root root 41 Dec 20 09:06 h1c0t0l1 -> /dev/scsi/host1/bus0/target0/lun1/generic lr-xr-xr-x 1 root root 41 Dec 20 09:06 h1c0t0l2 -> /dev/scsi/host1/bus0/target0/lun2/generic lr-xr-xr-x 1 root root 41 Dec 20 10:38 h2c0t3l0 -> /dev/scsi/host2/bus0/target3/lun0/generic lr-xr-xr-x 1 root root 41 Dec 20 10:39 h2c0t4l0 -> /dev/scsi/host2/bus0/target4/lun0/generic
Now we have to tell NetBackup which tapedrives it may use :
# cd /dev/st # ln -s /dev/scsi/host1/bus0/target0/lun1/mtn nh1c0t0l1 # ln -s /dev/scsi/host1/bus0/target0/lun2/mtn nh1c0t0l2 # ln -s /dev/scsi/host2/bus0/target4/lun0/mtn nh2c0t4l0 # # ls –al /dev/st/
lr-xr-xr-x 1 root root 37 Dec 20 09:06 nh1c0t0l1 -> /dev/scsi/host1/bus0/target0/lun1/mtn lr-xr-xr-x 1 root root 37 Dec 20 09:06 nh1c0t0l2 -> /dev/scsi/host1/bus0/target0/lun2/mtn lr-xr-xr-x 1 root root 37 Dec 20 11:52 nh2c0t4l0 -> /dev/scsi/host2/bus0/target4/lun0/mtn
- NOTE : unbedingt im netbackup start / stop script das make_scsi_dev entfernen, da dieser befehl das devfs von gentoo dazu bringt alle devices, welche händisch gelinkt wurden, zu löschen.
um die Devices zu checken :
# /opt/openv/volmgr/bin/tpautoconf –a
it should look like this:
TPAC45 - - - -1~-1~-1~-1 2 - - - - - - - - - - - 0 0 - - backupserver.FQDN 4 - - 0 TPAC45 HPUltrium1-SCSI0 HP~~~~~~Ultrium~1-SCSI~~E36R /dev/st/nh1c0t0l1 -1~-1~-1~-1 1 0 0 1 8 3 - - - IE72A04378 HP~~~~~~Ultrium~1-SCSI~~IE72A04378 3 0 1 - - backupserver.FQDN 0 - - 4 TPAC45 HPUltrium1-SCSI1 HP~~~~~~Ultrium~1-SCSI~~E36R /dev/st/nh1c0t0l2 -1~-1~-1~-1 1 0 0 2 8 3 - - - IE72B01319 HP~~~~~~Ultrium~1-SCSI~~IE72B01319 3 0 1 - - backupserver.FQDN 0 - - 4 TPAC45 Tape_backup_1AIT SONY~~~~SDX-700C~~~~~~~~0204 /dev/st/nh2c0t4l0 -1~-1~-1~-1 1 0 1 1 6 13 - - - 0079000751 SONY~~~~SDX-700C~~~~~~~~0079000751 2 0 0 - - backupserver.FQDN 0 - - 4 TPAC45 0 HP~~~~~~C7200~~~~~~~~~~~1720 /dev/sg/h1c0t0l0 -1~-1~-1~-1 0 0 0 - 8 - 20 2 0 IE0JD05026 HP~~~~~~C7200~~~~~~~~~~~IE0JD05026~~ 3 0 - backupserver.FQDN backupserver.FQDN backupserver.FQDN 0 - - 0 TPAC45 1 SONY~~~~LIB-81~~~~~~~~~~0105 /dev/sg/h2c0t3l0 -1~-1~-1~-1 0 0 1 - 6 - 8 1 0 01742093 - 2 0 - backupserver.FQDN backupserver.FQDN backupserver.FQDN 0 - - 0
/etc/hosts.allow & /etc/hosts.deny anpassen
Diese Anpassungen sind für den xinetd notwendig, damit andere Hosts auch auf die in /etc/services definierten und über /etc/xinet.d/ konfigurierten Port / Services zugreifen dürfen.
# more /etc/hosts.allow
ALL: LOCAL ## Netbackup Related XINETD Permissions ## bpcd: ALL bprd: ALL bpjobd: ALL bpdbm: ALL nbdbd: ALL tldcd: ALL vmd: ALL # more /etc/hosts.deny ALL: PARANOID
7 Beautifications
Since NetBackup should be installed in /opt/openv/netbackup the system environment knows nothing about NetBackup's executables. This really complicates day by day usage. On the other hand only the root user should be able to execute them without giving the full path ( like ifconfig for example ). So let us edit /etc/profile appropriately :
# vi /etc/profile
NBPATHAPPEND="/opt/openv/netbackup/bin:/opt/openv/netbackup/bin/admincmd:/opt/openv/volmgr/bin" # 077 would be more secure, but 022 is generally quite realistic umask 022 if [ `/usr/bin/whoami` = 'root' ] then # Do not set PS1 for dumb terminals if [ "$TERM" != 'dumb' ] && [ -n "$BASH" ] then export PS1='\[\033[01;31m\]\h \[\033[01;34m\]\W \$ \[\033[00m\]' fi export PATH="/bin:/sbin:/usr/bin:/usr/sbin:${ROOTPATH}:$NBPATHAPPEND" else # Do not set PS1 for dumb terminals if [ "$TERM" != 'dumb' ] && [ -n "$BASH" ] then export PS1='\[\033[01;32m\]\u@\h \[\033[01;34m\]\W \$ \[\033[00m\]' fi export PATH="/bin:/usr/bin:${PATH}" fi unset ROOTPATH
Teile der Netbackup Installation stammen aus sehr alten UNIX Zeiten und nutzen UNIX commands die mittlerweile deprecated sind. Dadurch laufen einige Scripte nicht richtig – dazu bitte die bereits angepassten scripte aus dem Paket zum Download verwenden, da hier die entsprechenden tail / head / ps commands scchon angepasst wurden und out-of-the-box mit netbackup 5.1 auf gentoo funktionieren.
Die Scripte im einzelnen :
Bpps – zeigt die NetBackup Prozesse an
Wird auch von anderen scripten aufgerufen, die ansonsten auch abbrechen, wenn bpps keine oder falsche resultate liefert.
Vmps – zeigt die VolManager Prozesse an
Wird von bpps aufgerufen und ist damit ebenfalls essentiel
7.1 Netbackup
das eigentliche init start und stop script
#!/bin/sh # # Copyright 2004/2005 RADION Digital Research & Innovation # # Start/Stop the NetBackup request daemon at system initiation/shutdown. # Starts/Stops the Media Manager device daemon (ltid). # Starts/Stops the Global Data Manager daemon (visd). # Starts/Stops the Advanced Reporter daemons. # Stops nbdbd. # # Note - when the Media Manager device daemon (ltid) is started, # it automatically starts the Media Manager volume daemon # (/usr/openv/volmgr/bin/vmd) and robotic daemons as required. # NBPATH=/usr/openv/netbackup/bin VMPS=/usr/openv/volmgr/bin/vmps BPPS=/usr/openv/netbackup/bin/bpps LTID=/usr/openv/volmgr/bin/ltid BPRD=/usr/openv/netbackup/bin/initbprd VISD=/usr/openv/netbackup/bin/visd INITVISD=/usr/openv/netbackup/bin/initvisd STOP_MYSQL=/usr/openv/netbackup/bin/admincmd/nbdbstop MAKE_SCSI_DEV=/usr/openv/volmgr/bin/make_scsi_dev BPCONF=/usr/openv/netbackup/bp.conf BPRDREQ=/usr/openv/netbackup/bin/admincmd/bprdreq STOPLTID=/usr/openv/volmgr/bin/stopltid VMCTRLDBM=/usr/openv/volmgr/bin/vmctrldbm MKDEV_OVPASS=/usr/openv/volmgr/bin/driver/mkdev_ovpass FORCE_INIT_INQUIRY=/usr/openv/netbackup/db/config/FORCE_INIT_INQUIRY SPACE=' ' BLANK='' RETURN=0 TMPDIR=${TMPDIR:-/tmp} PATH=$PATH:/usr/bin export PATH PRG=`basename $0` TMPF=${TMPDIR}/${PRG}.$$ /bin/rm -f $TMPF PS="/bin/ps -ea" nbar_location="/usr/openv/nbar" case `uname -s` in Darwin*) PS="/bin/ps -ax" ;; FreeBSD*) PS="/bin/ps -ax" ;; SunOS) nbar_location="/opt/VRTSnbaro" ;; esac ARG="${1}" if [ -z "${ARG}" ]; then ARG=start fi term_with_kill () { killstr=$1 signal=$2 processes=`${BPPS} | awk '! /(\/|\[)nbdbd(mon)?($|[ ]|\])/' | \ grep "$killstr" | awk '{print $2}'` for process in $processes do if [ Y"$signal" != Y ] ; then kill -${signal} $process > /dev/null 2>/dev/null else kill $process > /dev/null 2>/dev/null fi done } stop_gdm_daemon () { ${VISD} -terminate > /dev/null 2>/dev/null if [ $? != 0 ]; then term_with_kill visd KILL fi } stop_acs_daemon () { process=$1 kill $process > /dev/null 2>/dev/null } case "${ARG}" in start) if [ "`uname -s`" = "AIX" ] ; then if [ -x ${MKDEV_OVPASS} ]; then $MKDEV_OVPASS if [ -f "$FORCE_INIT_INQUIRY" ] ; then INQUIRY=/usr/openv/volmgr/bin/scsi_command TPCONFIG=/usr/openv/volmgr/bin/tpconfig for i in `$TPCONFIG -d | grep rmt | awk '{ print $3 }' ` do echo "Forcing initial SCSI inquiry to $i" > /dev/console $INQUIRY -d $i > /dev/null 2>&1 done fi else echo "ERROR executing mkdev_ovpass !" fi fi # Need to keep the now defunct -noinstall parameter in case # NDMP has not been upgraded yet. if [ -f /usr/openv/volmgr/bin/ndmpmoveragent.start ] ; then /usr/openv/volmgr/bin/ndmpmoveragent.start -noinstall > /dev/null 2>&1 echo "NetBackup NDMP Mover Agent started." fi # Don't start ltid if already started by HSM startup script. $VMPS > $TMPF if [ -f "$LTID" ] then ltid=`grep ltid $TMPF` if test Y"$ltid" = Y then # if [ -x ${MAKE_SCSI_DEV} -a "`uname -s`" = "Linux" ] ; then # echo "Rebuilding device nodes." # $MAKE_SCSI_DEV # fi $LTID echo "Media Manager daemons started." fi else RETURN=1 echo "Media Manager daemons not started." fi /bin/rm -f $TMPF if [ -x "$BPRD" ] then $BPRD echo "NetBackup request daemon started." else RETURN=2 echo "NetBackup request daemon not started." fi # Wait a little for nbdbd to come up, before starting visd wait=0 $BPPS > $TMPF nbdbd=`grep nbdbd $TMPF` while [ ${wait} -lt 3 -a "${nbdbd}" = "" ] do sleep 5 wait=`expr ${wait} + 1` $BPPS > $TMPF nbdbd=`grep nbdbd $TMPF` done /bin/rm -f $TMPF if [ -f ${nbar_location}/bin/nbar ] ; then ${nbar_location}/bin/nbar start >/dev/null 2>&1 echo "NetBackup Advanced Reporter daemons started." fi if [ -x "${INITVISD}" ]; then if [ "${nbdbd}" != "" ]; then ${INITVISD} > /dev/null 2>/dev/null if [ $? != 0 ]; then echo "Global Data Manager daemon not started." RETURN=2 else echo "Global Data Manager daemon started." fi else echo "Global Data Manager daemon not started." RETURN=2 fi fi # # This locking file is used by LINUX init # if [ -d /var/lock/subsys ]; then touch /var/lock/subsys/netbackup fi ;; stop) IS_NETBACKUP_DAEMON=YES export IS_NETBACKUP_DAEMON BPRD_PID=`$PS | grep bprd | grep -v grep | awk '{print $1}'` if [ "$BPRD_PID" != "" ]; then echo "stopping the NetBackup request daemon" ${BPRDREQ} -terminate 2> /dev/null fi BPDBM_PID=`$PS | grep bpdbm | grep -v grep | awk '{print $1}'` if [ "$BPDBM_PID" != "" ]; then echo "stopping the NetBackup database daemon" /usr/openv/netbackup/bin/bpdbm -terminate 2> /dev/null fi LTID_PID=`$PS | grep ltid | grep -v grep | awk '{print $1}'` if [ "$LTID_PID" != "" ]; then echo "stopping the Media Manager device daemon" ${STOPLTID} 2> /dev/null fi VMD_PID=`$PS | egrep '[ /]vmd' | grep -v grep | awk '{print $1}'` if [ "$VMD_PID" != "" ]; then echo "stopping the Media Manager volume daemon" ${VMCTRLDBM} -t 2> /dev/null fi # Need to keep the now defunct -remove parameter in case # NDMP has not been upgraded yet. NDMP_PID=`$PS | grep ndmpmove | grep -v grep | awk '{print $1}'` if [ "${NDMP_PID}" != "" -a -f /usr/openv/volmgr/bin/ndmpmoveragent.stop ] ; then /usr/openv/volmgr/bin/ndmpmoveragent.stop -remove > /dev/null 2>&1 echo "stopping NetBackup NDMP Mover Agent" fi nbar="`${BPPS} -r`" if [ "${nbar}" != "" -a -f ${nbar_location}/bin/nbar ] ; then echo "stopping NetBackup Advanced Reporter daemons" ${nbar_location}/bin/nbar stop >/dev/null 2>&1 fi visd=`${BPPS} | grep visd | grep -v grep | awk '{print $2}'` if [ "${visd}" != "" ]; then echo "stopping Global Data Manager daemon" stop_gdm_daemon fi nbdbd=`${BPPS} | grep nbdbd | grep -v grep | awk '{print $2}'` if [ "${nbdbd}" != "" ]; then echo "stopping nbdbd" ${STOP_MYSQL} 2> /dev/null if [ $? != 0 ]; then echo "unable to stop nbdbd" fi fi ACSSSI_PID=`$PS | grep acsssi | grep -v grep | awk '{print $1}'` if [ "$ACSSSI_PID" != "" ]; then echo "stopping the Automated Cartridge System Storage Server Interface daemon" # sleep matches what was already in bp.kill_all sleep 20 stop_acs_daemon $ACSSSI_PID fi ACSSEL_PID=`$PS | grep acssel | grep -v grep | awk '{print $1}'` if [ "$ACSSEL_PID" != "" ]; then echo "stopping the Automated Cartridge System SSI Event Logger daemon" stop_acs_daemon $ACSSEL_PID fi # # Lock file used by LINUX init # rm -f /var/lock/subsys/netbackup ;; start_msg) echo "Starting NetBackup" ;; stop_msg) echo "Stopping NetBackup" ;; *) echo "usage: $0 [start | stop | start_msg | stop_msg ]" RETURN=1 ;; esac exit $RETURN
Hier wurden einige Änderungen durchgeführt, die wohl wichtigste ist das entfernen der make_scsi_dev routine, da diese devfs dazu bringt sich selbst zu resetten und alle gesetzten links in /dev/st/ und /dev/sg/ welche auf die eigentlichen devices zeigen löscht.
8 Downloads
| Gentoo NB Support Pack | Support Pack containing the already altered and gentoo-fitted netbackup, bpps & vmps scripts. Just download, unpack and copy the scripts into their respective destinations. |
9 Kernel 2.6 Issues
After running this solution for quite some time now it was time to get to Kernel 2.6 which unfortunately raised some issues and no backup for about two days now. First of all: There is no soft migration from a 2.4 based system to 2.6. I had to re-emerge everything and then re-emerge some more (again) in order to get my cflags in order with gcc-4 and binutils.
Kernel Adjustments:
IMPORTANT: DO NOT USE THE QLA FC SCSI Module that comes with the kernel (and you have to load some firmware every time you want to use the module). It simply doesn't work stable and always breaks at some point or another.
You have to disable the QLA module in the kernel and manually tweak the kernels Makefile > 2.6.16 since inter_module_communication is deprecated but the qla driver needs it in order to build :
Add intermodule.o to obj-y and comment out the appropriate config line in /usr/src/linux/kernel/Makefile
obj-y = sched.o fork.o exec_domain.o panic.o printk.o profile.o \
exit.o itimer.o time.o softirq.o resource.o \
sysctl.o capability.o ptrace.o timer.o user.o \
signal.o sys.o kmod.o workqueue.o pid.o \
rcupdate.o extable.o params.o posix-timers.o \
kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o mutex.o \
hrtimer.o intermodule.o
obj-$(CONFIG_DEBUG_MUTEXES) += mutex-debug.o
obj-$(CONFIG_FUTEX) += futex.o
ifeq ($(CONFIG_COMPAT),y)
obj-$(CONFIG_FUTEX) += futex_compat.o
endif
obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o
obj-$(CONFIG_SMP) += cpu.o spinlock.o
obj-$(CONFIG_DEBUG_SPINLOCK) += spinlock.o
obj-$(CONFIG_UID16) += uid16.o
obj-$(CONFIG_MODULES) += module.o
#obj-$(CONFIG_OBSOLETE_INTERMODULE) += intermodule.o
Go grab the latest drivers from qlogics website, extract the package and compile it with :
./extras/build.sh ./extras/build.sh install
Also install some additional libraries I think scli will need to run properly:
./libinstall
