@@ -10,23 +10,33 @@ log() {
10
10
printf " \033[1;3%sm%s\033[00m\n" " $color " " $* "
11
11
}
12
12
13
+ log_noline () {
14
+ color=" $1 "
15
+ shift
16
+ printf " \033[1;3%sm%s\033[00m" " $color " " $* "
17
+ }
18
+
13
19
panic () {
14
20
log 1 " There was an error, starting emergency shell. Type exit to continue boot."
15
21
/bin/sh
16
22
}
17
23
18
24
startup () {
25
+ export PATH=/bin:$PATH
26
+ # Set console font
27
+ [ -z " $FONT " ] || loadfont < " /usr/share/consolefonts/$FONT "
28
+
19
29
# Mount API filesystems
20
30
log 3 " Mounting API filesystems..."
21
- mount -t proc proc /proc -o nosuid,noexec,nodev
22
- mount -t sysfs sys /sys -o nosuid,noexec,nodev
23
- mount -t tmpfs run /run -o mode=0755,nosuid,nodev
24
- mount -t devtmpfs dev /dev -o mode=0755,nosuid
31
+ mountpoint -q /proc || mount -t proc proc /proc -o nosuid,noexec,nodev
32
+ mountpoint -q /sys || mount -t sysfs sys /sys -o nosuid,noexec,nodev
33
+ mountpoint -q /run || mount -t tmpfs run /run -o mode=0755,nosuid,nodev
34
+ mountpoint -q /dev || mount -t devtmpfs dev /dev -o mode=0755,nosuid
25
35
26
36
mkdir -p /run/user /run/lock /run/log /run/runit /dev/pts /dev/shm
27
37
28
- mount -t devpts devpts /dev/pts -o mode=0620,gid=5,nosuid,noexec
29
- mount -t tmpfs shm /dev/shm -o mode=1777,nosuid,nodev
38
+ mountpoint -q /dev/pts || mount -t devpts devpts /dev/pts -o mode=0620,gid=5,nosuid,noexec
39
+ mountpoint -q /dev/shm || mount -t tmpfs shm /dev/shm -o mode=1777,nosuid,nodev
30
40
31
41
# Initialize devices
32
42
log 3 " Setting up loopback device..."
@@ -44,7 +54,7 @@ startup() {
44
54
mount -o remount,ro / || panic
45
55
46
56
log 3 " Checking filesystems..."
47
- fsck -ATat noopts=_netdev
57
+ fsck -ATat noopts=_netdev > /run/log/fsck
48
58
[ $? -gt 1 ] && panic
49
59
50
60
log 3 " Mounting all filesystems..."
@@ -90,11 +100,39 @@ shutdown() {
90
100
log 1 " Shutting down."
91
101
}
92
102
103
+ sv_enable () {
104
+ ln -sv /etc/sv/$1 /var/service/
105
+ sv up $1
106
+ }
107
+
108
+ sv_disable () {
109
+ sv down $1
110
+ rm -v /var/service/$1
111
+ }
112
+
113
+ sv_list () {
114
+ for sv in /etc/sv/* ; do
115
+ if [ -L /var/service/$( basename $sv ) ]; then
116
+ log_noline 2 " [x] "
117
+ log 0 $( basename $sv )
118
+ else
119
+ log_noline 1 " [ ] "
120
+ log 0 $( basename $sv )
121
+ fi
122
+ done
123
+ }
124
+
93
125
case $1 in
94
126
startup)
95
127
startup;;
96
128
shutdown)
97
129
shutdown;;
130
+ enable)
131
+ sv_enable $2 ;;
132
+ disable)
133
+ sv_disable $2 ;;
134
+ list)
135
+ sv_list;;
98
136
* )
99
- echo " Usage: $0 [startup | shutdown ]" ;;
137
+ echo " Usage: $0 [enable | disable | list] [sv ]" ;;
100
138
esac
0 commit comments