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
|
slaxemulator@247
|
39 fi
|
slaxemulator@247
|
40
|
pankso@306
|
41 # Busybox mdev is an udev alternative
|
pankso@305
|
42 if [ "$UDEV" == "mdev" ]; then
|
pankso@305
|
43 echo -n "Executing mdev -s to populate /dev..."
|
pankso@305
|
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.
|
pankso@305
|
60 echo "Remounting rootfs read/write..."
|
pankso@305
|
61 mount -o remount,rw /
|
pankso@305
|
62
|
MikeDSmith25@107
|
63 # Mount filesystems in /etc/fstab.
|
pankso@171
|
64 echo "Mounting filesystems in fstab..."
|
pankso@302
|
65 mount -a
|
pankso@305
|
66 ;;
|
pankso@305
|
67
|
pankso@305
|
68 readwrite)
|
pankso@302
|
69
|
pankso@302
|
70 # Be quiet
|
pankso@302
|
71 echo "0 0 0 0" > /proc/sys/kernel/printk
|
pankso@5
|
72
|
pankso@157
|
73 # Store boot messages to log files.
|
pankso@302
|
74 dmesg > /var/log/dmesg.log &
|
pascal@276
|
75
|
pascal@276
|
76 # Parse cmdline args for earlier boot options. All other boot options
|
pascal@276
|
77 # are in /etc/init./bootopts.sh.
|
pascal@276
|
78 echo -n "Searching for early boot options..."
|
pankso@302
|
79 for opt in $(cat /proc/cmdline)
|
pascal@276
|
80 do
|
pascal@276
|
81 case $opt in
|
pascal@276
|
82 modprobe=*)
|
pascal@276
|
83 export MODPROBE="yes" ;;
|
pascal@276
|
84 config=*)
|
pascal@276
|
85 export CONFIG=${opt#config=} ;;
|
pascal@276
|
86 *)
|
pascal@276
|
87 continue ;;
|
pascal@276
|
88 esac
|
pascal@276
|
89 done
|
pascal@276
|
90 status
|
pascal@41
|
91
|
pankso@345
|
92 # Clean up the system and set up tmp dirs */run/* are tmpfs so ther are
|
pankso@345
|
93 # clean up at shutdown.
|
pankso@157
|
94 if [ "$CLEAN_UP_SYSTEM" = "yes" ]; then
|
pankso@171
|
95 echo -n "Cleaning up the system..."
|
pankso@345
|
96 rm -rf /tmp
|
pankso@345
|
97 mkdir -p /tmp/.X11-unix /tmp/.ICE-unix
|
pankso@302
|
98 chmod -R 1777 /tmp
|
pankso@157
|
99 status
|
pankso@157
|
100 else
|
pankso@302
|
101 echo "System clean up is disabled in: /etc/rcS.conf"
|
pankso@262
|
102 fi
|
pankso@262
|
103
|
gokhlayeh@241
|
104 # Handle kernel cmdline parameter modprobe=<module_list>
|
pankso@302
|
105 if [ "$MODPROBE" ]; then
|
pankso@306
|
106 mods=$(sed -e 's/.* modprobe=\([^ ]*\).*/\1/' -e 's/,/\n/g' < /proc/cmdline)
|
pankso@306
|
107 for i in $mods; do
|
pankso@302
|
108 echo -n "Loading kernel module: $i"
|
pankso@302
|
109 modprobe $i
|
gokhlayeh@241
|
110 status
|
pankso@15
|
111 done
|
pankso@15
|
112 fi
|
pankso@15
|
113
|
gokhlayeh@241
|
114 # Handle kernel cmdline parameter config=<device>,<path> to source a
|
pankso@5
|
115 # disk init script
|
pankso@158
|
116 if [ -n "$CONFIG" ]; then
|
pankso@5
|
117 DEVICE=${CONFIG%,*}
|
pankso@5
|
118 SCRIPT=${CONFIG#*,}
|
pascal@110
|
119 echo "Probing $DEVICE... "
|
pankso@302
|
120 if ! mount -r $DEVICE /mnt; then
|
pascal@179
|
121 if echo $DEVICE | grep -Eq "/dev/sd|UUID=|LABEL="; then
|
pankso@302
|
122 USBDELAY=$(cat /sys/module/usb_storage/parameters/delay_use)
|
pascal@110
|
123 USBDELAY=$((1+$USBDELAY))
|
pascal@110
|
124 echo "$DEVICE is potentially a USB device: sleep for $USBDELAY seconds"
|
pascal@110
|
125 sleep $USBDELAY
|
pascal@110
|
126 fi
|
pankso@302
|
127 if ! mount -r $DEVICE /mnt; then
|
pascal@110
|
128 CONFIG=""
|
pascal@110
|
129 fi
|
pascal@110
|
130 fi
|
pankso@171
|
131 echo -n "Source $SCRIPT from $DEVICE..."
|
pascal@110
|
132 if [ -n "$CONFIG" ]; then
|
pankso@5
|
133 . /mnt/$SCRIPT
|
pankso@302
|
134 umount /mnt 2> /dev/null || true
|
pankso@5
|
135 fi
|
gokhlayeh@241
|
136 status
|
pankso@5
|
137 fi
|
pankso@5
|
138
|
pankso@302
|
139 # Mount /proc/bus/usb
|
pascal@124
|
140 if [ -d /proc/bus/usb ]; then
|
pankso@306
|
141 echo -n "Mounting usbfs filesystem on: /proc/bus/usb"
|
pankso@302
|
142 mount -t usbfs usbfs /proc/bus/usb
|
pascal@124
|
143 status
|
pascal@124
|
144 fi
|
pascal@124
|
145
|
pankso@302
|
146 # Start syslogd and klogd
|
pankso@302
|
147 echo -n "Starting system log deamon: syslogd..."
|
pankso@302
|
148 syslogd -s $SYSLOGD_ROTATED_SIZE && status
|
pankso@302
|
149 echo -n "Starting kernel log daemon: klogd..."
|
pankso@302
|
150 klogd && status
|
pankso@262
|
151
|
pankso@302
|
152 # Load all modules listed in config file
|
pankso@302
|
153 if [ "$LOAD_MODULES" ]; then
|
pankso@302
|
154 colorize 33 "Loading Kernel modules..."
|
pankso@302
|
155 for mod in $LOAD_MODULES; do
|
pankso@302
|
156 echo -n "Loading module: $mod"
|
pankso@5
|
157 modprobe $mod
|
pankso@302
|
158 status
|
pankso@5
|
159 done
|
pankso@5
|
160 fi
|
pankso@5
|
161
|
pankso@153
|
162 # Detect PCI and USB devices with Tazhw from slitaz-tools. We load
|
paul@181
|
163 # kernel modules only at first boot or in LiveCD mode.
|
pankso@153
|
164 if [ ! -s /var/lib/detected-modules ]; then
|
pankso@302
|
165 tazhw init
|
pankso@153
|
166 fi
|
pankso@153
|
167
|
paul@344
|
168 # Call udevadm trigger to ensure /dev is fully populated now that all
|
pankso@262
|
169 # modules are loaded.
|
slaxemulator@260
|
170 if [ "$UDEV" = "yes" ]; then
|
pankso@302
|
171 echo -n "Triggering udev events: --action=add"
|
pankso@302
|
172 udevadm trigger --action=add
|
slaxemulator@260
|
173 status
|
slaxemulator@260
|
174 fi
|
slaxemulator@260
|
175
|
pankso@302
|
176 # Start all scripts specified with $RUN_SCRIPTS
|
pankso@302
|
177 for script in $RUN_SCRIPTS; do
|
pankso@302
|
178 echo $(colorize 34 "Processing: /etc/init.d/$script")
|
pankso@302
|
179 /etc/init.d/$script
|
pankso@5
|
180 done
|
pankso@5
|
181
|
pankso@302
|
182 # Start all daemons specified with $RUN_DAEMONS
|
pankso@302
|
183 if [ "$RUN_DAEMONS" ]; then
|
pankso@302
|
184 colorize 33 "Starting all daemons..."
|
pankso@302
|
185 for daemon in $RUN_DAEMONS; do
|
pankso@32
|
186 /etc/init.d/$daemon start
|
pankso@302
|
187 done
|
pankso@5
|
188 fi
|
pankso@5
|
189
|
pankso@345
|
190 # Start X sesssion
|
pankso@345
|
191 if [ "$SCREEN" != "text" ] && [ "$LOGIN_MANAGER" ] && [ -x /etc/init.d/$LOGIN_MANAGER ]; then
|
pankso@345
|
192 mkdir -p /var/run/dbus
|
pankso@345
|
193 /etc/init.d/dbus start
|
pankso@345
|
194 colorize 36 "Starting X environment..."
|
pankso@345
|
195 (sleep 2 && /etc/init.d/$LOGIN_MANAGER start >/dev/null) &
|
pankso@345
|
196 fi
|
pankso@345
|
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
|
pascal@276
|
205 ;;
|
pankso@187
|
206
|
pascal@276
|
207 *)
|
pankso@305
|
208 # --> readonly --> readwrite
|
pascal@310
|
209 if [ ! -s /run/boot.log ]; then
|
pascal@310
|
210 # Mount /run as tmpfs runtime data are not written to disk
|
pascal@310
|
211 mount -t tmpfs tmpfs /run
|
pascal@338
|
212 # cp -a in tazpkg does not support /var/run symlink
|
pascal@338
|
213 mount --bind /run /var/run
|
pankso@306
|
214 fi
|
pascal@310
|
215 /etc/init.d/rcS readonly 2>&1 | tee -a /run/boot.log
|
pascal@309
|
216 # Logrotate boot.log
|
pankso@305
|
217 last=.9
|
pankso@305
|
218 for i in .8 .7 .6 .5 .4 .3 .2 .1 .0 '' ; do
|
pankso@306
|
219 mv -f /var/log/boot.log${i} /var/log/boot.log${last} 2>/dev/null
|
pankso@305
|
220 last=$i
|
pankso@305
|
221 done
|
pascal@310
|
222 mv -f /run/boot.log /var/log/boot.log
|
pascal@308
|
223 /etc/init.d/rcS readwrite 2>&1 | tee -a /var/log/boot.log ;;
|
pascal@276
|
224 esac
|