annotate core/rc/rc.init @ 566:ddb052f876cd

core/rc: move etc services to rc, closes #1666
author David Demelier <markand@malikania.fr>
date Fri, 05 Jul 2019 20:58:54 +0200
parents core/etc/rc.init@15992f10ced3
children 290ca0287e5d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
014d018468fb core: use new FHS
David Demelier <markand@malikania.fr>
parents: 406
diff changeset
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
014d018468fb core: use new FHS
David Demelier <markand@malikania.fr>
parents: 406
diff changeset
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
014d018468fb core: use new FHS
David Demelier <markand@malikania.fr>
parents: 406
diff changeset
33 if [ -x /bin/sysctl ]; then
184
36f3ab3945d7 core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 echo "Setting kernel parameters."
516
014d018468fb core: use new FHS
David Demelier <markand@malikania.fr>
parents: 406
diff changeset
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
014d018468fb core: use new FHS
David Demelier <markand@malikania.fr>
parents: 406
diff changeset
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
014d018468fb core: use new FHS
David Demelier <markand@malikania.fr>
parents: 406
diff changeset
41 if ! /bin/mountpoint /dev >/dev/null 2>&1; then
014d018468fb core: use new FHS
David Demelier <markand@malikania.fr>
parents: 406
diff changeset
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
014d018468fb core: use new FHS
David Demelier <markand@malikania.fr>
parents: 406
diff changeset
46 if ! /bin/mountpoint /proc >/dev/null 2>&1; then
014d018468fb core: use new FHS
David Demelier <markand@malikania.fr>
parents: 406
diff changeset
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
014d018468fb core: use new FHS
David Demelier <markand@malikania.fr>
parents: 406
diff changeset
51 if ! /bin/mountpoint /sys >/dev/null 2>&1; then
014d018468fb core: use new FHS
David Demelier <markand@malikania.fr>
parents: 406
diff changeset
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
014d018468fb core: use new FHS
David Demelier <markand@malikania.fr>
parents: 406
diff changeset
56 if ! /bin/mountpoint /run >/dev/null 2>&1; then
014d018468fb core: use new FHS
David Demelier <markand@malikania.fr>
parents: 406
diff changeset
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
014d018468fb core: use new FHS
David Demelier <markand@malikania.fr>
parents: 406
diff changeset
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
014d018468fb core: use new FHS
David Demelier <markand@malikania.fr>
parents: 406
diff changeset
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
014d018468fb core: use new FHS
David Demelier <markand@malikania.fr>
parents: 406
diff changeset
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
014d018468fb core: use new FHS
David Demelier <markand@malikania.fr>
parents: 406
diff changeset
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
014d018468fb core: use new FHS
David Demelier <markand@malikania.fr>
parents: 406
diff changeset
100 /bin/mount -o remount,rw /
014d018468fb core: use new FHS
David Demelier <markand@malikania.fr>
parents: 406
diff changeset
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
184
36f3ab3945d7 core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 if [ -n "$TIMEZONE" ]; then
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
014d018468fb core: use new FHS
David Demelier <markand@malikania.fr>
parents: 406
diff changeset
111 if [ -f /share/zoneinfo/$TIMEZONE ]; then
014d018468fb core: use new FHS
David Demelier <markand@malikania.fr>
parents: 406
diff changeset
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
36f3ab3945d7 core/sysvinit: add basic init scripts
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 echo "$TIMEZONE not found."
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