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

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