#!/bin/sh
#
# rc.M		This file is executed by init(8) when the system is being
#		initialized for one of the "multi user" run levels (i.e.
#		levels 1 through 6).  It usually does mounting of file
#		systems et al.
#
# Version:	@(#)/etc/rc.d/rc.M	2.23	Wed Feb 26 19:20:58 PST 2003
#
# Author:	Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
#		Heavily modified by Patrick Volkerding <volkerdi@slackware.com>
#

# Tell the viewers what's going to happen.
echo "Going multiuser..."

# Update all the shared library links:
if [ -x /sbin/ldconfig ]; then
  echo "Updating shared library links:  /sbin/ldconfig &"
  /sbin/ldconfig &
fi

# Screen blanks after 15 minutes idle time, and powers down in one hour
# if the kernel supports APM or ACPI power management:
#/bin/setterm -blank 15 -powersave powerdown -powerdown 60

# Set the hostname.
if [ -r /etc/HOSTNAME ]; then
  /bin/hostname $(cat /etc/HOSTNAME | cut -f1 -d .)
else
  # fall back on this old default:
  echo "darkstar.example.net" > /etc/HOSTNAME
  /bin/hostname darkstar
fi

# Save the contents of 'dmesg':
#/bin/dmesg -s 65536 > /var/log/dmesg

# Initialize PCMCIA devices:
#
# NOTE: This used to be started near the top of rc.S so that PCMCIA devices
# could be fsck'ed along with the other drives.  This had some unfortunate
# side effects, however, since root isn't yet read-write, and /var might not
# even be mounted the .pid files can't be correctly written in /var/run and
# the pcmcia system can't be correctly shut down.  If you want some PCMCIA
# partition to be mounted at boot (or when the card is inserted) then add
# the appropriate lines to /etc/pcmcia/scsi.opts.
#
# Note that the stuff in /etc/pcmcia/ is only for 2.4.x kernels using
# 16-bit PCMCIA cards (not 32-bit Cardbus cards!).  For example, with a
# wireless card you might need to set options in /etc/pcmcia OR in
# /etc/rc.d/rc.wireless.conf, or even in /etc/rc.d/rc.inet1.conf (with
# extra options if needed for the encryption key, ESSID, etc.)
#
# Hopefully this situation will be unified in the future, but for now
# that's how it is...
#
if [ -x /etc/rc.d/rc.pcmcia ]; then
  . /etc/rc.d/rc.pcmcia start
  # The cards might need a little extra time here to initialize.
  sleep 5
fi

# Start the system logger.
#if [ -x /etc/rc.d/rc.syslog -a -x /usr/sbin/syslogd -a -d /var/log ]; then
#  . /etc/rc.d/rc.syslog start
#fi

# Update the X font indexes:
#if [ -x /usr/bin/fc-cache ]; then
#  echo "Updating X font indexes:  /usr/bin/fc-cache -f &"
#  /usr/bin/fc-cache -f &
#fi

# If we are returning from single-user mode we will need to restart
# udevd on systems that use udev:
#if grep -wq sysfs /proc/mounts && grep -wq tmpfs /proc/filesystems ; then
#  if ! grep -wq nohotplug /proc/cmdline ; then
#    if [ -x /etc/rc.d/rc.udev ]; then
#      /bin/sh /etc/rc.d/rc.udev start
#    fi
#  fi
#fi

# Initialize the networking hardware.
#if [ -x /etc/rc.d/rc.inet1 ]; then
#  . /etc/rc.d/rc.inet1
#fi

# Look for additional USB/SCSI/IEEE1394/etc devices on multiple LUNs:
#if [ -x /etc/rc.d/rc.scanluns ]; then
#  . /etc/rc.d/rc.scanluns
#fi

# Start networking daemons:
#if [ -x /etc/rc.d/rc.inet2 ]; then
#  . /etc/rc.d/rc.inet2
#fi

# Mount any additional filesystem types that haven't already been mounted:
mount -a -v 2> /dev/null | grep -v "already mounted"

# Start the Network Time Protocol daemon:
#if [ -x /etc/rc.d/rc.ntpd ]; then
#  sh /etc/rc.d/rc.ntpd start
#fi

# Remove stale locks and junk files (must be done after mount -a!)
#/bin/rm -f /var/lock/* /var/spool/uucp/LCK..* /tmp/.X*lock /tmp/core /core 2> /dev/null

# Remove stale hunt sockets so the game can start.
#if [ -r /tmp/hunt -o -r /tmp/hunt.stats ]; then
#  echo "Removing your stale hunt sockets from /tmp."
#  /bin/rm -f /tmp/hunt*
#fi

# Ensure basic filesystem permissions sanity.
chmod 755 / 2> /dev/null
chmod 1777 /tmp /var/tmp

# Start APM or ACPI daemon.
# If APM is enabled in the kernel, start apmd:
if [ -e /proc/apm ]; then
  if [ -x /usr/sbin/apmd ]; then
    echo "Starting APM daemon:  /usr/sbin/apmd"
    /usr/sbin/apmd
  fi
elif [ -x /etc/rc.d/rc.acpid ]; then # otherwise, start acpid:
  . /etc/rc.d/rc.acpid start
fi

# Start D-Bus:
#if [ -x /etc/rc.d/rc.messagebus ]; then
#  sh /etc/rc.d/rc.messagebus start
#fi

# Start HAL:
#if [ -x /etc/rc.d/rc.hald ]; then
#  sh /etc/rc.d/rc.hald start
#fi

# Start the print spooling system.  This will usually be LPRng (lpd) or CUPS.
#if [ -x /etc/rc.d/rc.cups ]; then
#  # Start CUPS:
#  /etc/rc.d/rc.cups start
#elif [ -x /etc/rc.d/rc.lprng ]; then
#  # Start LPRng (lpd):
#  . /etc/rc.d/rc.lprng start
#fi

# Start smartd, which monitors the status of S.M.A.R.T. compatible
# hard drives and reports any problems.  Note some devices (which aren't
# smart, I guess ;) will hang if probed by smartd, so it's commented out
# by default.
#if [ -x /usr/sbin/smartd ]; then
#  /usr/sbin/smartd
#fi

# If we're using udev, make /dev/cdrom and any other optical drive symlinks
# if some udev rule hasn't made them already:
#if grep -wq sysfs /proc/mounts && grep -wq tmpfs /proc/filesystems; then
#  if ! grep -wq nohotplug /proc/cmdline ; then
#    if [ -x /lib/udev/rc.optical-symlinks -a -x /etc/rc.d/rc.udev ]; then
#      /bin/sh /lib/udev/rc.optical-symlinks
#    fi
#  fi
#fi

# Load ALSA (sound) defaults:
if [ -x /etc/rc.d/rc.alsa ]; then
  . /etc/rc.d/rc.alsa
fi

# Load a custom screen font if the user has an rc.font script.
#if [ -x /etc/rc.d/rc.font ]; then
#  . /etc/rc.d/rc.font
#fi

# Load a custom keymap if the user has an rc.keymap script.
if [ -x /etc/rc.d/rc.keymap ]; then
  . /etc/rc.d/rc.keymap
fi

# Start the GPM mouse server:
#if [ -x /etc/rc.d/rc.gpm ]; then
#  . /etc/rc.d/rc.gpm start
#fi

# Start the local setup procedure.
if [ -x /etc/rc.d/rc.local ]; then
  . /etc/rc.d/rc.local
fi

# All done.
