Linux-Hardware Digest #798, Volume #14 Sat, 19 May 01 12:13:07 EDT
Contents:
Re: RH 7, 2.4 Kernel Adaptec aha152x (Eric Beroud)
----------------------------------------------------------------------------
From: Eric Beroud <[EMAIL PROTECTED]>
Subject: Re: RH 7, 2.4 Kernel Adaptec aha152x
Date: Sat, 19 May 2001 17:33:24 +0200
Eric Beroud a �crit :
> "Michael J. Doyle" a �crit :
>
> > If this is better answered in comp.os.linux.setup, please forgive me for
> > cross-posting in the future.
> >
> > Newbie linux install.
> >
> > In Expert mode, trying to load module aha152x to use my cd-rom connected
> > to a SB16 scsi card(Adaptec 6360 chipset). I've been to the RH site and
> > read their faq about scsi card installs and used parameters:
> >
> > aha152x=0x340,11,1,1 where 1 is the scsi id and I assume the extra 1 is
> > for parity.
> >
> > I've tried different scsi id's on drive(jumper settings) and different
> > adaptec drivers, even no parity, or 0 in place of one, but I always get:
> >
> > "failed to insert aha152x module"
> >
> > Do you gurus suppose this is a problem with my parameters, or could there
> > be something else I'm missing. I created disks with rawrite using the
> > boot.img and drivers.img from the RH cd on an old IBM pc350(p133) with
> > 96mb ram, and a 1.2gb ide hd. NT loads their aha152 driver, so I know
> > driver and scsi card work, but if I was happy with NT, I wouldn't be here.
> >
> > Mike
> > [EMAIL PROTECTED]
>
> Hello Mike , yes it seems there are some problems around with this driver
> under RH 7.2...
>
> You should use:
> $ more /proc/isapnp
> and check the IO IRQ etc...
> Probably they do not match the real settings of your card....
>
> Then you should use the pnpdump utility to properly generate the file
> /etc/isapnp.conf file
> but get rid of CHECK options ....
>
> please refer to the attached answerred I made in a previous thead:
>
> I hope this helps.
>
> Best regards.
>
> Eric.
>
> De: Eric Beroud <[EMAIL PROTECTED]> 12:30
> Objet: Re: AVA-1505AE not working under 2.4?
> A: [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
> ]; <----added
> 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
>
> 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 Mike,
I've finally successfully configured my RedHat 7.1 (Kernel 2.4-2 ) for properly
using my ADAPTEC AVA 1502 SCSI card
using the aha152x driver. I think the solution would be quite the same for your
SB connected CD-ROM...
Here is the solution I used:
I can use my attached 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
n attachement futher.
2.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.
3. 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
******************************