rc.init - stali-init - Stali init files. To be shared.
(HTM) git clone git://r-36.net/stali-init
(DIR) Log
(DIR) Files
(DIR) Refs
---
rc.init (5566B)
---
1 #!/bin/busybox ash
2
3 . /etc/rc.conf
4
5 mkdir -p /dev
6 mountpoint -q /dev || mount -t devtmpfs dev /dev -o mode=0755,nosuid
7 touch /dev/mdev.log
8 mkdir -p /dev/pts
9 mountpoint -q /dev/pts || mount -n -t devpts devpts /dev/pts -o mode=0620,gid=5,nosuid,noexec,noatime
10 bootlogd -c -l /run/boot.log -p /run/bootlogd.pid
11
12 printf "\n\n"
13 printf " sta.li\n"
14 printf "\n\n"
15
16 printf "Mounting base filesystems.\n"
17 mkdir -p /proc
18 mkdir -p /sys
19 mkdir -p /run
20 mountpoint -q /proc || mount -t proc proc /proc -o nosuid,noexec,nodev
21 mountpoint -q /sys || mount -t sysfs sys /sys -o nosuid,noexec,nodev
22 mountpoint -q /run || mount -t tmpfs run /run -o mode=0755,nosuid,nodev
23
24 mkdir -p -m 1777 /run/lock
25 mkdir -p /dev/shm
26 mountpoint -q /dev/shm || mount -n -t tmpfs shm /dev/shm -o mode=1777,nosuid,nodev,noatime
27
28 ln -s /proc/self/fd /dev/fd
29
30 mountpoint -q /sys/fs/cgroup || mount -n -t cgroup nodev /sys/fs/cgroup
31
32 if [ ! -e /run/initramfs/fsck-root ];
33 then
34 printf "Remounting root ro.\n"
35 mount -o remount,ro /
36 fi
37
38 if [ -s /etc/locale.conf ];
39 then
40 printf "Reading /etc/locale.conf.\n"
41 eval $(cat /etc/locale.conf)
42 fi
43
44 if [ -n $(printf "%s" "$LANG" | grep -i utf) ];
45 then
46 printf "Setting ttys to be UTF-8.\n"
47 for i in /dev/tty[0-9]*; do
48 kbd_mode -u < ${i} &>/dev/null
49 printf "\e%%G" > ${i} &>/dev/null
50 done
51 echo 1 >| /sys/module/vt/parameters/default_utf8
52 else
53 printf "Setting ttys to legacy.\n"
54 for i in /dev/tty[0-9]*; do
55 kbd_mode -a < ${i} &>/dev/null
56 printf "\e%%@" > ${i} &>/dev/null
57 done
58 echo 0 >| /sys/module/vt/parameters/default_utf8
59 fi
60
61 if [ -s /etc/vconsole.conf ];
62 then
63 printf "Reading vconsole.conf.\n"
64 eval $(cat /etc/vconsole.conf)
65 [ -n "$FONT" ] && CONSOLEFONT="$FONT"
66 [ -n "$FONT_MAP" ] && CONSOLEMAP="$FONT_MAP"
67 fi
68
69 [ -n "$KEYMAP" ] && loadkeys -q "$KEYMAP"
70
71 HWCLOCK_PARAMS="-s"
72 case $HARDWARECLOCK in
73 "")
74 ;;
75 UTC)
76 HWCLOCK_PARAMS="${HWCLOCK_PARAMS} -u"
77 ;;
78 localtime)
79 HWCLOCK_PARAMS="${HWCLOCK_PARAMS} -l"
80 ;;
81 *)
82 HWCLOCK_PARAMS=""
83 ;;
84 esac
85
86 if [ -n "$HWCLOCK_PARAMS" ];
87 then
88 printf "Setting hwclock.\n"
89 [ -n "$TIMEZONE" ] && export TZ="$TIMEZONE"
90 hwclock $HWCLOCK_PARAMS
91 unset TZ
92 fi
93
94 printf "Running nldev.\n"
95 nldev -kbd &
96
97 printf "Loading MODULES from rc.conf.\n"
98 for i in $MODULES;
99 do
100 busybox modprobe "${i}"
101 done
102
103 printf "Triggering all device events.\n"
104 nltrigger add all
105
106 printf "Setting up lo device.\n"
107 [ -d /sys/class/net/lo ] && ifconfig lo up
108 #ip link set up dev lo
109
110 [ "$USEDMRAID" = "yes" ] && printf "Setting up dmraid.\n" && env dmraid -i -ay
111 [ "$USEBTRFS" = "yes" ] && printf "Setting up btrfs.\n" && env btrfs device scan
112 [ "$USELVM" = "yes" ] && printf "Setting up lvm.\n" && env vgchange --sysinit -a y >/dev/null
113
114 # TODO: crypttab support
115
116 if [ ! -e /fastboot ];
117 then
118 printf "Running fsck -ATa.\n"
119 fsck -ATa
120 if [ $? -gt 1 ];
121 then
122 printf "Filesystem errors exist. Please fix manually.\n"
123 /bin/busybox ash
124 reboot
125 fi
126 fi
127
128 printf "Remounting /.\n"
129 mount -o remount,rw /
130 printf "Mounting all filesystems in /etc/fstab.\n"
131 mount -a
132
133 [ "$USELVM" = "yes" ] && printf "Activating lvm monitor.\n" && env vgchange --monitor y >/dev/null
134
135 printf "Activating swap.\n"
136 swapon -a &
137
138 if [ -n "$TIMEZONE" ];
139 then
140 printf "Setting local timezone to '%s',\n" "${TIMEZONE}"
141 local zonefile="/usr/share/zoneinfo/${TIMEZONE}"
142 if [ ! -e "${zonefile}" ];
143 then
144 printf "'%s' is not a valid timezone.\n" "${TIMEZONE}"
145 else
146 if [ ! -L /etc/localtime ] || [ ! /etc/localtime -ef "${zonefile}" ];
147 then
148 ln -sf "${zoneinfo}" /etc/localtime
149 fi
150 fi
151 fi
152
153 printf "Applying random seed to /dev/urandom.\n"
154 RANDOM_SEED=/var/lib/misc/random-seed
155 if [ -s $RANDOM_SEED ];
156 then
157 cat $RANDOM_SEED > /dev/urandom
158 else
159 dd if=/dev/random of=/dev/urandom count=1 &>/dev/null
160 touch $RANDOM_SEED
161 fi
162 chmod 600 $RANDOM_SEED
163 POOL_FILE=/proc/sys/kernel/random/poolsize
164 [ -r $POOL_FILE ] && POOL_SIZE=$(cat $POOL_FILE) || POOL_SIZE=512
165
166 printf "Cleaning up /var.\n"
167 if [ ! -L /var/lock ] && [ ! /var/lock -ef /run/lock ];
168 then
169 rm -rf /var/lock 2>/dev/null
170 ln -sf /run/lock /var/lock
171 fi
172
173 if [ ! -L /var/run ] && [ ! /var/run -ef /run ];
174 then
175 rm -rf /var/run 2>/dev/null
176 ln -sf /run /var/run
177 fi
178
179 [ -s /etc/hostname ] && HOSTNAME=$(cat /etc/hostname)
180 if [ -n "$HOSTNAME" ];
181 then
182 printf "Setting hostname to '%s'.\n" "${HOSTNAME}"
183 printf "%s\n" "$HOSTNAME" > /proc/sys/kernel/hostname
184 hostname -F /etc/hostname
185 fi
186
187 printf "Storing dmesg output into /var/log/dmesg.log.\n"
188 env dmesg > /var/log/dmesg.log
189 if [ -e /proc/sys/kernel/dmesg_restrict ] && [ $(cat /proc/sys/kernel/dmesg_restrict) = "1" ];
190 then
191 chmod 0600 /var/log/dmesg.log
192 else
193 chmod 0644 /var/log/dmesg.log
194 fi
195
196 printf "Running sysctl.\n"
197 sysctl -p /etc/sysctl.conf &>/dev/null
198 for path in /usr/lib/sysctl.d /etc/sysctl.d /run/sysctl.d;
199 do
200 if [ -d $path ];
201 then
202 for file in $(ls -1 $path);
203 do
204 sysctl -p $file &>/dev/null
205 done
206 fi
207 done
208
209 printf "Running binfmt.\n"
210 mountpoint -q /proc/sys/fs/binfmt_misc || \
211 mount -t binfmt_misc binfmt /proc/sys/fs/binfmt_misc
212 for path in /usr/lib/binfmt.d /etc/binfmt.d /run/binfmt.d;
213 do
214 [ ! -d $path ] && continue;
215 for file in $(ls -1 $path);
216 do
217 grep "^:" $file | \
218 while read -r line;
219 do
220 printf "%s" "$line" \
221 > /proc/sys/fs/binfmt_misc/register
222 done
223 done
224 done
225
226 printf "Killing bootlogd.\n"
227 if [ -f /run/bootlogd.pid ];
228 then
229 kill $(cat /run/bootlogd.pid)
230 rm -f /run/bootlogd.pid
231 fi
232 [ -e /run/boot.log ] && mv /run/boot.log /var/log/boot
233
234 printf "Loading DELAYMODULES from rc.conf.\n"
235 for i in $DELAYMODULES;
236 do
237 busybox modprobe "${i}"
238 done
239
240 # next is rc.svc
241 # then is tty1 from stali.inittab
242