QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 501|回复: 1

修改rc.sysinit

[复制链接]
发表于 2003-9-7 11:38:00 | 显示全部楼层 |阅读模式
今天修改了
其中关于usb文件系统,usb鼠标,usb键盘,raid我删去了,
还有对硬盘的数量修改了
起动后没问题
[code:1]
#!/bin/bash
#
# /etc/rc.d/rc.sysinit - run once at boot time
#
# Taken in part from Miquel van Smoorenburg's bcheckrc.
#

# Rerun ourselves through initlog
if [ -z "$IN_INITLOG" -a -x /sbin/initlog ]; then
    exec /sbin/initlog $INITLOG_ARGS -r /etc/rc.d/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

HOSTNAME=`/bin/hostname`
if [ -f /etc/sysconfig/network ]; then
    . /etc/sysconfig/network
else
    NETWORKING=no
fi
if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
    HOSTNAME=localhost
fi

. /etc/init.d/functions

# Start the graphical boot, if necessary
if [ "$BOOTUP" = "graphical" ]; then
  if [ -x /usr/bin/rhgb ]; then
     /usr/bin/rhgb
  else
     export BOOTUP=color
  fi
fi

last=0
for i in `LC_ALL=C grep '^[0-9]*.*respawn:/sbin/mingetty' /etc/inittab | sed 's/^.* tty\([0-9][0-9]*\).*/\1/g'`; do
      > /dev/tty$i
      last=$i
done
if [ $last -gt 0 ]; then
     > /dev/tty$((last+1))
     > /dev/tty$((last+2))
fi

if [ "`/sbin/consoletype`" = "vt" -a -x /sbin/setsysfont ]; then
   
   echo -n "Setting default font ($SYSFONT): "
   /sbin/setsysfont
   if [ $? -eq 0 ]; then
      success
   else
      failure
   fi
   echo ; echo
fi

# Print a text banner.
echo -en $"\t\tWelcome to "
if LC_ALL=C grep -q "Red Hat" /etc/redhat-release ; then
[ "$BOOTUP" = "color" ] && echo -en "\\033[0;31m"
echo -en "Red Hat"
[ "$BOOTUP" = "color" ] && echo -en "\\033[0;39m"
PRODUCT=`sed "s/Red Hat \(.*\) release.*/\1/" /etc/redhat-release`
echo " $PRODUCT"
else
PRODUCT=`sed "s/ release.*//g" /etc/redhat-release`
echo "$PRODUCT"
fi
if [ "$PROMPT" != "no" ]; then
echo -en $"\t\tPress 'I' to enter interactive startup."
echo
sleep 1
fi

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

# Mount /proc (done here so volume labels can work with fsck)
action $"Mounting proc filesystem: " mount -n -t proc /proc /proc

# Unmount the initrd, if necessary
if LC_ALL=C grep -q /initrd /proc/mounts && ! LC_ALL=C grep -q /initrd/loopfs /proc/mounts ; then
   if [ -e /initrd/dev/.devfsd ]; then
      umount /initrd/dev
   fi
   action $"Unmounting initrd: " umount /initrd
   /sbin/blockdev --flushbufs /dev/ram0 >/dev/null 2>&1
fi

# 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="$CLOCKFLAGS --hctosys"

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

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

/sbin/hwclock $CLOCKFLAGS

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

if [ "`/sbin/consoletype`" = "vt" -a -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 "/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

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

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

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

#if [ $usb = 1 -a ! -f /proc/bus/usb/devices ]; then
#    action $"Mounting USB filesystem: "  mount -t usbdevfs usbdevfs /proc/bus/usb
#fi

#needusbstorage=
#if [ $usb = "1" ]; then
#    needusbstorage=`LC_ALL=C grep -e "^I.*Cls=08" /proc/bus/usb/devices 2>/dev/null`
#    LC_ALL=C grep 'hid' /proc/bus/usb/drivers || action $"Initializing USB HID interface: " modprobe hid 2> /dev/null
#    action $"Initializing USB keyboard: " modprobe keybdev 2> /dev/null
#    action $"Initializing USB mouse: " modprobe mousedev 2> /dev/null
#fi

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

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

if [ -f /forcefsck ]; then
        fsckoptions="-f $fsckoptions"
elif [ -f /.autofsck ]; then
        echo $"Your system appears to have shut down uncleanly"
        AUTOFSCK_TIMEOUT=5
        [ -f /etc/sysconfig/autofsck ] && . /etc/sysconfig/autofsck
        if [ "$AUTOFSCK_DEF_CHECK" = "yes" ]; then
                AUTOFSCK_OPT=-f
        fi

        if [ "$PROMPT" != "no" ]; then
                if [ "$AUTOFSCK_DEF_CHECK" = "yes" ]; then
                        if /sbin/getkey -c $AUTOFSCK_TIMEOUT -m $"Press N within %d seconds to not force file system integrity check..." n ; then
                                AUTOFSCK_OPT=
                        fi
                else
                        if /sbin/getkey -c $AUTOFSCK_TIMEOUT -m $"Press Y within %d seconds to force file system integrity check..." y ; then
                                AUTOFSCK_OPT=-f
                        fi
                fi
                echo
        else
                # PROMPT not allowed
                if [ "$AUTOFSCK_DEF_CHECK" = "yes" ]; then
                        echo $"Forcing file system integrity check due to default setting"
                else
                        echo $"Not forcing file system integrity check due to default setting"
                fi
        fi
        fsckoptions="$AUTOFSCK_OPT $fsckoptions"
fi

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


_RUN_QUOTACHECK=0
ROOTFSTYPE=`awk '/ \/ / && ($3 !~ /rootfs/) { print $3 }' /proc/mounts`
if [ -z "$fastboot" -a "X$ROOTFSTYPE" != "Xnfs" ]; 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
                if [ "$BOOTUP" = "graphical" ]; then
                    chvt 1
                fi

                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."

                str=$"(Repair filesystem)"
                PS1="$str \# # "; 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

# Possibly update quotas if fsck was run on /.
LC_ALL=C grep -E '[[:space:]]+/[[:space:]]+' /etc/fstab | \
    awk '{ print $4 }' | \
    LC_ALL=C grep -q quota
_ROOT_HAS_QUOTA=$?
if [ X"$_RUN_QUOTACHECK" = X1 -a \
    "$_ROOT_HAS_QUOTA" = "0" -a \
    -x /sbin/quotacheck ]; then
        if [ -x /sbin/convertquota ]; then
            if [ -f /quota.user ]; then
                action $"Converting old user quota files: " \
                    /sbin/convertquota -u / && rm -f /quota.user
            fi
            if [ -f /quota.group ]; then
                action $"Converting old group quota files: " \
                    /sbin/convertquota -g / && rm -f /quota.group
            fi
        fi
        action $"Checking root filesystem quotas: " /sbin/quotacheck -nug /
fi

if [ -x /sbin/isapnp -a -f /etc/isapnp.conf -a ! -f /proc/isapnp ]; then
    # check for arguments passed from kernel
    if ! LC_ALL=C grep -iq nopnp /proc/cmdline >/dev/null 2>&1 ; then
        PNP=yes
    fi
    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

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

# LVM initialization
if [ -f /etc/lvmtab -a ! -e /proc/lvm ] ; then
        modprobe lvm-mod >/dev/null 2>&1
fi
if [ -e /proc/lvm -a -x /sbin/vgchange -a -f /etc/lvmtab ]; then
        action $"Setting up Logical Volume Management:" /sbin/vgscan && /sbin/vgchange -a y
fi

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

# 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



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

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

# Our modutils don't support it anymore, so we might as well remove
# the preferred link.
rm -f /lib/modules/preferred /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 | LC_ALL=C grep -- "-"`" ]; then
       ktag="`cat /proc/version`"
       mtag=`LC_ALL=C 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 if and only if they need persistent DMA buffers
if LC_ALL=C grep -q "options sound dmabuf=1" /etc/modules.conf 2>/dev/null ; then
  RETURN=0
  alias=`/sbin/modprobe -c | awk '/^alias sound / { print $3 }'`
  if [ -n "$alias" -a "$alias" != "off" ]; then
      action $"Loading sound module ($alias): " modprobe sound
      RETURN=$?
  fi
  alias=`/sbin/modprobe -c | awk '/^alias sound-slot-0 / { print $3 }'`
  if [ -n "$alias" -a "$alias" != "off" ]; then
      action $"Loading sound module ($alias): " modprobe sound-slot-0
      RETURN=$?
  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

#if [ -f /etc/raidtab ]; then
#        # Add raid devices
#        [ -f /proc/mdstat ] || modprobe md >/dev/null 2>&1
#fi
#if [ -f /etc/raidtab -a -f /proc/mdstat ]; then
#
#        echo -n $"Starting up RAID devices: "
#
#        rc=0
#       
#        for i in `awk '{if ($1=="raiddev") print $2}' /etc/raidtab`
#        do
#                RAIDDEV=`basename $i`
#                RAIDSTAT=`LC_ALL=C grep "^$RAIDDEV : active" /proc/mdstat`
#                if [ -z "$RAIDSTAT" ]; then
#                        # First scan the /etc/fstab for the "noauto"-flag
#                        # for this device. If found, skip the initialization
#                        # for it to avoid dropping to a shell on errors.
#                        # If not, try raidstart...if that fails then
#                        # fall back to raidadd, raidrun.  If that
#                        # also fails, then we drop to a shell
#                        RESULT=1
#                        INFSTAB=`LC_ALL=C grep -c "^$i" /etc/fstab`
#                        if [ $INFSTAB -eq 0 ] ; then
#                            RESULT=0
#                            RAIDDEV="$RAIDDEV(skipped)"
#                        fi
#                        NOAUTO=`LC_ALL=C grep "^$i" /etc/fstab | LC_ALL=C grep -c "noauto"`
#                        if [ $NOAUTO -gt 0 ]; then
#                            RESULT=0
#                            RAIDDEV="$RAIDDEV(skipped)"
#                        fi
#                        if [ $RESULT -gt 0 -a -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."
#
#                str=$"(RAID Repair)"
#                PS1="$str \# # "; export PS1
#                sulogin

#                echo $"Unmounting file systems"
#                umount -a
#                mount -n -o remount,ro /
#                echo $"Automatic reboot in progress."
#                reboot -f
#        fi
#        # LVM initialization, take 2 (it could be on top of RAID)
#        if [ -e /proc/lvm -a -x /sbin/vgchange -a -f /etc/lvmtab ]; then
#                action $"Setting up Logical Volume Management:" /sbin/vgscan && /sbin/vgchange -a y
#        fi
#fi

if [ -x /sbin/devlabel ]; then
        /sbin/devlabel restart
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
                if [ "$BOOTUP" = "graphical" ]; then
                    chvt 1
                fi

                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."

                str=$"(Repair filesystem)"
                PS1="$str \# # "; 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 -O no_netdev

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

if [ -x /sbin/quotaon ]; then
    action $"Enabling local filesystem quotas: " /sbin/quotaon -aug
fi

# Configure machine if necessary.
if [ -f /.unconfigured ]; then
    if [ "$BOOTUP" = "graphical" ]; then
        chvt 1
    fi

    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/kbdconfig ]; then
        /usr/sbin/kbdconfig
    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

# Clean out /.
rm -f /fastboot /fsckoptions /forcefsck /.autofsck /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
           case "`basename $afile`" in
                news|mon)        ;;
                sudo)
                                rm -f $afile/*/* ;;
                *)                rm -f $afile/* ;;
           esac
        else
           rm -f $afile
        fi
done
rm -f /var/lib/rpm/__db*

# 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 VNC & X locks
rm -rf /tmp/.X*-unix

# Delete ICE locks
rm -rf /tmp/.ICE-unix

# 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 ] && LC_ALL=C grep -q 'Type:   Sequential-Access' /proc/scsi/scsi 2>/dev/null ; then
        if LC_ALL=C grep -qv ' 9 st' /proc/devices && [ -n "$USEMODULES" ]; then
                modprobe st >/dev/null 2>&1
        fi
fi

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

# Ooh, firewire too.
if ! LC_ALL=C grep -iq "nofirewire" /proc/cmdline 2>/dev/null ; then
   aliases=`/sbin/modprobe -c | awk '/^alias ieee1394-controller/ { print $3 }'`
   if [ -n "$aliases" -a "$aliases" != "off" ]; then
      for alias in $aliases ; do
              [ "$alias" != "off" ] && action $"Initializing firewire controller ($alias): " modprobe $alias
      done
      LC_ALL=C grep -q "SBP2" /proc/bus/ieee1394/devices 2>/dev/null && modprobe sbp2 >/dev/null 2>&1
   fi
fi

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

# 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.
# Each non-disk which has no special parameters will be ignored.
#

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;
#disk[9]=hdi;  disk[10]=hdj; disk[11]=hdk; disk[12]=hdl;
#disk[13]=hdm; disk[14]=hdn; disk[15]=hdo; disk[16]=hdp;
#disk[17]=hdq; disk[18]=hdr; disk[19]=hds; disk[20]=hdt;


if [ -x /sbin/hdparm ]; then
   for device in 0 1 2 3 4; 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" ]; then
                    HDFLAGS[$device]="-q -m$MULTIPLE_IO"
                fi
                if [ -n "$USE_DMA" ]; 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" -o -f "/etc/sysconfig/harddisk${disk[$device]}" ]; 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

# Boot time profiles. Yes, this should be somewhere else.
if LC_ALL=C grep -q "netprofile=" /proc/cmdline ; then
    cmdline=`cat /proc/cmdline`
    for arg in $cmdline ; do
       if [ "${arg##netprofile=}" != "${arg}" ]; then
          [ -x /usr/sbin/redhat-config-network-cmd ] &&
            /usr/sbin/redhat-config-network-cmd --profile ${arg##netprofile=}
       fi
    done
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` -a \
        ! /boot/System.map -ef /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

# The special Red Hat kernel library symlink must point to the right library
# We need to deal with cases where there is no library, and we need to
# deal with any version numbers that show up.
shopt -s nullglob
for library in /lib/kernel/$(uname -r)/libredhat-kernel.so* ; do
        ln -f $library /lib/
        ldconfig -n /lib/
done
shopt -u nullglob

# 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 -s 131072 > /var/log/dmesg
# Also keep kernel symbols around in case we need them for debugging
i=5
while [ $i -ge 0 ]; do
        if [ -f /var/log/ksyms.$i ]; then
                mv /var/log/ksyms.$i /var/log/ksyms.$(($i+1))
        fi
        i=$(($i-1))
done
(/bin/date;
/bin/uname -a;
/bin/cat /proc/cpuinfo;
[ -r /proc/modules ] && /bin/cat /proc/modules;
[ -r /proc/ksyms ] && /bin/cat /proc/ksyms) >/var/log/ksyms.0
# create the crash indicator flag to warn on crashes, offer fsck with timeout
touch /.autofsck
sleep 1
kill -TERM `/sbin/pidof getkey` >/dev/null 2>&1
} &
if [ "$PROMPT" != "no" ]; then
   /sbin/getkey i && touch /var/run/confirm
fi
wait

[/code:1]


还有个问题
原来听说默认硬盘DMA没有打开就在rc中加了句
[code:1]
action $"set /dev/hdb dma mode: " hdparm -d1 -X67 -m16 -c3 /dev/hdb
[/code:1]

可是我发现在rc.sysinit中好象已经打开了
[code:1]
# 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.
# Each non-disk which has no special parameters will be ignored.
#

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;
#disk[9]=hdi;  disk[10]=hdj; disk[11]=hdk; disk[12]=hdl;
#disk[13]=hdm; disk[14]=hdn; disk[15]=hdo; disk[16]=hdp;
#disk[17]=hdq; disk[18]=hdr; disk[19]=hds; disk[20]=hdt;


if [ -x /sbin/hdparm ]; then
   for device in 0 1 2 3 4; 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" ]; then
                    HDFLAGS[$device]="-q -m$MULTIPLE_IO"
                fi
                if [ -n "$USE_DMA" ]; 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" -o -f "/etc/sysconfig/harddisk${disk[$device]}" ]; 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

[/code:1]


我的/etc/sysconfig/harddisks
[code:1]# These options are used to tune the hard drives -
# read the hdparm man page for more information

# Set this to 1 to enable DMA. This might cause some
# data corruption on certain chipset / hard drive
# combinations. This is used with the "-d" option

# USE_DMA=1

# Multiple sector I/O. a feature of most modern IDE hard drives,
# permitting the transfer of multiple sectors per I/O interrupt,
# rather than the usual one sector per interrupt.  When this feature
# is enabled, it typically reduces operating system overhead for disk
# I/O by 30-50%.  On many systems, it also provides increased data
# throughput of anywhere from 5% to 50%.  Some drives, however (most
# notably the WD Caviar series), seem to run slower with multiple mode
# enabled. Under rare circumstances, such failures can result in
# massive filesystem corruption. USE WITH CAUTION AND BACKUP.
# This is the sector count for multiple sector I/O - the "-m" option
#
# MULTIPLE_IO=16

# (E)IDE 32-bit I/O support (to interface card)
#
# EIDE_32BIT=3

# Enable drive read-lookahead
#
# LOOKAHEAD=1

# Add extra parameters here if wanted
# On reasonably new hardware, you may want to try -X66, -X67 or -X68
# Other flags you might want to experiment with are -u1, -a and -m
# See the hdparm manpage (man hdparm) for details and more options.
#
EXTRA_PARAMS=
[/code:1]


是不是这样?
 楼主| 发表于 2003-9-7 21:25:52 | 显示全部楼层
谁知道???
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 07:16 , Processed in 0.098448 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表