Mercurial > vanilla
annotate core/rc/rc.init @ 569:290ca0287e5d
core/rc: make busybox init start /etc/rc.start
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sat, 06 Jul 2019 16:49:51 +0200 |
parents | ddb052f876cd |
children | 3c0d8d9fe11e |
rev | line source |
---|---|
564
79f1635bda5f
core/etc: add shebang for busybox init
David Demelier <markand@malikania.fr>
parents:
560
diff
changeset
|
1 #!/bin/sh |
184
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 # |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 # /etc/rc.init: system initialization script |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 # |
405
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
5 # Copyright (c) 2019 David Demelier <markand@malikania.fr> |
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
6 # |
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
7 # Permission to use, copy, modify, and/or distribute this software for any |
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
8 # purpose with or without fee is hereby granted, provided that the above |
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
9 # copyright notice and this permission notice appear in all copies. |
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
10 # |
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
11 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
12 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
13 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
14 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
15 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
16 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
17 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
18 # |
184
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 if [ -f /etc/rc.conf ]; then |
405
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
21 . /etc/rc.conf |
184
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 fi |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 |
406
0d51fe2867b5
core/sysvinit: add a banner
David Demelier <markand@malikania.fr>
parents:
405
diff
changeset
|
24 if [ "${BANNER:-yes}" = "yes" ]; then |
565
15992f10ced3
core/etc: use a more appropriate color
David Demelier <markand@malikania.fr>
parents:
564
diff
changeset
|
25 printf "\nWelcome to \033[33;1mVanilla Linux\033[0m\n\n" |
406
0d51fe2867b5
core/sysvinit: add a banner
David Demelier <markand@malikania.fr>
parents:
405
diff
changeset
|
26 fi |
0d51fe2867b5
core/sysvinit: add a banner
David Demelier <markand@malikania.fr>
parents:
405
diff
changeset
|
27 |
516 | 28 if [ -n "$HOSTNAME" ] && [ -x /bin/hostname ]; then |
184
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 echo "Setting hostname: $HOSTNAME" |
516 | 30 /bin/hostname "$HOSTNAME" |
184
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 fi |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 |
516 | 33 if [ -x /bin/sysctl ]; then |
569
290ca0287e5d
core/rc: make busybox init start /etc/rc.start
David Demelier <markand@malikania.fr>
parents:
566
diff
changeset
|
34 echo "Setting kernel parameters" |
516 | 35 /bin/sysctl -p >/dev/null 2>&1 |
184
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 fi |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 |
516 | 38 if [ -x /bin/mountpoint ]; then |
184
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 echo -n "Mounting filesystems: " |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 |
516 | 41 if ! /bin/mountpoint /dev >/dev/null 2>&1; then |
42 /bin/mount -t devtmpfs devtmpfs /dev >/dev/null 2>&1 | |
405
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
43 echo -n "/dev " |
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
44 fi |
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
45 |
516 | 46 if ! /bin/mountpoint /proc >/dev/null 2>&1; then |
47 /bin/mount -t proc proc /proc >/dev/null 2>&1 | |
184
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 echo -n "/proc " |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 fi |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 |
516 | 51 if ! /bin/mountpoint /sys >/dev/null 2>&1; then |
52 /bin/mount -t sysfs sysfs /sys >/dev/null 2>&1 | |
184
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 echo -n "/sys " |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 fi |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 |
516 | 56 if ! /bin/mountpoint /run >/dev/null 2>&1; then |
57 /bin/mount -t tmpfs tmpfs /run >/dev/null 2>&1 | |
405
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
58 echo -n "/run " |
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
59 fi |
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
60 |
184
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 echo "done." |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 fi |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 |
559
d6be16d7c5de
core/etc: clean pid files
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
64 # Clean pid files before starting any services. |
d6be16d7c5de
core/etc: clean pid files
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
65 find /var/run -type f -name "*.pid" -delete |
d6be16d7c5de
core/etc: clean pid files
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
66 |
557
73e25417284b
core/etc: take init scripts from sysvinit
David Demelier <markand@malikania.fr>
parents:
516
diff
changeset
|
67 # |
73e25417284b
core/etc: take init scripts from sysvinit
David Demelier <markand@malikania.fr>
parents:
516
diff
changeset
|
68 # Start a device service. Both eudev and busybox's mdev are supported but only |
73e25417284b
core/etc: take init scripts from sysvinit
David Demelier <markand@malikania.fr>
parents:
516
diff
changeset
|
69 # one at a time must be enabled. |
73e25417284b
core/etc: take init scripts from sysvinit
David Demelier <markand@malikania.fr>
parents:
516
diff
changeset
|
70 # |
558
a85759a313b1
core/etc: mdev is actually named busybox.mdev
David Demelier <markand@malikania.fr>
parents:
557
diff
changeset
|
71 if [ -x /etc/rc.d/udevd ] && [ -x /etc/rc.d/busybox.mdev ]; then |
a85759a313b1
core/etc: mdev is actually named busybox.mdev
David Demelier <markand@malikania.fr>
parents:
557
diff
changeset
|
72 echo "Warning: both /etc/rc.d/udevd and /etc/rc.d/busybox.mdev are enabled" 1>&2 |
557
73e25417284b
core/etc: take init scripts from sysvinit
David Demelier <markand@malikania.fr>
parents:
516
diff
changeset
|
73 echo "Warning: using udevd instead" 1>&2 |
73e25417284b
core/etc: take init scripts from sysvinit
David Demelier <markand@malikania.fr>
parents:
516
diff
changeset
|
74 fi |
73e25417284b
core/etc: take init scripts from sysvinit
David Demelier <markand@malikania.fr>
parents:
516
diff
changeset
|
75 |
405
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
76 if [ -x /etc/rc.d/udevd ]; then |
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
77 /etc/rc.d/udevd start |
558
a85759a313b1
core/etc: mdev is actually named busybox.mdev
David Demelier <markand@malikania.fr>
parents:
557
diff
changeset
|
78 elif [ -x /etc/rc.d/busybox.mdev ]; then |
a85759a313b1
core/etc: mdev is actually named busybox.mdev
David Demelier <markand@malikania.fr>
parents:
557
diff
changeset
|
79 /etc/rc.d/busybox.mdev start |
405
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
80 fi |
01b5d3175215
vanilla: add proper support for udev and boot scripts
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
81 |
516 | 82 if [ -x /bin/fsck ]; then |
184
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 # Make sure / is ro in case of initrd. |
516 | 84 /bin/mount -o remount,ro / |
184
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 # If /etc/forcefsck is there, force check. |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 if [ -f /etc/forcefsck ]; then |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 force="-f" |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 fi |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 |
516 | 91 /bin/fsck $force -A -T -C -a >/dev/null 2>&1 |
184
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 if [ "$?" -gt 1 ]; then |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 echo "* Filesystem check failed" |
516 | 95 /bin/sulogin -p |
184
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 fi |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 fi |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 # Remount / and enable swap as the system is ready. |
516 | 100 /bin/mount -o remount,rw / |
101 /bin/swapon -a | |
184
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 |
560
2f46816f1cd6
core/etc: enable font/keymap loading
David Demelier <markand@malikania.fr>
parents:
559
diff
changeset
|
103 # Update shared library caches. |
2f46816f1cd6
core/etc: enable font/keymap loading
David Demelier <markand@malikania.fr>
parents:
559
diff
changeset
|
104 if [ -x /bin/ldconfig ]; then |
2f46816f1cd6
core/etc: enable font/keymap loading
David Demelier <markand@malikania.fr>
parents:
559
diff
changeset
|
105 /bin/ldconfig |
2f46816f1cd6
core/etc: enable font/keymap loading
David Demelier <markand@malikania.fr>
parents:
559
diff
changeset
|
106 fi |
2f46816f1cd6
core/etc: enable font/keymap loading
David Demelier <markand@malikania.fr>
parents:
559
diff
changeset
|
107 |
569
290ca0287e5d
core/rc: make busybox init start /etc/rc.start
David Demelier <markand@malikania.fr>
parents:
566
diff
changeset
|
108 if [ -n "$TIMEZONE" ] && [ "$TIMEZONE" != "UTC" ]; then |
184
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
109 echo -n "Setting timezone: " |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
110 |
516 | 111 if [ -f /share/zoneinfo/$TIMEZONE ]; then |
112 /bin/ln -sf /share/zoneinfo/$TIMEZONE /etc/localtime | |
184
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
113 echo "$TIMEZONE." |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
114 else |
569
290ca0287e5d
core/rc: make busybox init start /etc/rc.start
David Demelier <markand@malikania.fr>
parents:
566
diff
changeset
|
115 echo "$TIMEZONE not found" |
184
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
116 fi |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
117 fi |
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
118 |
560
2f46816f1cd6
core/etc: enable font/keymap loading
David Demelier <markand@malikania.fr>
parents:
559
diff
changeset
|
119 # Console font and keymap. |
2f46816f1cd6
core/etc: enable font/keymap loading
David Demelier <markand@malikania.fr>
parents:
559
diff
changeset
|
120 if [ -n "$FONT" ] && [ -x /bin/setfont ]; then |
2f46816f1cd6
core/etc: enable font/keymap loading
David Demelier <markand@malikania.fr>
parents:
559
diff
changeset
|
121 echo "Setting font: $FONT" |
2f46816f1cd6
core/etc: enable font/keymap loading
David Demelier <markand@malikania.fr>
parents:
559
diff
changeset
|
122 /bin/setfont $FONT |
2f46816f1cd6
core/etc: enable font/keymap loading
David Demelier <markand@malikania.fr>
parents:
559
diff
changeset
|
123 fi |
2f46816f1cd6
core/etc: enable font/keymap loading
David Demelier <markand@malikania.fr>
parents:
559
diff
changeset
|
124 |
2f46816f1cd6
core/etc: enable font/keymap loading
David Demelier <markand@malikania.fr>
parents:
559
diff
changeset
|
125 if [ -n "$KEYMAP" ] && [ -x /bin/loadkeys ]; then |
2f46816f1cd6
core/etc: enable font/keymap loading
David Demelier <markand@malikania.fr>
parents:
559
diff
changeset
|
126 echo "Setting keymap: $KEYMAP" |
2f46816f1cd6
core/etc: enable font/keymap loading
David Demelier <markand@malikania.fr>
parents:
559
diff
changeset
|
127 /bin/loadkeys $KEYMAP |
2f46816f1cd6
core/etc: enable font/keymap loading
David Demelier <markand@malikania.fr>
parents:
559
diff
changeset
|
128 fi |
2f46816f1cd6
core/etc: enable font/keymap loading
David Demelier <markand@malikania.fr>
parents:
559
diff
changeset
|
129 |
559
d6be16d7c5de
core/etc: clean pid files
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
130 # Cleanup some files. |
184
36f3ab3945d7
core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
131 rm -f /etc/forcefsck |
569
290ca0287e5d
core/rc: make busybox init start /etc/rc.start
David Demelier <markand@malikania.fr>
parents:
566
diff
changeset
|
132 |
290ca0287e5d
core/rc: make busybox init start /etc/rc.start
David Demelier <markand@malikania.fr>
parents:
566
diff
changeset
|
133 # |
290ca0287e5d
core/rc: make busybox init start /etc/rc.start
David Demelier <markand@malikania.fr>
parents:
566
diff
changeset
|
134 # When running Vanilla busybox's init which has no inittab support, run |
290ca0287e5d
core/rc: make busybox init start /etc/rc.start
David Demelier <markand@malikania.fr>
parents:
566
diff
changeset
|
135 # /etc/rc.start to bring up user defined services. Since runlevels are also |
290ca0287e5d
core/rc: make busybox init start /etc/rc.start
David Demelier <markand@malikania.fr>
parents:
566
diff
changeset
|
136 # unsupported, we specify the maximum number which is 5. |
290ca0287e5d
core/rc: make busybox init start /etc/rc.start
David Demelier <markand@malikania.fr>
parents:
566
diff
changeset
|
137 # |
290ca0287e5d
core/rc: make busybox init start /etc/rc.start
David Demelier <markand@malikania.fr>
parents:
566
diff
changeset
|
138 # sysvinit defines INIT_VERSION environment variable which is not present in |
290ca0287e5d
core/rc: make busybox init start /etc/rc.start
David Demelier <markand@malikania.fr>
parents:
566
diff
changeset
|
139 # busybox init. |
290ca0287e5d
core/rc: make busybox init start /etc/rc.start
David Demelier <markand@malikania.fr>
parents:
566
diff
changeset
|
140 # |
290ca0287e5d
core/rc: make busybox init start /etc/rc.start
David Demelier <markand@malikania.fr>
parents:
566
diff
changeset
|
141 if [ -z "$INIT_VERSION" ]; then |
290ca0287e5d
core/rc: make busybox init start /etc/rc.start
David Demelier <markand@malikania.fr>
parents:
566
diff
changeset
|
142 if [ -x /etc/rc.start ]; then |
290ca0287e5d
core/rc: make busybox init start /etc/rc.start
David Demelier <markand@malikania.fr>
parents:
566
diff
changeset
|
143 /etc/rc.start 5 |
290ca0287e5d
core/rc: make busybox init start /etc/rc.start
David Demelier <markand@malikania.fr>
parents:
566
diff
changeset
|
144 fi |
290ca0287e5d
core/rc: make busybox init start /etc/rc.start
David Demelier <markand@malikania.fr>
parents:
566
diff
changeset
|
145 |
290ca0287e5d
core/rc: make busybox init start /etc/rc.start
David Demelier <markand@malikania.fr>
parents:
566
diff
changeset
|
146 if [ -x /etc/rc.local ]; then |
290ca0287e5d
core/rc: make busybox init start /etc/rc.start
David Demelier <markand@malikania.fr>
parents:
566
diff
changeset
|
147 /etc/rc.local |
290ca0287e5d
core/rc: make busybox init start /etc/rc.start
David Demelier <markand@malikania.fr>
parents:
566
diff
changeset
|
148 fi |
290ca0287e5d
core/rc: make busybox init start /etc/rc.start
David Demelier <markand@malikania.fr>
parents:
566
diff
changeset
|
149 fi |