1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
#!/bin/sh
# shellcheck disable=1090,1091,2174
# Read the configuration file and the library fo
# common functions.
. /etc/init/rc.conf
. /usr/lib/init/rc.lib
mnt() {
while read -r _ mnt _; do
case "$mnt" in "$1") return 0; esac
done < /proc/mounts
mnt="$1"; shift
mount "$@" "$mnt"
}
# Manually set path
PATH=$PATH:/usr/bin:/usr/local/bin
# Display a pretty welcome message
printf '\033[1;36m-> \033[39mWelcome to \033[35mCarbs %s\033[39m!\033[m\n' "$(uname -s)"
out "Mounting pseudo filesystems..."; {
mnt /proc -o nosuid,noexec,nodev -t proc proc
mnt /sys -o nosuid,noexec,nodev -t sysfs sys
mnt /run -o mode=0755,nosuid,nodev -t tmpfs run
mnt /dev -o mode=0755,nosuid -t devtmpfs dev
mkdir -pm 0755 \
/run/lvm \
/run/user \
/run/lock \
/run/log \
/dev/pts \
/dev/shm
command -v runsvdir >/dev/null 2>&1 && mkdir -pm 0755 /run/runit
mnt /dev/pts -o mode=0620,gid=5,nosuid,noexec -nt devpts devpts
mnt /dev/shm -o mode=1777,nosuid,nodev -nt tmpfs shm
}
[ "$dmesg_level" ] && {
out "Setting dmesg level..."
dmesg -n$dmesg_level
}
command -v udevd >/dev/null && {
out "Starting eudev..."
udevd --daemon
udevadm trigger --action=add --type=subsystems
udevadm trigger --action=add --type=devices
udevadm settle
}
out "Remounting rootfs as read-only..."; {
mount -o remount,ro / || shell
}
out "Checking filesystems..."; {
fsck -ATat noopts=_netdev
[ $? -gt 1 ] && shell
}
out "Mounting rootfs read-write..."; {
mount -o remount,rw / || shell
}
out "Mounting all local filesystems..."; {
mount -at nosysfs,nonfs,nonfs4,nosmbfs,nocifs -O no_netdev ||
shell
}
run_hook early-boot
out "Enabling swap..."; {
swapon -a || shell
}
# Load random seed
random load
out "Setting up loopback..."; {
ip link set up dev lo
}
out "Setting hostname..."; {
read -r hostname < /etc/hostname
printf '%s\n' "${hostname:-carbslinux}" > /proc/sys/kernel/hostname
} 2>/dev/null
[ "$keymap" ] && {
out "Loading keymap settings..."
loadkmap < "$keymap"
}
out "Loading sysctl settings..."; {
find /run/sysctl.d \
/etc/sysctl.d \
/usr/local/lib/sysctl.d \
/usr/lib/sysctl.d \
/lib/sysctl.d \
/etc/sysctl.conf \
-name \*.conf -type f 2>/dev/null \
| while read -r conf; do
seen="$seen ${conf##*/}"
case $seen in
*" ${conf##*/} "*) ;;
*) printf '%s\n' "* Applying $conf ..."
sysctl -p "$conf" ;;
esac
done
}
command -v udevd >/dev/null &&
udevadm control --exit
run_hook boot
# rc.local is deprecated and will be removed in
# a month. You should switch to boot hooks
out "Running rc.local..."; {
[ -r "/etc/init/rc.local" ] && \
. /etc/init/rc.local
}
out "Boot stage complete..."
|