Lines of
init.mk
from check-in d8511a3d7c
that are changed by the sequence of edits moving toward
check-in 8bc8c738d5:
1: # Meta targets
2:
3: TARGETS:=adjkerntz bootfs cleanvar cleartmp cloned devfs dmesg dumpon fsck \
4: hostname kld ldconfig microcode mixer mount mountlate msgs netif \
5: newsyslog nextboot nfsclient pf pwcheck random root runshm savecore swap \
d8511a3d7c 2022-05-30 6: sysctl sysdb wlans zfs
7:
8: OTHER_TARGETS+=mixer_exit nfsclient_exit random_exit
9:
10: DAEMON: pwcheck sysctl sysdb NETWORK SERVERS ldconfig nfsclient cleartmp pflogd
11:
12: LOGIN: DAEMON dntpd msgs powerd pflogd
13:
14: NETWORK: netif devd hostname
15:
16: SERVERS: swap mountlate syslogd newsyslog
17:
18: SERVICE: netif mount random hostname cleanvar
19:
20: # regular targets
21:
22: adjkerntz: random mount
23: echo "MRC:$@> Adjust kernel timezone."
24: adjkerntz -i
25:
26: bootfs: fsck
27: echo "MRC:$@> Checking whether we need /boot mounted."
28: mount -vadr | grep -q ' /boot$$' && mount -r /boot || true
29:
30: cleanvar: mount
d8511a3d7c 2022-05-30 31: echo "MRC:$@> Cleaning 'var's."
32: .for dir in ${CLEANVAR_DIRS}
d8511a3d7c 2022-05-30 33: test -d ${dir} && find ${dir} -mindepth 1 -delete || true
34: .endfor
d8511a3d7c 2022-05-30 35: install -m644 /dev/null /var/run/utmpx
36:
37: cleartmp: mountlate
d8511a3d7c 2022-05-30 38: echo "MRC:$@> Clearing tmp."; \
d8511a3d7c 2022-05-30 39: find -x /tmp -mindepth 1 ! -name lost+found \
d8511a3d7c 2022-05-30 40: ! -name snapshots ! -path "./snapshots/*" \
d8511a3d7c 2022-05-30 41: ! -name quota.user ! -name quota.group \
d8511a3d7c 2022-05-30 42: -delete -type d -prune ;\
d8511a3d7c 2022-05-30 43: rm -f /tmp/.X*-lock ;\
d8511a3d7c 2022-05-30 44: rm -fr /tmp/.X11-unix ;\
d8511a3d7c 2022-05-30 45: mkdir -m 1777 /tmp/.X11-unix
46:
47: cloned: kld
48: .if !empty(CLONED_INTERFACES)
49: echo "MRC:$@> Cloning interfaces: ${CLONED_INTERFACES}"
50: . for iface in ${CLONED_INTERFACES}
51: ifconfig ${iface} create
52: . endfor
53: .endif
54:
55: devfs:
56: echo "MRC:$@> Applying rules: ${DEVFS_CONFIG_FILES}"
57: .for file in ${DEVFS_CONFIG_FILES}
58: . if exists(${file})
59: devfsctl -a -f ${file}
60: . endif
61: .endfor
62:
63: dmesg: mountlate
64: .if !empty(DMESG_FILE)
65: echo "MRC:$@> Writing dmesg."
d8511a3d7c 2022-05-30 66: umask 022 ; dmesg -a >> ${DMESG_FILE}
67: .endif
68:
69: dumpon: random
70: .if !empty(DUMPDEV)
71: if [ -e ${DUMPDEV} ]; then \
d8511a3d7c 2022-05-30 72: echo "MRC:$@> Setting dumpon device to ${DUMPDEV}"; \
d8511a3d7c 2022-05-30 73: dumpon -v ${DUMPDEV}; \
74: fi
75: .endif
76:
77: fsck:
78: echo "MRC:$@> Checking disks." ;\
79: fsck -p ;\
80: case $$? in \
81: 0) ;; \
82: 2) exit 1 \
83: ;; \
84: 4) echo "Rebooting..." ;\
85: reboot ;\
86: echo "Reboot failed; help!" ;\
87: exit 1 \
88: ;; \
89: 8) if [ -n "$${FSCK_Y_ENABLE}" ]; then \
90: echo "File system preen failed, trying fsck -y." ;\
d8511a3d7c 2022-05-30 91: fsck -y || {\
92: echo "Automatic file system check failed; help!" ;\
93: exit 1 ;\
94: } ;\
95: else \
96: echo "Automatic file system check failed; help!" ;\
97: exit 1 ;\
98: fi \
99: ;; \
100: 12) echo "Boot interrupted." ;\
101: exit 1 \
102: ;; \
103: 130) exit 1 \
104: ;; \
105: *) echo "Unknown error, help!" ;\
106: exit 1 \
107: ;; \
108: esac
109:
110: hostname:
111: echo "MRC:$@> Setting to ${HOSTNAME}."
112: hostname ${HOSTNAME}
113:
114: kld: bootfs
115: .if defined(KLD_LIST)
116: echo "MRC:$@> Loading kernel modules: ${KLD_LIST}" ;\
117: kldload -n ${KLD_LIST}
118: .endif
119:
120: # ldconfig
121: .for path in ${LDCONFIG_PATHS} /etc/ld-elf.so.conf
122: .if exists(${path})
123: ldc+=${path}
124: .endif
125: .endfor
126:
127: .for dir in ${LDCONFIG_LOCAL_DIRS}
128: .if exists(${dir})
129: ldc+=${:!find ${dir} -type f!}
130: .endif
131: .endfor
132:
133: ldconfig: mountlate
134: echo "MRC:$@> Initializing shared libraries: ${ldc}"; \
135: ldconfig -elf ${ldc}
136:
137: microcode: mountlate
138: test -d /usr/local/share/cpucontrol || exit 0 ;\
139: echo "MRC:$@> Updating microcode." ;\
140: kldload -n cpuctl || exit 1 ;\
141: for cpu in $$(jot ${NCPU} 0); do \
142: { cpucontrol -u -d /usr/local/share/cpucontrol /dev/cpuctl$${cpu} \
143: || exit 1 ;\
144: } | grep -v '^TEST' ;\
145: cpucontrol -e /dev/cpuctl$${cpu} || exit 1 ;\
146: done
147:
148: mixers=${:!find /dev -name 'mixer*'!:S/\/dev\///}
149:
150: mixer: mount cleanvar
151: echo "MRC:$@> Restoring levels."
152: .for mixer in ${mixers}
153: if [ -r /var/db/${mixer}-state ]; then \
154: mixer -f /dev/${mixer} `cat /var/db/${mixer}-state` ;\
155: fi
156: .endfor
157:
158: mixer_exit:
159: echo "MRC:$@> Saving mixer levels."
160: .for mixer in ${mixers}
161: if [ -r /dev/${mixer} ]; then \
162: mixer -f /dev/${mixer} -s > /var/db/${mixer}-state ;\
163: fi
164: .endfor
165:
166: DAEMON_EXIT: mixer_exit
167:
168: excludes=${NETFS_TYPES:C/:.*//}
169:
170: mount: root zfs
171: echo "MRC:$@> Mount local FS." ;\
172: mount -uo rw -a ;\
173: mount ;\
174: mount -a -t no${excludes:ts,}
175:
d8511a3d7c 2022-05-30 176: mountlate: NETWORK mount cleanvar runshm devd
177: echo "MRC:$@> Mount late FS." ;\
178: mount -a
179:
180: msgs: mount
181: echo "MRC:$@> Making bounds." ;\
182: test ! -d /var/msgs -o -f /var/msgs/bound -o -L /var/msgs/bounds || \
183: echo 0 > /var/msgs/bounds
184:
185: newsyslog: mountlate sysdb
186: if [ -n "$${NEWSYSLOG_ENABLE}" ]; then \
187: echo "MRC:$@> Trimming log files." ;\
188: /usr/sbin/newsyslog ${NEWSYSLOG_FLAGS} ;\
189: fi
190:
191: nextboot: mount
192: .if exists(/boot/nextkernel)
193: echo "MRC:$@> Removing nextboot setting."
194: rm -f /boot/nextkernel
195: .endif
196:
197: .if empty(NFSCLIENT_ENABLE:tl:Mno)
198: DAEMON_rpcbind_ENABLE=yes
199: .endif
200:
201: nfsclient: NETWORK rpcbind
202: if [ -n "$${NFSCLIENT_ENABLE}" ]; then \
203: kldload -n nfs ;\
204: fi
205:
206: nfsclient_exit: DAEMON_EXIT
207: .if empty(RPC_UMNTALL_ENABLE:tl:Mno)
208: echo "MRC:$@> Sending RPC unmount notifications."; \
209: test -f /var/db/mounttab || true && \
210: rpc.umntall -k
211: .endif
212:
213: NETWORK_EXIT: nfsclient_exit
214:
d8511a3d7c 2022-05-30 215: netif: adjkerntz wlans cloned kld
216: echo "MRC:$@> Starting interfaces: ${IFCONFIG_IFACES}"
217: .for iface in ${IFCONFIG_IFACES}
218: .for item in ${IFCONFIG_${iface}:tW:ts;}
219: ifconfig ${iface} ${item}
220: .endfor
221: .undef _IFCONFIG_ARGS
222: .endfor
223:
224: pf: pflogd
225: .if empty(PF_ENABLE:tl:Mno)
d8511a3d7c 2022-05-30 226: echo "MRC:$@> Enabling and loading rules." ;\
d8511a3d7c 2022-05-30 227: kldload -n pf || exit 1 ;\
228: if [ -r ${PF_RULES} ]; then \
229: pfctl -Fa || exit 1 ;\
230: pfctl -f ${PF_RULES} ${PF_FLAGS} || exit 1 ;\
d8511a3d7c 2022-05-30 231: pfctl -Si | grep -q Enabled && pfctl -e; \
232: else \
233: echo "MRC:$@> Can't find file with rules at ${PF_RULES}." ;\
234: exit 1 ;\
235: fi
236: .endif
237:
238: pwcheck: mountlate syslogd
239: echo "MRC:$@> Checking password lock file."
240: .if exists(/etc/ptmp)
241: logger -s -p auth.err \
242: "password file may be incorrect -- /etc/ptmp exists"
243: .endif
244:
245: random: mount devfs
d8511a3d7c 2022-05-30 246: echo "MRC:$@> Seeding." ;\
d8511a3d7c 2022-05-30 247: sysctl kern.seedenable=1 > /dev/null ;\
d8511a3d7c 2022-05-30 248: { ps -fauxww; sysctl -a; date; df -ib; dmesg; ps -fauxww; } 2>&1 | \
d8511a3d7c 2022-05-30 249: dd status=none of=/dev/random bs=8k ;\
d8511a3d7c 2022-05-30 250: dd if=/bin/ps status=none of=/dev/random bs=8k ;\
251: if [ -d $${ENTROPY_DIR} ]; then \
252: find $${ENTROPY_DIR} -type f |\
d8511a3d7c 2022-05-30 253: xargs -n1 -Ifoo dd status=none if=foo of=/dev/random bs=8k ;\
254: else \
255: if [ -r ${ENTROPY_FILE} ]; then \
d8511a3d7c 2022-05-30 256: dd status=none if=${ENTROPY_FILE} of=/dev/random bs=8k ;\
d8511a3d7c 2022-05-30 257: fi ;\
d8511a3d7c 2022-05-30 258: fi ;\
259: sysctl kern.seedenable=0 > /dev/null
260:
261: random_exit:
d8511a3d7c 2022-05-30 262: rm -f ${ENTROPY_FILE}; \
d8511a3d7c 2022-05-30 263: umask 077 && \
d8511a3d7c 2022-05-30 264: dd if=/dev/random of=${ENTROPY_FILE} bs=8k count=1 || \
d8511a3d7c 2022-05-30 265: echo "MRC:$@> entropy file write failed."
266:
267: DAEMON_EXIT: random_exit
268:
269: root: fsck bootfs
d8511a3d7c 2022-05-30 270: echo "MRC:$@> Mount root R/W." ;\
271: mount -uo rw
d8511a3d7c 2022-05-30 272:
d8511a3d7c 2022-05-30 273: runshm: cleanvar
d8511a3d7c 2022-05-30 274: echo "MRC:$@> Mount and populate /var/run/shm."; \
d8511a3d7c 2022-05-30 275: mkdir -p /var/run/shm; \
d8511a3d7c 2022-05-30 276: mount_tmpfs -m 01777 dummy /var/run/shm; \
d8511a3d7c 2022-05-30 277: mkdir -p -m 01777 /var/run/shm/tmp; \
278:
279: savecore: dumpon
280: .if empty(DUMPDEV:tl:Mno) && exists(${DUMPDEV}) && exists(${DUMPDIR})
d8511a3d7c 2022-05-30 281: echo "MRC:$@> Saving coredump."; \
282: savecore ${DUMPDIR} ${DUMPDEV}
283: .if empty(CRASHINFO_ENABLE:tl:Mno)
284: crashinfo -d ${DUMPDIR}
285: .endif
286: .endif
287:
288: swap: savecore
289: .if ${:!sysctl -n vm.swap_enabled!}} != 0
d8511a3d7c 2022-05-30 290: echo "MRC:$@> Enabling swap."; \
291: swapon -a
292: .endif
293:
294: sysctl: kld root
295: .if exists(/etc/sysctl.conf)
d8511a3d7c 2022-05-30 296: echo "MRC:$@> Setting sysctl defaults."; \
297: awk '$$0~/^[ ]*(#.*)?$$/{next}{print}' < /etc/sysctl.conf | \
298: xargs -n1 sysctl
299: .endif
300:
301: sysdb: mountlate
d8511a3d7c 2022-05-30 302: echo "MRC:$@> Building databases."; \
303: install -c -m 644 -g wheel /dev/null /var/run/utmpx
304:
305: wlans: kld
d8511a3d7c 2022-05-30 306: echo "MRC:$@> Configuring wlans."; \
307: for dev in $$(sysctl -n net.wlan.devices); do \
d8511a3d7c 2022-05-30 308: eval all_wlans=\$${WLANS_$${dev}}; \
309: for wlan in $${all_wlans}; do \
d8511a3d7c 2022-05-30 310: eval wlan_args=\$${WLANS_$${wlan}_ARGS}; \
d8511a3d7c 2022-05-30 311: ifconfig $${wlan} create wlandev $${dev} $${wlan_args}; \
d8511a3d7c 2022-05-30 312: ifconfig $${wlan} up; \
d8511a3d7c 2022-05-30 313: done; \
314: done
315:
316: zfs:
317: .if empty(ZFS_ENABLE:tl:Mno)
d8511a3d7c 2022-05-30 318: zfs mount -va || exit $$? ;\
d8511a3d7c 2022-05-30 319: zfs share -a || exit $$? ;\
d8511a3d7c 2022-05-30 320: test -r /etc/zfs/exports || touch /etc/zfs/exports
d8511a3d7c 2022-05-30 321: .endif