Linux-Hardware Digest #796, Volume #14           Sat, 19 May 01 12:13:07 EDT

Contents:
  Re: AVA-1505AE not working under 2.4? (Eric Beroud)

----------------------------------------------------------------------------

From: Eric Beroud <[EMAIL PROTECTED]>
Subject: Re: AVA-1505AE not working under 2.4?
Date: Sat, 19 May 2001 17:14:17 +0200



Eric Beroud a �crit :

>   ------------------------------------------------------------------------
>
> Objet: Re: AVA-1505AE not working under 2.4?
> Date: Sat, 19 May 2001 12:30:07 +0200
> De: Eric Beroud <[EMAIL PROTECTED]>
> A: [EMAIL PROTECTED]
> R�f�rences: <9dflub$o6t$[EMAIL PROTECTED]>
>
> [EMAIL PROTECTED] a �crit :
>
> > Hi HW gurus, I am the (not proud) owner of an Adaptec AVA-1505AE ISA SCSI
> > controller which worked fine under Mandrake 7.2's 2.2.14 kernel. I just
> > upgraded to Mandrake 8.0 with the 2.4.3-20mdk kernel, and now I can't seem to
> > get the board configured right.
> >
> > Previously, I had run pnpdump, then modified the /etc/isapnp.conf file to set
> > it for 0x140, IRQ 9. isapnp would then configure it fine, and I had no
> > problem
> > loading the aha152x module in as long as I specified aha152x=0x140,9. Now,
> > isapnp errors out with the following:
> >
> > Board 1 has Identity 96 12 5c 43 68 05 15 90 04:  ADP1505 Serial No 308036456
> > [checksum 96]
> > /etc/isapnp.conf:48 -- Fatal - IO range check attempted while device
> > activated
> > /etc/isapnp.conf:48 -- Fatal - Error occurred executing request '<IORESCHECK>
>
> I've got the same prolem with an AVA  1502 AP....
> I've solved it  by stripping off  the CHECK option from the (IO...) in the
> isapnp.conf file:
>  (IO 0 (SIZE 32) (BASE 0x0140) (CHECK))  ---> (IO 0 (SIZE 32) (BASE 0x0140) )
>
> Then the isapnp command works at boot.... and then it works.
>
> But I still have to do the modeprobe aha152x manually after the boot but then the
> scanner  on the SCSI bus is found...
> although I get the same strange register contents:
> Card 1 'ADP1502:Adaptec AVA-1502AP' PnP version 1.0 Product version 1.1
>   Logical device 0 'ADP1502:SCSI Controller'
>     Supported registers 0x2
>     Device is active
>     Active port 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff
>     Active IRQ 255 [0xff],255 [0xff]
>     Active DMA 255,255
>     Active memory 0xffffffff,0xffffffff,0xffffffff,0xffffffff
>     Resources 0
>
> I am running kernel 2.4-2 (RedHat 7.1)
>
> It seems that the /etc/rc.d/rc.sysinit procedure do the things in bad order since
> in order for the isapnp command to be executed by it, I had to modify it:
>
> # set up pnp
> ##if [ -x /sbin/isapnp -a -f /etc/isapnp.conf -a ! -f /proc/isapnp ]; then
> <----removed
> if [ -x /sbin/isapnp -a -f /etc/isapnp.conf ];
> then                                                 <----added
>     if [ -n "$PNP" ]; then
>  action $"Setting up ISA PNP devices: " /sbin/isapnp /etc/isapnp.conf
>     else
>  action $"Skipping ISA PNP configuration at users request: " /bin/true
>     fi
> fi
>
> This means that the card is configured somewhere before the isapnp command is
> executed !!!
> which probably explain the error when using CHECK while the device is active and
> the strange registers contents...
>
> If you get more tricks about all this pleqse keep me informed....
>
> I Hope this helps.
>
> >
> > '
> > --- further action aborted
> >
> > I've searched and searched, and it's probably something that has been
> > rehashed
> > a billion times, but I can't figure out what I should be doing different with
> > the 2.4 kernel. I can see that things have changed. Perhaps I just need to be
> > pointed at the right doc.
> >
> > Anyway, here's what /proc/isapnp says:Card 1 'ADP1505:Adaptec AVA-1505AE' PnP
> > version 1.0 Product version 1.1
> >   Logical device 0 'ADP1505:SCSI Controller'
> >     Supported registers 0x2
> >     Compatible device ADP1530
> >     Device is active
> >     Active port 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff
> >     Active IRQ 255 [0xff],255 [0xff]
> >     Active DMA 255,255
> >     Active memory 0xffffffff,0xffffffff,0xffffffff,0xffffffff
> >     Resources 0
> >       Priority preferred
> >       Port 0x140-0x140, align 0x1f, size 0x20, 16-bit address decoding
> >       IRQ 2/9,10,11,12 High-Edge
> >       Alternate resources 0:1
> >         Priority acceptable
> >         Port 0x340-0x340, align 0x1f, size 0x20, 16-bit address decoding
> >         IRQ 2/9,10,11,12 High-Edge
> >
> > As you can see, it agrees that the device is activated, but I'm sure those
> > 0xffff values don't belong spread all about the active port/irq/dma/memory
> > values.
> >
> > As you might imagine, the aha152x driver can't find the device at 0x140,IRQ 9
> > where I'd like it. Any suggestions on how to get it there?
> >
> > Thanks....
> >
> > Russ
> >
> >  -----  Posted via NewsOne.Net: Free (anonymous) Usenet News via the Web  -----
> >   http://newsone.net/ -- Free reading and anonymous posting to 60,000+ groups
> >    NewsOne.Net prohibits users from posting spam.  If this or other posts
> > made through NewsOne.Net violate posting guidelines, email [EMAIL PROTECTED]
>
> Best Regards.
>
>         Eric.

Hello Russ,

I've finally succeeded in configuring properly my Linux kernel V2.4-2 to cope with
my AVA-1502 SCSI card...
I Think it should also work for your AVA-1505AE

I can use my SCSI scanner directly after having booted the system

  1. First produce the proper /etc/isapnp.conf file by using pnpdump BUT strip off
     the "(CHECK)" from the "( IO 0...) directive. Find  my /etc/isapnp.conf file as
     an attachement futher.

  1. Then, modify your /etc/rc.d/rc.sysinit shell script to call isadmp before
     mounting "/proc". Find my modified /etc/rc.d/rc.sysinit file as an attachement
     further.

     NOTE: The /etc/rc.d/rc.sysinit shell script is the script which is run at boot
     by RedHat Linux... I don't know
     if the same initialisation script is run at boot time within Mandrake... Any
     way this can give you a direction to investigate.

  1. Of course you should also have the proper entry in your /etc/modules.conf such
     as (for my card):

     alias scsi_hostadapter aha152x
     options aha152x aha152x=0x140,11,7

I hope this helps.

        Best Regads.

                Eric.

###################Attachement 1:  /etc/isapnp.conf
######################################################
# $Id: pnpdump_main.c,v 1.23 2000/04/19 22:49:44 fox Exp $
# Release isapnptools-1.22
#
# This is free software, see the sources for details.
# This software has NO WARRANTY, use at your OWN RISK
#
# For details of the output file format, see isapnp.conf(5)
#
# For latest information and FAQ on isapnp and pnpdump see:
# http://www.roestock.demon.co.uk/isapnptools/
#
# Compiler flags:  -DREALTIME -DNEEDSETSCHEDULER -DABORT_ONRESERR
#
# Trying port address 0273
# Board 1 has serial identifier 78 0c ae 2b 5e 02 15 90 04

(DEBUG)
(READPORT 0x0273)
(ISOLATE PRESERVE)
(IDENTIFY *)
(VERBOSITY 2)
(CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING

# Card 1: (serial identifier 78 0c ae 2b 5e 02 15 90 04)
# Vendor Id ADP1502, Serial Number 212740958, checksum 0x78.
# Version 1.0, Vendor version 1.1
# ANSI string -->Adaptec AVA-1502AP      <--
#
# Logical device id ADP1502
#     Device supports I/O range check register
#
# Edit the entries below to uncomment out the configuration required.
# Note that only the first value of any range is given, this may be changed if
required
# Don't forget to uncomment the activate (ACT Y) when happy

(CONFIGURE ADP1502/212740958 (LD 0
#     ANSI string -->SCSI Controller<--
# Multiple choice time, choose one only !

#     Start dependent functions: priority preferred
#       Logical device decodes 16 bit IO address lines
#             Minimum IO base address 0x0140
#             Maximum IO base address 0x0140
#             IO base alignment 32 bytes
#             Number of IO addresses required: 32
# (IO 0 (SIZE 32) (BASE 0x0140) (CHECK))
#       IRQ 10.
#             High true, edge sensitive interrupt
# (INT 0 (IRQ 10 (MODE +E)))

#       Start dependent functions: priority acceptable
#       Logical device decodes 16 bit IO address lines
#             Minimum IO base address 0x0140
#             Maximum IO base address 0x0140
#             IO base alignment 32 bytes
#             Number of IO addresses required: 32
## (IO 0 (SIZE 32) (BASE 0x0140) (CHECK))          <----------------  Comment out
(IO 0 (SIZE 32) (BASE 0x0140))
<----------------   Use this one instead
#       IRQ 11.
#             High true, edge sensitive interrupt
 (INT 0 (IRQ 11 (MODE +E)))

#       Start dependent functions: priority acceptable
#       Logical device decodes 16 bit IO address lines
#             Minimum IO base address 0x0140
#             Maximum IO base address 0x0140
#             IO base alignment 32 bytes
#             Number of IO addresses required: 32
# (IO 0 (SIZE 32) (BASE 0x0140) (CHECK))
#       IRQ 12.
#             High true, edge sensitive interrupt
# (INT 0 (IRQ 12 (MODE +E)))

#       Start dependent functions: priority acceptable
#       Logical device decodes 16 bit IO address lines
#             Minimum IO base address 0x0340
#             Maximum IO base address 0x0340
#             IO base alignment 32 bytes
#             Number of IO addresses required: 32
# (IO 0 (SIZE 32) (BASE 0x0340) (CHECK))
#       IRQ 10.
#             High true, edge sensitive interrupt
# (INT 0 (IRQ 10 (MODE +E)))

#       Start dependent functions: priority acceptable
#       Logical device decodes 16 bit IO address lines
#             Minimum IO base address 0x0340
#             Maximum IO base address 0x0340
#             IO base alignment 32 bytes
#             Number of IO addresses required: 32
# (IO 0 (SIZE 32) (BASE 0x0340) (CHECK))
#       IRQ 11.
#             High true, edge sensitive interrupt
# (INT 0 (IRQ 11 (MODE +E)))

#       Start dependent functions: priority acceptable
#       Logical device decodes 16 bit IO address lines
#             Minimum IO base address 0x0340
#             Maximum IO base address 0x0340
#             IO base alignment 32 bytes
#             Number of IO addresses required: 32
# (IO 0 (SIZE 32) (BASE 0x0340) (CHECK))
#       IRQ 12.
#             High true, edge sensitive interrupt
# (INT 0 (IRQ 12 (MODE +E)))

#       Start dependent functions: priority functional
#       Logical device decodes 16 bit IO address lines
#             Minimum IO base address 0x0140
#             Maximum IO base address 0x0140
#             IO base alignment 32 bytes
#             Number of IO addresses required: 32
# (IO 0 (SIZE 32) (BASE 0x0140) (CHECK))
#       IRQ 9.
#             High true, edge sensitive interrupt
# (INT 0 (IRQ 9 (MODE +E)))

#       Start dependent functions: priority functional
#       Logical device decodes 16 bit IO address lines
#             Minimum IO base address 0x0340
#             Maximum IO base address 0x0340
#             IO base alignment 32 bytes
#             Number of IO addresses required: 32
# (IO 0 (SIZE 32) (BASE 0x0340) (CHECK))
#       IRQ 9.
#             High true, edge sensitive interrupt
# (INT 0 (IRQ 9 (MODE +E)))

#     End dependent functions
 (NAME "ADP1502/212740958[0]{SCSI Controller     }")
 (ACT Y)
))
# End tag... Checksum 0x00 (OK)

# Returns all cards to the "Wait for Key" state
(WAITFORKEY)


############ second attachement: /etc/rc.d/rc.sysinit
##################################################
#!/bin/bash
#
# /etc/rc.sysinit - run once at boot time
#
# Taken in part from Miquel van Smoorenburg's bcheckrc.
#

# Rerun ourselves through initlog
if [ -z "$IN_INITLOG" ]; then
 [ -f /sbin/initlog ] && exec /sbin/initlog $INITLOG_ARGS -r /etc/rc.sysinit
fi

# If we're using devfs, start devfsd now - we need the old device names
[ -e /dev/.devfsd -a -x /sbin/devfsd ] && /sbin/devfsd /dev

# Set the path
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH

HOSTNAME=`/bin/hostname`

# Read in config data.
if [ -f /etc/sysconfig/network ]; then
    . /etc/sysconfig/network
else
    NETWORKING=no
fi

if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
    HOSTNAME=localhost
fi

# Source functions
. /etc/init.d/functions

# Print a banner. ;)
echo -en $"\t\t\tWelcome to "
[ "$BOOTUP" != "serial" ] && echo -en $"\\033[1;31m"
echo -en $"Red Hat"
[ "$BOOTUP" != "serial" ] && echo -en $"\\033[0;39m"
echo $" Linux"
if [ "$PROMPT" != "no" ]; then
 echo -en $"\t\tPress 'I' to enter interactive startup."
 echo
 sleep 1
fi

# Fix console loglevel
/bin/dmesg -n $LOGLEVEL

###################### pnp stuff moved here from below #####################

# check for arguments

if grep -iq nopnp /proc/cmdline >/dev/null 2>&1 ; then
    PNP=
else
    PNP=yes
fi

# set up pnp
if [ -x /sbin/isapnp -a -f /etc/isapnp.conf -a ! -f /proc/isapnp ]; then
##if [ -x /sbin/isapnp -a -f /etc/isapnp.conf ]; then
    if [ -n "$PNP" ]; then
 action $"Setting up ISA PNP devices: " /sbin/isapnp /etc/isapnp.conf
    else
 action $"Skipping ISA PNP configuration at users request: " /bin/true
    fi
fi
###################### end of moved pnp stuff ###############################


# Mount /proc (done here so volume labels can work with fsck)

action $"Mounting proc filesystem: " mount -n -t proc /proc /proc

# Configure kernel parameters

action $"Configuring kernel parameters: " sysctl -e -p /etc/sysctl.conf

# Set the system clock.
ARC=0
SRM=0
UTC=0

if [ -f /etc/sysconfig/clock ]; then
   . /etc/sysconfig/clock

   # convert old style clock config to new values
   if [ "${CLOCKMODE}" = "GMT" ]; then
      UTC=true
   elif [ "${CLOCKMODE}" = "ARC" ]; then
      ARC=true
   fi
fi

CLOCKDEF=""
CLOCKFLAGS="--hctosys"

case "$UTC" in
   yes|true)
    CLOCKFLAGS="$CLOCKFLAGS -u";
    CLOCKDEF="$CLOCKDEF (utc)";
   ;;
   no|false)
    CLOCKFLAGS="$CLOCKFLAGS --localtime";
    CLOCKDEF="$CLOCKDEF (localtime)";
   ;;
esac

case "$ARC" in
     yes|true)
      CLOCKFLAGS="$CLOCKFLAGS -A";
      CLOCKDEF="$CLOCKDEF (arc)";
     ;;
esac
case "$SRM" in
     yes|true)
 CLOCKFLAGS="$CLOCKFLAGS -S";
 CLOCKDEF="$CLOCKDEF (srm)";
     ;;
esac

/sbin/hwclock $CLOCKFLAGS

action $"Setting clock $CLOCKDEF: `date`" date

if [ "`/sbin/consoletype`" == "vt" ]; then
 # Load keymap
 if [ -x /bin/loadkeys ]; then
 KEYTABLE=
 KEYMAP=
 if [ -f /etc/sysconfig/console/default.kmap ]; then
  KEYMAP=/etc/sysconfig/console/default.kmap
 else
  if [ -f /etc/sysconfig/keyboard ]; then
    . /etc/sysconfig/keyboard
  fi
  if [ -n "$KEYTABLE" -a -d "/usr/lib/kbd/keymaps" -o -d "/lib/kbd/keymaps" ]; then
     KEYMAP=$KEYTABLE
  fi
 fi
 if [ -n "$KEYMAP" ]; then
  # Since this takes in/output from stdin/out, we can't use initlog
  if [ -n "$KEYTABLE" ]; then
    echo -n $"Loading default keymap ($KEYTABLE): "
  else
    echo -n $"Loading default keymap: "
  fi
  loadkeys $KEYMAP < /dev/tty0 > /dev/tty0 2>/dev/null && \
     success $"Loading default keymap" || failure $"Loading default keymap"
  echo
 fi
 fi

 # Load system font
 if [ -x /sbin/setsysfont ]; then
    [ -f /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n
    if [ -f /etc/sysconfig/console/$SYSFONT.psf.gz -o \
         -f /usr/lib/kbd/consolefonts/$SYSFONT.psf.gz -o \
         -f /etc/sysconfig/console/$SYSFONT.gz -o \
         -f /usr/lib/kbd/consolefonts/$SYSFONT.gz -o \
  -f /lib/kbd/consolefonts/$SYSFONT.gz -o \
  -f /lib/kbd/consolefonts/$SYSFONT.psf.gz ]; then
       action $"Setting default font ($SYSFONT): " /sbin/setsysfont
    fi
 fi
fi

# Start up swapping.
action $"Activating swap partitions: " swapon -a -e

# Set the hostname.
action $"Setting hostname ${HOSTNAME}: " hostname ${HOSTNAME}


# Initialize USB controller and HID devices
usb=0
if ! grep -iq "nousb" /proc/cmdline 2>/dev/null && ! grep -q "usb" /proc/devices
2>/dev/null ; then
    aliases=`/sbin/modprobe -c | egrep -s "^alias[[:space:]]+usb-controller" | awk
'{ print $3 }'`
    if [ -n "$aliases" -a "$aliases" != "off" ] ; then
      modprobe usbcore
      action $"Mounting USB filesystem: "  mount -t usbdevfs usbdevfs /proc/bus/usb
      for alias in $aliases ; do
       action $"Initializing USB controller ($alias): " modprobe $alias
      done
      [ $? -eq 0 -a -n "$aliases" ] && usb=1
    fi
fi

if ! grep -iq "nousb" /proc/cmdline 2>/dev/null && grep -q "usb" /proc/devices
2>/dev/null ; then
  usb=1
fi

needusbstorage=
if [ $usb = "1" ]; then
    sleep 5
    mouseoutput=`cat /proc/bus/usb/devices 2>/dev/null|grep -E
"^I.*Cls=03.*Prot=02"`
    kbdoutput=`cat /proc/bus/usb/devices 2>/dev/null|grep -E "^I.*Cls=03.*Prot=01"`
    needusbstorage=`cat /proc/bus/usb/devices 2>/dev/null|grep -e "^I.*Cls=08"`
    if [ -n "$kbdoutput" ] || [ -n "$mouseoutput" ]; then
 action $"Initializing USB HID interface: " modprobe hid 2> /dev/null
    fi
    if [ -n "$kbdoutput" ]; then
 action $"Initializing USB keyboard: " modprobe keybdev
    fi
    if [ -n "$mouseoutput" ]; then
 action $"Initializing USB mouse: " modprobe mousedev
    fi
fi

if [ -f /fastboot ] || grep -iq "fastboot" /proc/cmdline 2>/dev/null ; then
 fastboot=yes
    else
        fastboot=
fi

if [ -f /fsckoptions ]; then
 fsckoptions=`cat /fsckoptions`
    else
 fsckoptions=
fi

if [ -f /forcefsck ]; then
 fsckoptions="-f $fsckoptions"
fi

if [ "$BOOTUP" != "serial" ]; then
 fsckoptions="-C $fsckoptions"
else
 fsckoptions="-V $fsckoptions"
fi


_RUN_QUOTACHECK=0
ROOTFSTYPE=`grep " / " /proc/mounts | awk '{ print $3 }'`
if [ -z "$fastboot" -a "$ROOTFSTYPE" != "nfs" ]; then

        STRING=$"Checking root filesystem"
 echo $STRING
 initlog -c "fsck -T -a $fsckoptions /"
 rc=$?

 if [ "$rc" = "0" ]; then
  success "$STRING"
  echo
 elif [ "$rc" = "1" ]; then
         passed $"$STRING"
  echo
        fi

        # A return of 2 or higher means there were serious problems.
 if [ $rc -gt 1 ]; then
  failure "$STRING"
  echo
  echo
  echo $"*** An error occurred during the file system check."
  echo $"*** Dropping you to a shell; the system will reboot"
  echo $"*** when you leave the shell."

  PS1=$"(Repair filesystem) \# # "; export PS1
  sulogin

  echo $"Unmounting file systems"
  umount -a
  mount -n -o remount,ro /
  echo $"Automatic reboot in progress."
  reboot -f
 elif [ "$rc" = "1" ]; then
  _RUN_QUOTACHECK=1
 fi
fi

###########################################################################
## Originally the pnp stuff was here
###########################################################################

# Remount the root filesystem read-write.
state=`awk '/(^\/dev\/root| \/ )/ { print $4 }' /proc/mounts`
[ "$state" != "rw" ] && \
  action $"Remounting root filesystem in read-write mode: " mount -n -o remount,rw /

# LVM initialization
if [ -e /proc/lvm -a -x /sbin/vgchange -a -f /etc/lvmtab ]; then
        action $"Setting up LVM:" /sbin/vgscan && /sbin/vgchange -a y
fi

# Clear mtab
>/etc/mtab

# Remove stale backups
rm -f /etc/mtab~ /etc/mtab~~

# Enter root, /proc and (potentially) /proc/bus/usb and devfs into mtab.
mount -f /
mount -f /proc
[ -f /proc/bus/usb/devices ] && mount -f -t usbdevfs usbdevfs /proc/bus/usb
[ -e /dev/.devfsd ] && mount -f -t devfs devfs /dev

# Turn on harddisk optimization
# There is only one file /etc/sysconfig/harddisks for all disks
# after installing the hdparm-RPM. If you need different hdparm parameters
# for each of your disks, copy /etc/sysconfig/harddisks to
# /etc/sysconfig/harddiskhda (hdb, hdc...) and modify it.
# each disk which has no special parameters will use the defaults.

disk[0]=s; disk[1]=hda; disk[2]=hdb; disk[3]=hdc;
disk[4]=hdd; disk[5]=hde; disk[6]=hdf; disk[7]=hdg; disk[8]=hdh;


if [ -x /sbin/hdparm ]; then
   for device in 0 1 2 3 4 5 6 7 8; do
   unset MULTIPLE_IO USE_DMA EIDE_32BIT LOOKAHEAD EXTRA_PARAMS
        if [ -f /etc/sysconfig/harddisk${disk[$device]} ]; then
                . /etc/sysconfig/harddisk${disk[$device]}
                HDFLAGS[$device]=
                if [ -n "$MULTIPLE_IO" ] && [ "$MULTIPLE_IO" != "0" ]; then
                    HDFLAGS[$device]="-q -m$MULTIPLE_IO"
                fi
                if [ -n "$USE_DMA" ] && [ "$USE_DMA" != "0" ]; then
                    HDFLAGS[$device]="${HDFLAGS[$device]} -q -d$USE_DMA"
                fi
                if [ -n "$EIDE_32BIT" ]; then
                    HDFLAGS[$device]="${HDFLAGS[$device]} -q -c$EIDE_32BIT"
                fi
                if [ -n "$LOOKAHEAD" ]; then
                    HDFLAGS[$device]="${HDFLAGS[$device]} -q -A$LOOKAHEAD"
                fi
                if [ -n "$EXTRA_PARAMS" ]; then
                    HDFLAGS[$device]="${HDFLAGS[$device]} $EXTRA_PARAMS"
                fi
        else
                HDFLAGS[$device]="${HDFLAGS[0]}"
        fi
        if [ -e "/proc/ide/${disk[$device]}/media" ] ; then
             hdmedia=`cat /proc/ide/${disk[$device]}/media`
             if [ "$hdmedia" = "disk" ]; then
                  if [ -n "${HDFLAGS[$device]}" ]; then
                      action $"Setting hard drive parameters for ${disk[$device]}:
"  /sbin/hdparm ${HDFLAGS[$device]} /dev/${disk[$device]}
                  fi
             fi
        fi
   done
fi

# Update quotas if fsck was run on /.
if [ X"$_RUN_QUOTACHECK" = X1 -a -x /sbin/quotacheck ]; then
 if [ -x /sbin/convertquota ]; then
     if [ -f /quota.user ]; then
  /sbin/convertquota -u / && rm -f /quota.user
     fi
     if [ -f /quota.group ]; then
  /sbin/convertquota -g / && rm -f /quota.group
     fi
 fi
 action $"Checking root filesystem quotas: "  /sbin/quotacheck -v /
fi

# The root filesystem is now read-write, so we can now log via syslog() directly..
if [ -n "$IN_INITLOG" ]; then
    IN_INITLOG=
fi

if ! grep -iq nomodules /proc/cmdline >/dev/null 2>&1 && [ -f /proc/ksyms ]; then
    USEMODULES=y
else
    USEMODULES=
fi

# Our modutils don't support it anymore, so we might as well remove
# the preferred link.
rm -f /lib/modules/preferred
rm -f /lib/modules/default
if [ -x /sbin/depmod -a -n "$USEMODULES" ]; then
    # If they aren't using a recent sane kernel, make a link for them
    if [ ! -n "`uname -r | grep -- "-"`" ]; then
       ktag="`cat /proc/version`"
       mtag=`grep -l "$ktag" /lib/modules/*/.rhkmvtag 2> /dev/null`
       if [ -n "$mtag" ]; then
          mver=`echo $mtag | sed -e 's,/lib/modules/,,' -e 's,/.rhkmvtag,,' -e
's,[       ].*$,,'`
       fi
       if [ -n "$mver" ]; then
         ln -sf /lib/modules/$mver /lib/modules/default
       fi
    fi
    if [ -L /lib/modules/default ]; then
     INITLOG_ARGS= action $"Finding module dependencies: " depmod -A default
    else
 INITLOG_ARGS= action $"Finding module dependencies: " depmod -A
    fi
fi

# tweak isapnp settings if needed.
if [ -n "$PNP" -a  -f /proc/isapnp -a -x /sbin/sndconfig ]; then
    /sbin/sndconfig --mungepnp >/dev/null 2>&1
fi

# Load sound modules iff they need persistent DMA buffers
if grep -q "options sound dmabuf=1" /etc/modules.conf 2>/dev/null ; then
  RETURN=0
  alias=`/sbin/modprobe -c | egrep -s "^alias[[:space:]]+sound[[:space:]]+" | awk '{
print $3 }'`
  if [ -n "$alias" -a "$alias" != "off" ] ; then
      action $"Loading sound module ($alias): " modprobe $alias
      RETURN=$?
  fi
  alias=`/sbin/modprobe -c | egrep -s "^alias[[:space:]]+sound-slot-0[[:space:]]+" |
awk '{ print $3 }'`
  if [ -n "$alias" -a "$alias" != "off" ] ; then
      action $"Loading sound module ($alias): " modprobe $alias
      RETURN=$?
  fi
  # Load mixer settings
  if grep -q "\(sparcaudio\|sound\)" /proc/devices 2>/dev/null ; then
      if [ $RETURN -eq 0 -a -f /etc/.aumixrc -a -x /bin/aumix-minimal ]; then
   action $"Loading mixer settings: " /bin/aumix-minimal -f /etc/.aumixrc -L
      fi
  fi
fi

if [ -f /proc/sys/kernel/modprobe ]; then
   if [ -n "$USEMODULES" ]; then
       sysctl -w kernel.modprobe="/sbin/modprobe" >/dev/null 2>&1
       sysctl -w kernel.hotplug="/sbin/hotplug" >/dev/null 2>&1
   else
       # We used to set this to NULL, but that causes 'failed to exec' messages"
       sysctl -w kernel.modprobe="/bin/true" >/dev/null 2>&1
       sysctl -w kernel.hotplug="/bin/true" >/dev/null 2>&1
   fi
fi

# Load modules (for backward compatibility with VARs)
if [ -f /etc/rc.modules ]; then
 /etc/rc.modules
fi

# Add raid devices
if [ ! -f /proc/mdstat ]; then
 modprobe md >/dev/null 2>&1
fi

if [ -f /proc/mdstat -a -f /etc/raidtab ]; then
 echo -n $"Starting up RAID devices: "

 rc=0

 for i in `grep "^raiddev" /etc/raidtab | awk '{print $2}'`
 do
  RAIDDEV=`basename $i`
                RAIDSTAT=`grep "^$RAIDDEV : active" /proc/mdstat`
  if [ -z "$RAIDSTAT" ]; then
   # Try raidstart first...if that fails then
   # fall back to raidadd, raidrun.  If that
   # also fails, then we drop to a shell
   RESULT=1
   if [ -x /sbin/raidstart ]; then
    /sbin/raidstart $i
    RESULT=$?
   fi
   if [ $RESULT -gt 0 -a -x /sbin/raid0run ]; then
    /sbin/raid0run $i
    RESULT=$?
   fi
   if [ $RESULT -gt 0 -a -x /sbin/raidadd -a -x /sbin/raidrun ]; then
    /sbin/raidadd $i
    /sbin/raidrun $i
    RESULT=$?
   fi
   if [ $RESULT -gt 0 ]; then
    rc=1
   fi
   echo -n "$RAIDDEV "
  else
   echo -n "$RAIDDEV "
  fi
 done
 echo

 # A non-zero return means there were problems.
 if [ $rc -gt 0 ]; then
  echo
  echo
  echo $"*** An error occurred during the RAID startup"
  echo $"*** Dropping you to a shell; the system will reboot"
  echo $"*** when you leave the shell."

  PS1=$"(RAID Repair) \# # "; export PS1
  sulogin

  echo $"Unmounting file systems"
  umount -a
  mount -n -o remount,ro /
  echo $"Automatic reboot in progress."
  reboot -f
 fi
fi

_RUN_QUOTACHECK=0
# Check filesystems
if [ -z "$fastboot" ]; then
        STRING=$"Checking filesystems"
 echo $STRING
 initlog -c "fsck -T -R -A -a $fsckoptions"
 rc=$?
        if [ "$rc" = "0" ]; then
  success "$STRING"
  echo
 elif [ "$rc" = "1" ]; then
         passed "$STRING"
  echo
 fi

 # A return of 2 or higher means there were serious problems.
 if [ $rc -gt 1 ]; then
         failure "$STRING"
  echo
  echo
  echo $"*** An error occurred during the file system check."
  echo $"*** Dropping you to a shell; the system will reboot"
  echo $"*** when you leave the shell."

  PS1=$"(Repair filesystem) \# # "; export PS1
  sulogin

  echo $"Unmounting file systems"
  umount -a
  mount -n -o remount,ro /
  echo $"Automatic reboot in progress."
  reboot -f
 elif [ "$rc" = "1" -a -x /sbin/quotacheck ]; then
  _RUN_QUOTACHECK=1
 fi
fi

# Mount all other filesystems (except for NFS and /proc, which is already
# mounted). Contrary to standard usage,
# filesystems are NOT unmounted in single user mode.
action $"Mounting local filesystems: " mount -a -t nonfs,smbfs,ncpfs

if [ X"$_RUN_QUOTACHECK" = X1 -a -x /sbin/quotacheck ]; then
 if [ -x /sbin/convertquota ]; then
     # try to convert old quotas
     for mountpt in `cat /etc/mtab | awk '$4 ~ /quota/{print $2}'`; do
  if [ -f "$mountpt/quota.user" ]; then
      /sbin/convertquota -u $mountpt && \
   rm -f $mountpt/quota.user
  fi
  if [ -f "$mountpt/quota.group" ]; then
      /sbin/convertquota -g $mountpt && \
   rm -f $mountpt/quota.group
  fi
     done
 fi
 action $"Checking filesystem quotas: "  /sbin/quotacheck -v -R -a
fi

# Turn on process accounting
if [ -x /sbin/accton ] ; then
 action $"Turning on process accounting" /sbin/accton /var/log/pacct
fi

# Configure machine if necessary.
if [ -f /.unconfigured ]; then
    if [ -x /usr/bin/passwd ]; then
        /usr/bin/passwd root
    fi
    if [ -x /usr/sbin/netconfig ]; then
 /usr/sbin/netconfig
    fi
    if [ -x /usr/sbin/timeconfig ]; then
 /usr/sbin/timeconfig
    fi
    if [ -x /usr/sbin/authconfig ]; then
 /usr/sbin/authconfig --nostart
    fi
    if [ -x /usr/sbin/ntsysv ]; then
 /usr/sbin/ntsysv --level 35
    fi

    # Reread in network configuration data.
    if [ -f /etc/sysconfig/network ]; then
 . /etc/sysconfig/network

 # Reset the hostname.
 action $"Resetting hostname ${HOSTNAME}: " hostname ${HOSTNAME}
    fi

    rm -f /.unconfigured
fi

if [ -x /sbin/quotaon ]; then
    action $"Turning on user and group quotas for local filesystems: " /sbin/quotaon
-a
fi

# Clean out /etc.
rm -f /fastboot /fsckoptions /forcefsck /halt /poweroff

# Do we need (w|u)tmpx files? We don't set them up, but the sysadmin might...
_NEED_XFILES=
[ -f /var/run/utmpx -o -f /var/log/wtmpx ] && _NEED_XFILES=1

# Clean up /var
# I'd use find, but /usr may not be mounted.
for afile in /var/lock/* /var/run/*; do
   if [ -d "$afile" ]; then
      [ "`basename $afile`" != "news" -a "`basename $afile`" != "sudo" -a "`basename
$afile`" != "mon" ] && rm -f $afile/*
   else
      rm -f $afile
   fi
done

# Reset pam_console permissions
[ -x /sbin/pam_console_apply ] && /sbin/pam_console_apply -r

{
# Clean up utmp/wtmp
>/var/run/utmp
touch /var/log/wtmp
chgrp utmp /var/run/utmp /var/log/wtmp
chmod 0664 /var/run/utmp /var/log/wtmp
if [ -n "$_NEED_XFILES" ]; then
  >/var/run/utmpx
  touch /var/log/wtmpx
  chgrp utmp /var/run/utmpx /var/log/wtmpx
  chmod 0664 /var/run/utmpx /var/log/wtmpx
fi

# Delete X locks
rm -f /tmp/.X*-lock

# Delete Postgres sockets
rm -f /tmp/.s.PGSQL.*

# Now turn on swap in case we swap to files.
swapon -a
action $"Enabling swap space: " /bin/true

# Initialize the serial ports.
if [ -f /etc/rc.serial ]; then
 . /etc/rc.serial
fi

# If a SCSI tape has been detected, load the st module unconditionally
# since many SCSI tapes don't deal well with st being loaded and unloaded
if [ -f /proc/scsi/scsi ] && grep -q 'Type:   Sequential-Access' /proc/scsi/scsi
2>/dev/null ; then
 if grep -qv ' 9 st' /proc/devices ; then
  if [ -n "$USEMODULES" ] ; then
   # Try to load the module.  If it fails, ignore it...
   insmod -p st >/dev/null 2>&1 && modprobe st >/dev/null 2>&1
  fi
 fi
fi

# Load usb storage here, to match most other things
if [ -n "$needusbstorage" ]; then
 modprobe usb-storage >/dev/null 2>&1
fi

# If they asked for ide-scsi, load it
if grep -q "ide-scsi" /proc/cmdline ; then
 modprobe ide-cd >/dev/null 2>&1
 modprobe ide-scsi >/dev/null 2>&1
fi

# Generate a header that defines the boot kernel.
/sbin/mkkerneldoth

# Adjust symlinks as necessary in /boot to keep system services from
# spewing messages about mismatched System maps and so on.
if [ -L /boot/System.map -a -r /boot/System.map-`uname -r` ] ; then
 ln -s -f System.map-`uname -r` /boot/System.map
fi
if [ ! -e /boot/System.map -a -r /boot/System.map-`uname -r` ] ; then
 ln -s -f System.map-`uname -r` /boot/System.map
fi

# Now that we have all of our basic modules loaded and the kernel going,
# let's dump the syslog ring somewhere so we can find it later
dmesg > /var/log/dmesg
sleep 1
kill -TERM `/sbin/pidof getkey` >/dev/null 2>&1
} &
if [ "$PROMPT" != "no" ]; then
   /sbin/getkey i && touch /var/run/confirm
fi
wait
################################   end of attachement
#############################################



------------------------------


** FOR YOUR REFERENCE **

The service address, to which questions about the list itself and requests
to be added to or deleted from it should be directed, is:

    Internet: [EMAIL PROTECTED]

You can send mail to the entire list by posting to comp.os.linux.hardware.

Linux may be obtained via one of these FTP sites:
    ftp.funet.fi                                pub/Linux
    tsx-11.mit.edu                              pub/linux
    sunsite.unc.edu                             pub/Linux

End of Linux-Hardware Digest
******************************

Reply via email to