slitaz-boot-scripts annotate etc/init.d/rcS @ rev 181

Tiny edits
author Paul Issott <paul@slitaz.org>
date Sat Oct 24 12:29:17 2009 +0000 (2009-10-24)
parents 317bbc101951
children c9e9d25f04a3
rev   line source
pankso@5 1 #!/bin/sh
pankso@153 2 # /etc/init.d/rcS - Initial boot script for SliTaz GNU/Linux.
pankso@153 3 # Config file is : /etc/rcS.conf
pankso@5 4 #
pankso@153 5 # rcS is the main initialization script used to check fs, mount, clean,
pankso@153 6 # run scripts and start daemons.
pankso@5 7 #
pankso@5 8 . /etc/init.d/rc.functions
pankso@5 9 . /etc/rcS.conf
pankso@5 10
pankso@171 11 if [ "$1" != "logged" ]; then # logged
pankso@171 12
pankso@171 13 echo "Processing /etc/init.d/rcS..."
pankso@171 14
pankso@171 15 # Mount /proc.
pankso@171 16 echo -n "Mounting proc filesystem..."
pankso@171 17 /bin/mount proc
pankso@171 18 status
pankso@171 19
pankso@158 20 # Parse cmdline args for earlier boot options. All other boot options
pankso@158 21 # are in /etc/init./bootopts.sh.
pankso@171 22 echo -n "Searching for early boot options..."
pankso@161 23 for opt in `cat /proc/cmdline`
pankso@158 24 do
pankso@158 25 case $opt in
pankso@159 26 fastbootx|fbx)
pankso@158 27 FAST_BOOT_X="yes" ;;
pankso@159 28 cdrom=*)
pankso@158 29 CDROM=${opt#cdrom=} ;;
pankso@159 30 modprobe=*)
pankso@158 31 MODPROBE="yes" ;;
pankso@159 32 config=*)
pankso@158 33 CONFIG=${opt#config=} ;;
pankso@158 34 *)
pankso@158 35 continue ;;
pankso@158 36 esac
pankso@158 37 done
pankso@143 38 status
pankso@5 39
pankso@153 40 # Start Udev to populate /dev and handle hotplug events
pankso@153 41 if [ "$UDEV" = "yes" ]; then
pankso@153 42 echo -n "Starting udev daemon..."
pankso@153 43 /sbin/udevd --daemon
pankso@153 44 status
pankso@153 45 echo -n "Udevadm requesting events from the Kernel..."
pankso@153 46 udevadm trigger
pankso@153 47 status
pankso@153 48 echo -n "Udevadm waiting for the event queue to finish..."
pankso@153 49 udevadm settle
pankso@153 50 status
pankso@153 51 echo "/sbin/udevd" > /proc/sys/kernel/hotplug
pankso@153 52 fi
pankso@153 53
pankso@5 54 # Before mounting filesystems we check fs specified in the file
pankso@5 55 # /etc/rcS.conf and variable $CHECK_FS.
pankso@153 56 if [ -n "$CHECK_FS" ]; then
pankso@5 57 mount -o remount,ro /
pankso@5 58 for i in $CHECK_FS
pankso@5 59 do
pankso@5 60 echo "Checking filesystem on : $i"
pankso@5 61 /sbin/e2fsck -p $i
pankso@5 62 done
pankso@5 63 fi
pankso@5 64
pankso@5 65 # Remount rootfs rw.
pankso@171 66 echo "Remounting rootfs read/write..."
pankso@5 67 /bin/mount -o remount,rw /
pankso@5 68
MikeDSmith25@107 69 # Mount filesystems in /etc/fstab.
pankso@171 70 echo "Mounting filesystems in fstab..."
pankso@5 71 /bin/mount -a
pankso@5 72
pankso@157 73 # Store boot messages to log files.
pankso@157 74 /bin/dmesg > /var/log/dmesg.log &
pascal@122 75 vcsa2txt < /dev/vcsa1 | awk 'BEGIN {s=0} /^Processing|^.witching/ {s=1} { if (s) print }' >/var/log/boot.log
pascal@47 76 script -a -q -c '/etc/init.d/rcS logged' /var/log/boot.log
pascal@41 77
pankso@153 78 else # logged
pascal@41 79
pankso@157 80 # Clean up the system.
pankso@157 81 if [ "$CLEAN_UP_SYSTEM" = "yes" ]; then
pankso@171 82 echo -n "Cleaning up the system..."
pascal@176 83 find /var/run -name "*.pid" -type f | xargs /bin/rm -f
pascal@176 84 /bin/rm -rf /tmp /var/run/dbus/* /var/run/hald/pid /var/lock/*
pankso@157 85 /bin/mkdir -p /tmp && /bin/chmod 1777 /tmp
pankso@157 86 status
pankso@157 87 else
pankso@171 88 echo "System clean up is disabled in /etc/rcS.conf..."
pankso@171 89 echo -n "Keeping all tmp and pid files..."
pankso@157 90 status
pankso@157 91 fi
pankso@157 92
pankso@157 93 # Set up tmp X11 and ICE dir.
pankso@171 94 echo -n "Setting up tmp X11 and ICE unix dir..."
pankso@157 95 /bin/mkdir -p /tmp/.X11-unix /tmp/.ICE-unix
pankso@157 96 /bin/chmod 1777 /tmp/.X11-unix /tmp/.ICE-unix
pankso@157 97 status
pankso@157 98
pankso@157 99 # Fast boot into X for HD install or custom Live system. We need
paul@181 100 # keymap settings since Xvesa dumps the console mapping and a correct
pankso@157 101 # slim configuration for screen resolution. DBUS and HAL must also start
paul@181 102 # before X session (manual login or autologin) to have devices in PCmanFM.
pankso@158 103 if [ "$FAST_BOOT_X" = "yes" ]; then
pankso@157 104 /etc/init.d/i18n.sh
pankso@157 105 /etc/init.d/dbus start
pankso@157 106 /etc/init.d/hald start
pankso@157 107 /etc/init.d/slim start &
pankso@157 108 fi
pankso@157 109
MikeDSmith25@107 110 # Create /dev/cdrom if needed (symlink does not exist on LiveCD).
MikeDSmith25@107 111 # Also add /dev/cdrom to fstab if entry does not exist.
pankso@158 112 if [ -n "$CDROM" ]; then
pankso@158 113 DRIVE_NAME=${CDROM#/dev/}
pankso@157 114 else
pankso@157 115 DRIVE_NAME=`cat /proc/sys/dev/cdrom/info | grep "drive name" | cut -f 3`
pascal@91 116 fi
pascal@45 117 if [ -n "$DRIVE_NAME" -a ! "`readlink /dev/cdrom`" ]; then
pankso@19 118 echo -n "Creating symlink : /dev/cdrom..."
pankso@19 119 ln -s /dev/$DRIVE_NAME /dev/cdrom
pankso@66 120 ln -s /dev/$DRIVE_NAME /dev/dvd
pankso@19 121 status
pankso@19 122 fi
pankso@19 123 if ! grep -q "/dev/cdrom" /etc/fstab; then
pankso@19 124 echo -n "Adding /dev/cdrom to fstab..."
pascal@63 125 echo '/dev/cdrom /media/cdrom iso9660 user,ro,noauto 0 0' \
pankso@19 126 >> /etc/fstab
pankso@19 127 status
pankso@19 128 fi
pankso@49 129 # Chmod hack on each boot for Asunder and burnbox. Allowing all users
pankso@49 130 # to burn/rip CD/DVD.
pankso@49 131 if [ -n "$DRIVE_NAME" -a "`readlink /dev/cdrom`" ]; then
pankso@49 132 echo -n "Chmoding cdrom device..."
pankso@49 133 chmod 0666 /dev/cdrom
pankso@66 134 chmod 0666 /dev/dvd
pankso@49 135 chmod 0666 /dev/$DRIVE_NAME
pankso@49 136 status
pankso@49 137 fi
pankso@19 138
pankso@15 139 # Handle kernel cmdline parameter modprobe=<module_list>
pankso@158 140 if [ -n "$MODPROBE" ]; then
pankso@15 141 MODULES=`sed -e 's/.* modprobe=\([^ ]*\).*/\1/' -e 's/,/\n/g' < /proc/cmdline`
pankso@15 142 for i in $MODULES; do
pankso@15 143 echo -n "Loading kernel module $i"
pankso@15 144 /sbin/modprobe $i
pankso@15 145 status
pankso@15 146 done
pankso@15 147 fi
pankso@15 148
pankso@5 149 # Handle kernel cmdline parameter config=<device>,<path> to source a
pankso@5 150 # disk init script
pankso@158 151 if [ -n "$CONFIG" ]; then
pankso@5 152 DEVICE=${CONFIG%,*}
pankso@5 153 SCRIPT=${CONFIG#*,}
pascal@110 154 echo "Probing $DEVICE... "
pascal@110 155 if ! /bin/mount -r $DEVICE /mnt; then
pascal@179 156 if echo $DEVICE | grep -Eq "/dev/sd|UUID=|LABEL="; then
pascal@110 157 USBDELAY=`cat /sys/module/usb_storage/parameters/delay_use`
pascal@110 158 USBDELAY=$((1+$USBDELAY))
pascal@110 159 echo "$DEVICE is potentially a USB device: sleep for $USBDELAY seconds"
pascal@110 160 sleep $USBDELAY
pascal@110 161 fi
pascal@110 162 if ! /bin/mount -r $DEVICE /mnt; then
pascal@110 163 CONFIG=""
pascal@110 164 fi
pascal@110 165 fi
pankso@171 166 echo -n "Source $SCRIPT from $DEVICE..."
pascal@110 167 if [ -n "$CONFIG" ]; then
pankso@5 168 . /mnt/$SCRIPT
pascal@177 169 /bin/umount /mnt 2> /dev/null || true
pankso@5 170 fi
pankso@5 171 status
pankso@5 172 fi
pankso@5 173
pascal@124 174 # Mount /proc/bus/usb.
pascal@124 175 if [ -d /proc/bus/usb ]; then
pankso@171 176 echo -n "Mounting /proc/bus/usb filesystem..."
pascal@124 177 /bin/mount -t usbfs usbfs /proc/bus/usb
pascal@124 178 status
pascal@124 179 fi
pascal@124 180
pankso@5 181 # Start syslogd and klogd.
pankso@5 182 if [ "$KERNEL_LOG_DAEMONS" = "yes" ]; then
pankso@171 183 echo -n "Starting system log deamon: syslogd..."
pankso@5 184 /sbin/syslogd -s $SYSLOGD_ROTATED_SIZE && status
pankso@171 185 echo -n "Starting kernel log daemon: klogd..."
pankso@5 186 /sbin/klogd && status
pankso@5 187 else
pankso@171 188 echo "Kernel log daemons are disabled in /etc/rc.conf..."
pankso@5 189 fi
pankso@5 190
pankso@5 191 # Load all modules listed in config file.
pankso@153 192 if [ -n "$LOAD_MODULES" ]; then
pankso@5 193 for mod in $LOAD_MODULES
pankso@5 194 do
pankso@5 195 modprobe $mod
pankso@5 196 done
pankso@5 197 fi
pankso@5 198
paul@181 199 # Be quiet on configuration to avoid messages overwriting ncurses dialog
pankso@143 200 echo "0 0 0 0" > /proc/sys/kernel/printk
pankso@143 201
pankso@153 202 # Detect PCI and USB devices with Tazhw from slitaz-tools. We load
paul@181 203 # kernel modules only at first boot or in LiveCD mode.
pankso@153 204 if [ ! -s /var/lib/detected-modules ]; then
pankso@153 205 /sbin/tazhw init
pankso@153 206 fi
pankso@153 207
pankso@5 208 # Start all scripts specified with $RUN_SCRIPTS.
MikeDSmith25@107 209 echo "Executing all initialization scripts..."
pankso@5 210 for script in $RUN_SCRIPTS
pankso@5 211 do
pankso@55 212 if [ -x /etc/init.d/$script ]; then
pankso@32 213 /etc/init.d/$script
pankso@32 214 fi
pankso@5 215 done
pankso@5 216
MikeDSmith25@107 217 # Re-source main config file. In Live mode, daemons list can be modified
pankso@153 218 # by boot options (screen=text will remove slim).
pankso@32 219 . /etc/rcS.conf
pankso@32 220
pankso@5 221 # Start all daemons specified with $RUN_DAEMONS.
pankso@5 222 echo "Starting all daemons specified in /etc/rcS.conf..."
pankso@5 223 for daemon in $RUN_DAEMONS
pankso@5 224 do
pankso@32 225 if [ -x /etc/init.d/$daemon ]; then
pankso@32 226 /etc/init.d/$daemon start
pankso@32 227 fi
pankso@5 228 done
pankso@5 229
pankso@143 230 # Back to a verbose mode.
pankso@143 231 echo "7 4 1 7" > /proc/sys/kernel/printk
pankso@143 232
pankso@5 233 # Reset screen and display a bold message.
pankso@5 234 if [ -n "$MESSAGE" ]; then
pankso@5 235 /usr/bin/reset
pankso@5 236 echo -e "\033[1m$MESSAGE\033[0m"
pankso@5 237 fi
pankso@5 238
pankso@157 239 fi # logged