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

network.sh: better handle WEP connections, handle EAP, store Wi-Fi neworks by default; network.conf: migrate to extended format to support EAP arguments, and few more.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Mon Mar 23 02:01:21 2015 +0200 (2015-03-23)
parents f0e04a0ba4d5
children 7acd64a8f538
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@187 15
pascal@276 16 case "$1" in
pascal@276 17
pascal@276 18 readonly)
pankso@246 19
al@393 20 colorize 34 'Processing: /etc/init.d/rcS...'
pankso@171 21
pankso@306 22 # Mount /proc
al@393 23 echo -n 'Mounting proc filesystem on /proc'
pankso@302 24 mount proc && status
pankso@302 25
slaxemulator@247 26 # Trigger Udev and handle hotplug events
pankso@305 27 if [ "$UDEV" == "yes" ]; then
al@393 28 echo -n 'Mounting devtmpfs filesystem on: /dev'
pankso@302 29 mount -t devtmpfs devtmpfs /dev
pankso@302 30 status
al@393 31
al@393 32 echo 'Starting udev daemon...'
pankso@302 33 udevd --daemon 2>/dev/null
al@393 34
al@393 35 echo 'Udevadm requesting events from the Kernel...'
slaxemulator@260 36 udevadm trigger
al@393 37
al@393 38 echo 'Udevadm waiting for the event queue to finish...'
pankso@302 39 udevadm settle --timeout=120
pankso@302 40 # Disable hotplug helper since udevd listen to netlink
al@393 41 echo '' > /proc/sys/kernel/hotplug
pankso@356 42 else
al@393 43 echo -n 'Executing mdev -s to populate /dev...'
al@393 44 mdev -s && echo 'mdev' > /proc/sys/kernel/hotplug
pankso@305 45 status
pankso@305 46 fi
pankso@305 47
pankso@305 48 # Before mounting filesystems we check fs specified in the file
pankso@305 49 # /etc/rcS.conf and variable $CHECK_FS. WE need udev started to
pankso@305 50 # have /dev/* populated
pankso@305 51 if [ "$CHECK_FS" ]; then
pankso@305 52 mount -o remount,ro /
pankso@305 53 for i in $CHECK_FS; do
pankso@305 54 colorize 36 "Checking filesystem: $i"
pankso@305 55 e2fsck -p $i
pankso@305 56 done
pankso@305 57 fi
pankso@305 58
pankso@305 59 # Remount rootfs rw.
al@393 60 echo 'Remounting rootfs read/write...'
pankso@305 61 mount -o remount,rw /
pascal@381 62 sync # ensure rw state
pankso@305 63
MikeDSmith25@107 64 # Mount filesystems in /etc/fstab.
al@393 65 echo 'Mounting filesystems in fstab...'
pankso@302 66 mount -a
pankso@305 67 ;;
pankso@305 68
al@393 69
pankso@305 70 readwrite)
pankso@302 71
pankso@302 72 # Be quiet
al@393 73 echo '0 0 0 0' > /proc/sys/kernel/printk
pankso@5 74
pankso@157 75 # Store boot messages to log files.
pankso@302 76 dmesg > /var/log/dmesg.log &
pascal@276 77
pascal@276 78 # Parse cmdline args for earlier boot options. All other boot options
pascal@276 79 # are in /etc/init./bootopts.sh.
al@393 80 echo -n 'Searching for early boot options...'
al@393 81 for opt in $(cat /proc/cmdline); do
pascal@276 82 case $opt in
pascal@276 83 modprobe=*)
al@393 84 export MODPROBE='yes' ;;
pascal@276 85 config=*)
pascal@276 86 export CONFIG=${opt#config=} ;;
pankso@349 87 screen=*)
pankso@349 88 export SCREEN=${opt#screen=} ;;
pascal@276 89 *)
pascal@276 90 continue ;;
pascal@276 91 esac
pascal@276 92 done
pascal@276 93 status
pascal@41 94
paul@351 95 # Clean up the system and set up tmp dirs. */run/* are tmpfs so they are
paul@351 96 # cleaned up at shutdown.
al@393 97 if [ "$CLEAN_UP_SYSTEM" == 'yes' ]; then
al@393 98 echo -n 'Cleaning up the system...'
pankso@345 99 rm -rf /tmp
pankso@345 100 mkdir -p /tmp/.X11-unix /tmp/.ICE-unix
pankso@302 101 chmod -R 1777 /tmp
pankso@157 102 status
pankso@157 103 else
al@393 104 echo 'System clean up is disabled in: /etc/rcS.conf'
pankso@262 105 fi
pankso@262 106
gokhlayeh@241 107 # Handle kernel cmdline parameter modprobe=<module_list>
pankso@302 108 if [ "$MODPROBE" ]; then
pankso@306 109 mods=$(sed -e 's/.* modprobe=\([^ ]*\).*/\1/' -e 's/,/\n/g' < /proc/cmdline)
pankso@306 110 for i in $mods; do
pankso@302 111 echo -n "Loading kernel module: $i"
pankso@302 112 modprobe $i
gokhlayeh@241 113 status
pankso@15 114 done
pankso@15 115 fi
pankso@15 116
gokhlayeh@241 117 # Handle kernel cmdline parameter config=<device>,<path> to source a
pankso@5 118 # disk init script
pankso@158 119 if [ -n "$CONFIG" ]; then
pankso@5 120 DEVICE=${CONFIG%,*}
pankso@5 121 SCRIPT=${CONFIG#*,}
pascal@110 122 echo "Probing $DEVICE... "
pankso@302 123 if ! mount -r $DEVICE /mnt; then
al@393 124 if echo $DEVICE | grep -Eq '/dev/sd|UUID=|LABEL='; then
pankso@302 125 USBDELAY=$(cat /sys/module/usb_storage/parameters/delay_use)
pascal@110 126 USBDELAY=$((1+$USBDELAY))
pascal@110 127 echo "$DEVICE is potentially a USB device: sleep for $USBDELAY seconds"
pascal@110 128 sleep $USBDELAY
pascal@110 129 fi
pankso@302 130 if ! mount -r $DEVICE /mnt; then
pascal@110 131 CONFIG=""
pascal@110 132 fi
pascal@110 133 fi
pankso@171 134 echo -n "Source $SCRIPT from $DEVICE..."
pascal@110 135 if [ -n "$CONFIG" ]; then
pankso@5 136 . /mnt/$SCRIPT
pankso@302 137 umount /mnt 2> /dev/null || true
pankso@5 138 fi
gokhlayeh@241 139 status
pankso@5 140 fi
pankso@5 141
pankso@302 142 # Mount /proc/bus/usb
pascal@124 143 if [ -d /proc/bus/usb ]; then
al@393 144 echo -n 'Mounting usbfs filesystem on: /proc/bus/usb'
pankso@302 145 mount -t usbfs usbfs /proc/bus/usb
pascal@124 146 status
pascal@124 147 fi
pascal@124 148
pankso@302 149 # Start syslogd and klogd
al@393 150 echo -n 'Starting system log daemon: syslogd...'
pankso@302 151 syslogd -s $SYSLOGD_ROTATED_SIZE && status
al@393 152 echo -n 'Starting kernel log daemon: klogd...'
pankso@302 153 klogd && status
pankso@262 154
pankso@302 155 # Load all modules listed in config file
pankso@302 156 if [ "$LOAD_MODULES" ]; then
al@393 157 colorize 33 'Loading Kernel modules...'
pankso@302 158 for mod in $LOAD_MODULES; do
pankso@302 159 echo -n "Loading module: $mod"
pankso@5 160 modprobe $mod
pankso@302 161 status
pankso@5 162 done
pankso@5 163 fi
pankso@5 164
pankso@153 165 # Detect PCI and USB devices with Tazhw from slitaz-tools. We load
paul@181 166 # kernel modules only at first boot or in LiveCD mode.
pankso@153 167 if [ ! -s /var/lib/detected-modules ]; then
pankso@302 168 tazhw init
pankso@153 169 fi
pankso@153 170
paul@344 171 # Call udevadm trigger to ensure /dev is fully populated now that all
pankso@262 172 # modules are loaded.
al@393 173 if [ "$UDEV" == 'yes' ]; then
al@393 174 echo -n 'Triggering udev events: --action=add'
pankso@302 175 udevadm trigger --action=add
slaxemulator@260 176 status
slaxemulator@260 177 fi
slaxemulator@260 178
pankso@302 179 # Start all scripts specified with $RUN_SCRIPTS
pankso@302 180 for script in $RUN_SCRIPTS; do
pankso@302 181 echo $(colorize 34 "Processing: /etc/init.d/$script")
pankso@302 182 /etc/init.d/$script
pankso@5 183 done
pankso@5 184
pankso@365 185 # Start X session. Dbus must be started before Xorg and other daemons.
pankso@365 186 # We started it here because X is run before RUN_DAEMONS. Sleep, in
pankso@365 187 # some in live mode we boot too fast and X can't initialize.
al@393 188 if [ "$SCREEN" != 'text' ] && [ "$LOGIN_MANAGER" ] &&
pascal@385 189 [ -x /usr/bin/tazx ] && [ -s /etc/slitaz/applications.conf ] &&
pankso@365 190 [ -x "/etc/init.d/$LOGIN_MANAGER" ]; then
al@393 191 colorize 36 'Starting X environment...'
pankso@359 192 # We need Xorg 40-Keyboard.conf and SliTaz applications.conf
al@393 193 if [ ! -s '/etc/X11/xorg.conf.d/40-Keyboard.conf' ]; then
al@393 194 echo 'Configuring Xorg server...' && HOME='/root'
pankso@359 195 tazx init
pankso@359 196 fi
pankso@365 197 /etc/init.d/dbus start
pankso@359 198 (sleep 2; /etc/init.d/${LOGIN_MANAGER} start >/dev/null) &
pankso@359 199 fi
pankso@359 200
pankso@302 201 # Start all daemons specified with $RUN_DAEMONS
pankso@302 202 if [ "$RUN_DAEMONS" ]; then
pankso@302 203 colorize 33 "Starting all daemons..."
pankso@302 204 for daemon in $RUN_DAEMONS; do
pascal@385 205 [ -x /etc/init.d/$daemon ] &&
pankso@32 206 /etc/init.d/$daemon start
pankso@302 207 done
pankso@5 208 fi
pankso@5 209
pankso@302 210 # Back to a verbose mode
al@393 211 (sleep 6 && echo '7 4 1 7' > /proc/sys/kernel/printk) &
pankso@302 212
pankso@302 213 if [ "$MESSAGE" ]; then
pankso@302 214 newline
pankso@302 215 colorize 32 "$MESSAGE"
pankso@302 216 fi
pascal@276 217 ;;
pankso@187 218
pascal@276 219 *)
pankso@305 220 # --> readonly --> readwrite
pascal@310 221 if [ ! -s /run/boot.log ]; then
pascal@310 222 # Mount /run as tmpfs runtime data are not written to disk
pascal@310 223 mount -t tmpfs tmpfs /run
pascal@338 224 # cp -a in tazpkg does not support /var/run symlink
pascal@338 225 mount --bind /run /var/run
pankso@306 226 fi
pascal@310 227 /etc/init.d/rcS readonly 2>&1 | tee -a /run/boot.log
pascal@309 228 # Logrotate boot.log
pankso@305 229 last=.9
pankso@305 230 for i in .8 .7 .6 .5 .4 .3 .2 .1 .0 '' ; do
pankso@306 231 mv -f /var/log/boot.log${i} /var/log/boot.log${last} 2>/dev/null
pankso@305 232 last=$i
pankso@305 233 done
pascal@310 234 mv -f /run/boot.log /var/log/boot.log
pascal@308 235 /etc/init.d/rcS readwrite 2>&1 | tee -a /var/log/boot.log ;;
pascal@276 236 esac