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

rcS: log readwrite
author Christophe Lincoln <pankso@slitaz.org>
date Sat Jun 02 00:22:08 2012 +0200 (2012-06-02)
parents 1ac4d1be812e
children 175982c0484c
rev   line source
pankso@5 1 #!/bin/sh
pankso@302 2 #
pankso@302 3 # /etc/init.d/rcS : Initial boot script for SliTaz GNU/Linux
pankso@302 4 # Configuration file : /etc/rcS.conf
pankso@5 5 #
pankso@153 6 # rcS is the main initialization script used to check fs, mount, clean,
pankso@153 7 # run scripts and start daemons.
pankso@5 8 #
pankso@5 9 . /etc/init.d/rc.functions
pankso@5 10 . /etc/rcS.conf
pankso@5 11
pankso@302 12 # Set PATH, TZ and boot time.
pankso@302 13 export PATH=/bin:/sbin:/usr/bin:/usr/sbin
pankso@262 14 [ -s /etc/TZ ] && export TZ="$(cat /etc/TZ)"
pankso@302 15 [ -n "$bootdate" ] || bootdate=$(date +%s)
pankso@187 16
pascal@276 17 case "$1" in
pascal@276 18
pascal@276 19 readonly)
pankso@246 20
pankso@305 21 colorize 34 "Processing: /etc/init.d/rcS..."
pankso@171 22
pankso@171 23 # Mount /proc.
pankso@305 24 echo -n "Mounting proc filesystem on /proc"
pankso@302 25 mount proc && status
pankso@302 26
pankso@302 27 # Mount /run as tmpfs to avoid pidfile and other runtime data behing
pankso@302 28 # writting to disk.
pankso@302 29 echo -n "Mounting tmpfs filesystem on: /run"
pankso@302 30 mount -t tmpfs tmpfs /run
pankso@171 31 status
pankso@171 32
slaxemulator@247 33 # Trigger Udev and handle hotplug events
pankso@305 34 if [ "$UDEV" == "yes" ]; then
pankso@305 35 echo -n "Mounting devtmpfs filesystem on: /dev"
pankso@302 36 mount -t devtmpfs devtmpfs /dev
pankso@302 37 status
pankso@269 38 echo "Starting udev daemon..."
pankso@302 39 udevd --daemon 2>/dev/null
pankso@269 40 echo "Udevadm requesting events from the Kernel..."
slaxemulator@260 41 udevadm trigger
pankso@269 42 echo "Udevadm waiting for the event queue to finish..."
pankso@302 43 udevadm settle --timeout=120
pankso@302 44 # Disable hotplug helper since udevd listen to netlink
pankso@302 45 echo "" > /proc/sys/kernel/hotplug
slaxemulator@247 46 fi
slaxemulator@247 47
pankso@305 48 # Busybox mdev is an udev alternative tu Udev.
pankso@305 49 if [ "$UDEV" == "mdev" ]; then
pankso@305 50 echo -n "Executing mdev -s to populate /dev..."
pankso@305 51 mdev -s && echo "mdev" > /proc/sys/kernel/hotplug
pankso@305 52 status
pankso@305 53 fi
pankso@305 54
pankso@305 55 # Before mounting filesystems we check fs specified in the file
pankso@305 56 # /etc/rcS.conf and variable $CHECK_FS. WE need udev started to
pankso@305 57 # have /dev/* populated
pankso@305 58 if [ "$CHECK_FS" ]; then
pankso@305 59 mount -o remount,ro /
pankso@305 60 for i in $CHECK_FS; do
pankso@305 61 colorize 36 "Checking filesystem: $i"
pankso@305 62 e2fsck -p $i
pankso@305 63 done
pankso@305 64 fi
pankso@305 65
pankso@305 66 # Remount rootfs rw.
pankso@305 67 echo "Remounting rootfs read/write..."
pankso@305 68 mount -o remount,rw /
pankso@305 69
MikeDSmith25@107 70 # Mount filesystems in /etc/fstab.
pankso@171 71 echo "Mounting filesystems in fstab..."
pankso@302 72 mount -a
pankso@305 73 ;;
pankso@305 74
pankso@305 75 readwrite)
pankso@302 76
pankso@302 77 # Be quiet
pankso@302 78 echo "0 0 0 0" > /proc/sys/kernel/printk
pankso@5 79
pankso@157 80 # Store boot messages to log files.
pankso@302 81 dmesg > /var/log/dmesg.log &
pascal@276 82
pascal@276 83 # Parse cmdline args for earlier boot options. All other boot options
pascal@276 84 # are in /etc/init./bootopts.sh.
pascal@276 85 echo -n "Searching for early boot options..."
pankso@302 86 for opt in $(cat /proc/cmdline)
pascal@276 87 do
pascal@276 88 case $opt in
pascal@276 89 modprobe=*)
pascal@276 90 export MODPROBE="yes" ;;
pascal@276 91 config=*)
pascal@276 92 export CONFIG=${opt#config=} ;;
pascal@276 93 *)
pascal@276 94 continue ;;
pascal@276 95 esac
pascal@276 96 done
pascal@276 97 status
pascal@41 98
pankso@304 99 # Clean up the system and set up tmp dirs. Since we mount /run as tmpfs
pankso@304 100 # and have a symlink for /var/run we should have empty directories. But,
pankso@304 101 # some packages may overwrite the link, so make sure we have it.
pankso@157 102 if [ "$CLEAN_UP_SYSTEM" = "yes" ]; then
pankso@171 103 echo -n "Cleaning up the system..."
pankso@304 104 rm -rf /tmp /var/run && ln -s /run /var/run
pankso@304 105 mkdir -p /tmp/.X11-unix /tmp/.ICE-unix /run/dbus
pankso@302 106 chmod -R 1777 /tmp
pankso@157 107 status
pankso@157 108 else
pankso@302 109 echo "System clean up is disabled in: /etc/rcS.conf"
pankso@262 110 fi
pankso@262 111
gokhlayeh@241 112 # Handle kernel cmdline parameter modprobe=<module_list>
pankso@302 113 if [ "$MODPROBE" ]; then
pankso@302 114 MODULES=$(sed -e 's/.* modprobe=\([^ ]*\).*/\1/' -e 's/,/\n/g' < /proc/cmdline)
pankso@15 115 for i in $MODULES; do
pankso@302 116 echo -n "Loading kernel module: $i"
pankso@302 117 modprobe $i
gokhlayeh@241 118 status
pankso@15 119 done
pankso@15 120 fi
pankso@15 121
gokhlayeh@241 122 # Handle kernel cmdline parameter config=<device>,<path> to source a
pankso@5 123 # disk init script
pankso@158 124 if [ -n "$CONFIG" ]; then
pankso@5 125 DEVICE=${CONFIG%,*}
pankso@5 126 SCRIPT=${CONFIG#*,}
pascal@110 127 echo "Probing $DEVICE... "
pankso@302 128 if ! mount -r $DEVICE /mnt; then
pascal@179 129 if echo $DEVICE | grep -Eq "/dev/sd|UUID=|LABEL="; then
pankso@302 130 USBDELAY=$(cat /sys/module/usb_storage/parameters/delay_use)
pascal@110 131 USBDELAY=$((1+$USBDELAY))
pascal@110 132 echo "$DEVICE is potentially a USB device: sleep for $USBDELAY seconds"
pascal@110 133 sleep $USBDELAY
pascal@110 134 fi
pankso@302 135 if ! mount -r $DEVICE /mnt; then
pascal@110 136 CONFIG=""
pascal@110 137 fi
pascal@110 138 fi
pankso@171 139 echo -n "Source $SCRIPT from $DEVICE..."
pascal@110 140 if [ -n "$CONFIG" ]; then
pankso@5 141 . /mnt/$SCRIPT
pankso@302 142 umount /mnt 2> /dev/null || true
pankso@5 143 fi
gokhlayeh@241 144 status
pankso@5 145 fi
pankso@5 146
pankso@302 147 # Mount /proc/bus/usb
pascal@124 148 if [ -d /proc/bus/usb ]; then
pankso@171 149 echo -n "Mounting /proc/bus/usb filesystem..."
pankso@302 150 mount -t usbfs usbfs /proc/bus/usb
pascal@124 151 status
pascal@124 152 fi
pascal@124 153
pankso@302 154 # Start syslogd and klogd
pankso@302 155 echo -n "Starting system log deamon: syslogd..."
pankso@302 156 syslogd -s $SYSLOGD_ROTATED_SIZE && status
pankso@302 157 echo -n "Starting kernel log daemon: klogd..."
pankso@302 158 klogd && status
pankso@262 159
pankso@302 160 # Load all modules listed in config file
pankso@302 161 if [ "$LOAD_MODULES" ]; then
pankso@302 162 colorize 33 "Loading Kernel modules..."
pankso@302 163 for mod in $LOAD_MODULES; do
pankso@302 164 echo -n "Loading module: $mod"
pankso@5 165 modprobe $mod
pankso@302 166 status
pankso@5 167 done
pankso@5 168 fi
pankso@5 169
pankso@153 170 # Detect PCI and USB devices with Tazhw from slitaz-tools. We load
paul@181 171 # kernel modules only at first boot or in LiveCD mode.
pankso@153 172 if [ ! -s /var/lib/detected-modules ]; then
pankso@302 173 tazhw init
pankso@153 174 fi
pankso@153 175
pankso@302 176 # Call udevadm trigger to ensure /dev is fully populate now that all
pankso@262 177 # modules are loaded.
slaxemulator@260 178 if [ "$UDEV" = "yes" ]; then
pankso@302 179 echo -n "Triggering udev events: --action=add"
pankso@302 180 udevadm trigger --action=add
slaxemulator@260 181 status
slaxemulator@260 182 fi
slaxemulator@260 183
pankso@302 184 # Start all scripts specified with $RUN_SCRIPTS
pankso@302 185 for script in $RUN_SCRIPTS; do
pankso@302 186 echo $(colorize 34 "Processing: /etc/init.d/$script")
pankso@302 187 /etc/init.d/$script
pankso@5 188 done
pankso@5 189
pankso@302 190 # Start all daemons specified with $RUN_DAEMONS
pankso@302 191 if [ "$RUN_DAEMONS" ]; then
pankso@302 192 colorize 33 "Starting all daemons..."
pankso@302 193 for daemon in $RUN_DAEMONS; do
pankso@32 194 /etc/init.d/$daemon start
pankso@302 195 done
pankso@5 196 fi
pankso@5 197
pankso@302 198 # Back to a verbose mode
pankso@302 199 (sleep 6 && echo "7 4 1 7" > /proc/sys/kernel/printk) &
pankso@302 200
pankso@302 201 if [ "$MESSAGE" ]; then
pankso@302 202 newline
pankso@302 203 colorize 32 "$MESSAGE"
pankso@302 204 fi
pankso@302 205
pankso@302 206 # Display and log boot time
pankso@187 207 time=$((`date +%s` - $bootdate))
pankso@187 208 echo $time > /var/log/boot-time
pankso@187 209 echo "SliTaz boot time: ${time}s"
pascal@276 210 ;;
pankso@187 211
pascal@276 212 *)
pankso@305 213 # --> readonly --> readwrite
pankso@305 214 #if [ ! -s /tmp/boot.log ]; then
pankso@305 215 #mount -t tmpfs tmpfs /tmp
pankso@302 216 #mount -t devpts devpts /dev/pts
pankso@302 217 #fi
pankso@305 218 #script -aqc '/etc/init.d/rcS readonly' /tmp/boot.log
pankso@302 219 /etc/init.d/rcS readonly
pankso@305 220 #umount /tmp
pankso@302 221 # Lograde boot.log
pankso@305 222 last=.9
pankso@305 223 for i in .8 .7 .6 .5 .4 .3 .2 .1 .0 '' ; do
pankso@305 224 mv -f /var/log/boot.log$i /var/log/boot.log$last 2>/dev/null
pankso@305 225 last=$i
pankso@305 226 done
pankso@305 227 #mv -f /tmp/boot.log /var/log/boot.log
pankso@305 228 script -aqc '/etc/init.d/rcS readwrite' /var/log/boot.log ;;
pascal@276 229 esac