Download   Online Shop   Red Hat Network
Home  |  Products  |  Shop  |  Services  |  Training  |  Support   
Red Hat Documentation

Linux From Scratch: Creating system boot scripts Next Previous Contents

8. Creating system boot scripts

These bootscripts are started at system boot time. The scripts are responsible for mounting the root file system in read-write mode, activating swap, setting up some system settings and starting the various daemons that our system needs.

8.1 Preparing the directories and master files

You need the Sysvinit package again for this section.

  • Create the necessary directories by running:

   cd /etc
   mkdir rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d init.d rcS.d

  • Go to the unpacked Sysvinit source directory
  • Copy the Debian/etc/init.d/rc file to: /etc/init.d
  • Go to the /etc/init.d directory
  • Create a new file rcS containing the following:

   #!/bin/sh
   # Begin /etc/init.d/rcS
   runlevel=S
   prevlevel=N
   umask 022
   export runlevel prevlevel
   trap ":" INT QUIT TSTP
   for i in /etc/rcS.d/S??*
   do
      [ ! -f  "$i" ] && continue;
      $i start       
   done
   # End /etc/init.d/rcS

8.2 Creating the reboot script

  • Create a new file reboot containing the following:

   #!/bin/sh
   # Begin /etc/init.d/reboot
   echo -n "System reboot in progress..."
   /sbin/reboot -d -f -i
   # End /etc/init.d/reboot

8.3 Creating the halt script

  • Create a new file halt containing the following:

   #!/bin/sh
   # Begin /etc/init.d/halt
   /sbin/halt -d -f -i -p
   # End /etc/init.d/halt

8.4 Creating the mountfs script

  • Create a new file mountfs containing the following:

#!/bin/sh
# Begin /etc/init.d/mountfs
check_status()
{
  if [ $? = 0 ]
  then
    echo "OK"
  else
    echo "FAILED"
  fi
}
echo -n "Remounting root file system in read-write mode..."
/bin/mount -n -o remount,rw /
check_status
> /etc/mtab
/bin/mount -f -o remount,rw /
echo -n "Mounting proc file system..."
/bin/mount proc
check_status
# End /etc/init.d/mountfs

8.5 Creating the umountfs script

  • Create a new file umountfs containing the following:

#!/bin/sh
# Begin /etc/init.d/umountfs
check_status()
{
  if [ $? = 0 ]
  then
    echo "OK"
  else
    echo "FAILED"
  fi
}
echo "Deactivating swap..."
/bin/swapoff -av
check_status
echo -n "Unmounting file systems..."
/bin/umount -a -r 
check_status
# End /etc/init.d/umountfs

8.6 Creating the sendsignals script

  • Create a new file sendsignals containing the following:

#!/bin/sh
# Begin /etc/init.d/sendsignals
check_status()
{
  if [ $? = 0 ]
  then
    echo "OK"
  else
    echo "FAILED"
  fi
}
echo -n "Sending all processes the TERM signal..."
/sbin/killall5 -15
check_status
echo -n "Sending all processes the KILL signal..."
/sbin/killall5 -9
check_status

8.7 Creating the checkroot bootscript

  • Create a file /etc/init.d/checkroot containing the following:

#!/bin/sh
# Begin /etc/init.d/checkroot
echo "Activating swap..."
/sbin/swapon -av
if [ -f /fastboot ]
then
  echo "Fast boot, no file system check"
else
  /bin/mount -n -o remount,ro /
  if [ $? = 0 ]
  then
    if [ -f /forcecheck ]
    then
      force="-f"
    else
      force=""
    fi
    echo "Checking root file system..."
    /sbin/fsck $force -a /
    if [ $? -gt 1 ]
    then
      echo
      echo "fsck failed. Please repair your file system manually by"
      echo "running fsck without the -a option"
      echo "Please note that the file system is currently mounted in"
      echo "read-only mode."
      echo
      echo "I will start sulogin now. CTRL+D will reboot your system."
      /sbin/sulogin
      /reboot -f
    fi
  else
    echo "Cannot check root file system because it is not mounted in"
    echo "read-only mode."
  fi
fi
# End /etc/init.d/checkroot

8.8 Creating the Sysklogd bootscript

  • Create a new file /etc/init.d/sysklogd containing the following:

#!/bin/sh
# Begin /etc/init.d/sysklogd
check_status()
{
  if [ $? = 0 ]
  then
    echo "OK"
  else
    echo "FAILED"
  fi
}
case "$1" in
  start)
    echo -n "Starting system log daemon..."
    start-stop-daemon -S -q -o -x /usr/sbin/syslogd -- -m 0
    check_status
    echo -n "Starting kernel log daemon..."
    start-stop-daemon -S -q -o -x /usr/sbin/klogd
    check_status
    ;;
  stop)
    echo -n "Stopping kernel log daemon..."
    start-stop-daemon -K -q -o -p  /var/run/klogd.pid
    check_status
    echo -n "Stopping system log daemon..."
    start-stop-daemon -K -q -o -p /var/run/syslogd.pid
    check_status
    ;;
  reload)
    echo -n "Reloading system load daemon configuration file..."
    start-stop-daemon -K -q -o -s 1 -p /var/run/syslogd.pid
    check_status
    ;;
  restart)
    echo -n "Stopping kernel log daemon..."
    start-stop-daemon -K -q -o -p /var/run/klogd.pid
    check_status
    echo -n "Stopping system log daemon..."
    start-stop-daemon -K -q -o -p /var/run/syslogd.pid
    check_status
    sleep 1
    echo -n "Starting system log daemon..."
    start-stop-daemon -S -q -o -x /usr/sbin/syslogd -- -m 0
    check_status
    echo -n "Starting kernel log daemon..."
    start-stop-daemon -S -q -o -x /usr/sbin/klogd
    check_status
    ;;
  *)
    echo "Usage: $0 {start|stop|reload|restart}"
    exit 1
    ;;
esac
# End /etc/init.d/sysklogd

8.9 Setting up symlinks and permissions

  • Set the proper file permissions and symlinks by running:

chmod 755 rcS reboot halt mountfs umountfs sendsignals checkroot sysklogd
cd ../rc0.d
ln -s ../init.d/sysklogd K90sysklogd
ln -s ../init.d/sendsignals S80sendsignals
ln -s ../init.d/umountfs S90umountfs
ln -s ../init.d/halt S99halt
cd ../rc6.d
ln -s ../init.d/sysklogd K90sysklogd
ln -s ../init.d/sendsignals S80sendsignals
ln -s ../init.d/umountfs S90umountfs
ln -s ../init.d/reboot S99reboot
cd ../rcS.d
ln -s ../init.d/checkroot S05checkroot
ln -s ../init.d/mountfs S10mountfs
cd /etc/rc2.d
ln -s ../init.d/sysklogd S03sysklogd

8.10 Creating the /etc/fstab file

  • Create a file /etc/fstab containing the following:

   /dev/<LFS-partition designation> / ext2 defaults 0 1
   /dev/<swap-partition designation> none swap sw 0 0
   proc /proc proc defaults 0 0

Next Previous Contents

 

 
 
Search for:  on    Powered by Google
Products & Services   :   Download   :   Support   :   Training   :   Partners & Programs
© 2000 Red Hat, Inc. All right reserved.       About Red Hat   :   Legal statement   :   Privacy statement   :   Y2K statement   :   Contact Red Hat