Index: Makefile ================================================================== --- Makefile +++ Makefile @@ -47,11 +47,11 @@ ${service}_status: ${_SERVICE_STATUS} . endif # Service exit targets . if !target(${service}_exit) -${service}_exit: ${_SERVICE_EXIT} +${service}_exit: ${_SERVICE_EXIT} ${DAEMON_${service}_DEPS:S/$/_exit/} . endif DAEMON_EXIT: ${service}_exit .endfor Index: dbus.service.mk ================================================================== --- dbus.service.mk +++ dbus.service.mk @@ -5,7 +5,5 @@ DAEMON_dbus_FOREGROUND?=--nofork --nopidfile dbus: ${_SERVICE} /usr/local/bin/dbus-uuidgen --ensure mkdir -p /var/run/dbus - -dbus_exit: ${_SERVICE_EXIT} slim_exit Index: defaults.mk ================================================================== --- defaults.mk +++ defaults.mk @@ -58,7 +58,11 @@ # savecore CRASHINFO_ENABLE?=no DUMPDIR?=/var/crash +# tmpfs +TMPFS_TMP_ENABLE?=no +TMPFS_VAR_RUN_ENABLE?=no + # zfs ZFS_ENABLE?=no Index: hotplugd.service.mk ================================================================== --- hotplugd.service.mk +++ hotplugd.service.mk @@ -1,3 +1,6 @@ DAEMON_hotplugd_COMMAND?=/usr/sbin/hotplugd + +DAEMON_syslogd_DEPS+=hotplugd +DAEMON_udevd_DEPS+=hotplugd hotplugd: ${_SERVICE} syslogd udevd Index: init.mk ================================================================== --- init.mk +++ init.mk @@ -1,11 +1,11 @@ # Meta targets TARGETS:=adjkerntz bootfs cleanvar cleartmp cloned devfs dmesg dumpon fsck \ hostname kld ldconfig microcode mixer mount mountlate msgs netif \ newsyslog nextboot nfsclient pf pwcheck random root runshm savecore swap \ - sysctl sysdb wlans zfs + sysctl sysdb wlans zfs mounttmpfs utmpx OTHER_TARGETS+=mixer_exit nfsclient_exit random_exit DAEMON: pwcheck sysctl sysdb NETWORK SERVERS ldconfig nfsclient cleartmp pflogd @@ -26,25 +26,24 @@ bootfs: fsck echo "MRC:$@> Checking whether we need /boot mounted." mount -vadr | grep -q ' /boot$$' && mount -r /boot || true cleanvar: mount - echo "MRC:$@> Cleaning 'var's." + echo "MRC:$@> Cleaning '/var's." .for dir in ${CLEANVAR_DIRS} - test -d ${dir} && find ${dir} -mindepth 1 -delete || true + if [ -d ${dir} ]; then \ + /rescue/find ${dir} -mindepth 1 -delete ;\ + fi .endfor - install -m644 /dev/null /var/run/utmpx cleartmp: mountlate - echo "MRC:$@> Clearing tmp."; \ - find -x /tmp -mindepth 1 ! -name lost+found \ - ! -name snapshots ! -path "./snapshots/*" \ - ! -name quota.user ! -name quota.group \ - -delete -type d -prune ;\ - rm -f /tmp/.X*-lock ;\ - rm -fr /tmp/.X11-unix ;\ - mkdir -m 1777 /tmp/.X11-unix + echo "MRC:$@> Clearing tmp." + find -x /tmp -mindepth 1 ! -name lost+found ! -name snapshots \ + ! -path "./snapshots/*" ! -name quota.user ! -name quota.group \ + -delete -type d -prune + rm -fr /tmp/.X11-unix /tmp/.X*-lock + mkdir -m 1777 /tmp/.X11-unix cloned: kld .if !empty(CLONED_INTERFACES) echo "MRC:$@> Cloning interfaces: ${CLONED_INTERFACES}" . for iface in ${CLONED_INTERFACES} @@ -61,18 +60,18 @@ .endfor dmesg: mountlate .if !empty(DMESG_FILE) echo "MRC:$@> Writing dmesg." - umask 022 ; dmesg -a >> ${DMESG_FILE} + ( umask 022 ; dmesg -a > ${DMESG_FILE} ;) .endif dumpon: random .if !empty(DUMPDEV) if [ -e ${DUMPDEV} ]; then \ - echo "MRC:$@> Setting dumpon device to ${DUMPDEV}"; \ - dumpon -v ${DUMPDEV}; \ + echo "MRC:$@> Setting dumpon device to ${DUMPDEV}" ;\ + dumpon -v ${DUMPDEV} ;\ fi .endif fsck: echo "MRC:$@> Checking disks." ;\ @@ -86,11 +85,11 @@ echo "Reboot failed; help!" ;\ exit 1 \ ;; \ 8) if [ -n "$${FSCK_Y_ENABLE}" ]; then \ echo "File system preen failed, trying fsck -y." ;\ - fsck -y || {\ + fsck -y || { \ echo "Automatic file system check failed; help!" ;\ exit 1 ;\ } ;\ else \ echo "Automatic file system check failed; help!" ;\ @@ -171,11 +170,11 @@ echo "MRC:$@> Mount local FS." ;\ mount -uo rw -a ;\ mount ;\ mount -a -t no${excludes:ts,} -mountlate: NETWORK mount cleanvar runshm devd +mountlate: NETWORK mount cleanvar runshm devd mounttmpfs echo "MRC:$@> Mount late FS." ;\ mount -a msgs: mount echo "MRC:$@> Making bounds." ;\ @@ -210,11 +209,11 @@ rpc.umntall -k .endif NETWORK_EXIT: nfsclient_exit -netif: adjkerntz wlans cloned kld +netif: adjkerntz wlans cloned kld mounttmpfs utmpx echo "MRC:$@> Starting interfaces: ${IFCONFIG_IFACES}" .for iface in ${IFCONFIG_IFACES} .for item in ${IFCONFIG_${iface}:tW:ts;} ifconfig ${iface} ${item} .endfor @@ -221,16 +220,16 @@ .undef _IFCONFIG_ARGS .endfor pf: pflogd .if empty(PF_ENABLE:tl:Mno) - echo "MRC:$@> Enabling and loading rules." ;\ - kldload -n pf || exit 1 ;\ + echo "MRC:$@> Enabling and loading rules." + kldload -n pf || exit 1 if [ -r ${PF_RULES} ]; then \ pfctl -Fa || exit 1 ;\ pfctl -f ${PF_RULES} ${PF_FLAGS} || exit 1 ;\ - pfctl -Si | grep -q Enabled && pfctl -e; \ + pfctl -Si | grep -q Enabled && pfctl -e ;\ else \ echo "MRC:$@> Can't find file with rules at ${PF_RULES}." ;\ exit 1 ;\ fi .endif @@ -241,81 +240,101 @@ logger -s -p auth.err \ "password file may be incorrect -- /etc/ptmp exists" .endif random: mount devfs - echo "MRC:$@> Seeding." ;\ - sysctl kern.seedenable=1 > /dev/null ;\ - { ps -fauxww; sysctl -a; date; df -ib; dmesg; ps -fauxww; } 2>&1 | \ - dd status=none of=/dev/random bs=8k ;\ - dd if=/bin/ps status=none of=/dev/random bs=8k ;\ + echo "MRC:$@> Seeding." + sysctl kern.seedenable=1 > /dev/null + ( ps -fauxww; sysctl -a; date; df -ib; dmesg; ps -fauxww ;) 2>&1 |\ + dd status=none of=/dev/random bs=8k 2>/dev/null + dd if=/bin/ps status=none of=/dev/random bs=8k 2>/dev/null if [ -d $${ENTROPY_DIR} ]; then \ find $${ENTROPY_DIR} -type f |\ - xargs -n1 -Ifoo dd status=none if=foo of=/dev/random bs=8k ;\ + xargs -n1 -Ifoo dd status=none if=foo of=/dev/random bs=8k 2>/dev/null ;\ else \ if [ -r ${ENTROPY_FILE} ]; then \ - dd status=none if=${ENTROPY_FILE} of=/dev/random bs=8k ;\ - fi ;\ - fi ;\ + dd status=none if=${ENTROPY_FILE} of=/dev/random bs=8k 2>/dev/null ;\ + fi \ + fi sysctl kern.seedenable=0 > /dev/null random_exit: - rm -f ${ENTROPY_FILE}; \ - umask 077 && \ - dd if=/dev/random of=${ENTROPY_FILE} bs=8k count=1 || \ - echo "MRC:$@> entropy file write failed." + rm -f ${ENTROPY_FILE} + ( \ + umask 077 ;\ + dd if=/dev/random of=${ENTROPY_FILE} bs=8k count=1 2>/dev/null || \ + echo "MRC:$@> entropy file write failed." ;\ + ) DAEMON_EXIT: random_exit root: fsck bootfs - echo "MRC:$@> Mount root R/W." ;\ + echo "MRC:$@> Mount root R/W." mount -uo rw -runshm: cleanvar - echo "MRC:$@> Mount and populate /var/run/shm."; \ - mkdir -p /var/run/shm; \ - mount_tmpfs -m 01777 dummy /var/run/shm; \ - mkdir -p -m 01777 /var/run/shm/tmp; \ - savecore: dumpon .if empty(DUMPDEV:tl:Mno) && exists(${DUMPDEV}) && exists(${DUMPDIR}) - echo "MRC:$@> Saving coredump."; \ + echo "MRC:$@> Saving coredump." savecore ${DUMPDIR} ${DUMPDEV} .if empty(CRASHINFO_ENABLE:tl:Mno) crashinfo -d ${DUMPDIR} .endif .endif swap: savecore .if ${:!sysctl -n vm.swap_enabled!}} != 0 - echo "MRC:$@> Enabling swap."; \ + echo "MRC:$@> Enabling swap." swapon -a .endif sysctl: kld root .if exists(/etc/sysctl.conf) - echo "MRC:$@> Setting sysctl defaults."; \ + echo "MRC:$@> Setting sysctl defaults." awk '$$0~/^[ ]*(#.*)?$$/{next}{print}' < /etc/sysctl.conf | \ xargs -n1 sysctl .endif sysdb: mountlate - echo "MRC:$@> Building databases."; \ + echo "MRC:$@> Building databases." install -c -m 644 -g wheel /dev/null /var/run/utmpx wlans: kld - echo "MRC:$@> Configuring wlans."; \ + echo "MRC:$@> Configuring wlans." for dev in $$(sysctl -n net.wlan.devices); do \ - eval all_wlans=\$${WLANS_$${dev}}; \ + eval all_wlans=\$${WLANS_$${dev}} ;\ for wlan in $${all_wlans}; do \ - eval wlan_args=\$${WLANS_$${wlan}_ARGS}; \ - ifconfig $${wlan} create wlandev $${dev} $${wlan_args}; \ - ifconfig $${wlan} up; \ - done; \ + eval wlan_args=\$${WLANS_$${wlan}_ARGS} ;\ + ifconfig $${wlan} create wlandev $${dev} $${wlan_args} ;\ + ifconfig $${wlan} up ;\ + done \ done zfs: .if empty(ZFS_ENABLE:tl:Mno) - zfs mount -va || exit $$? ;\ - zfs share -a || exit $$? ;\ - test -r /etc/zfs/exports || touch /etc/zfs/exports + zfs mount -va || exit $$? + zfs share -a || exit $$? + touch /etc/zfs/exports +.endif + +runshm: cleanvar + echo "MRC:$@> Preparing /var/run." +. if exists(TMPFS_VAR_RUN_ENABLE) + /rescue/find /var/run -mindepth 1 -delete + mount_tmpfs dummy /var/run +. else + mkdir -p /var/run/shm + mount_tmpfs -m 01777 dummy /var/run/shm +. endif + mtree -deiqU -f /etc/mtree/BSD.var.dist -p /var + +mounttmpfs: cleanvar + echo "MRC:$@> Mount tmpfs and populating /var/run." +.if exists(TMPFS_TMP_ENABLE) + mount | awk 'BEGIN{x=1}$$3~/\/tmp/{x=0}END{exit(x)}' || { + /rescue/find /tmp -mindepth 1 -delete + mount_tmpfs -m 01777 dummy /tmp + } .endif + +utmpx: runshm + echo "MRC:$@> Install utmpx." + install -m 644 -g wheel /dev/null /var/run/utmpx Index: mountd.service.mk ================================================================== --- mountd.service.mk +++ mountd.service.mk @@ -2,15 +2,15 @@ DAEMON_mountd_ENABLE?=no DAEMON_mountd_FLAGS?=-r .if empty(DAEMON_mountd_ENABLE:tl:Mno) DAEMON_rpcbind_ENABLE=yes + +DAEMON_rpcbind_DEPS+=mountd .endif mountd: rpcbind NETWORK SERVERS ${_SERVICE} # mountlate -> SERVERS rm -f /var/db/mountdtab ;\ ( umask 022; touch /var/db/mountdtab; ) ;\ : -mountd_exit: ${_SERVICE_EXIT} nfsd_exit - NETWORK_EXIT: mountd_exit Index: nfsd.service.mk ================================================================== --- nfsd.service.mk +++ nfsd.service.mk @@ -1,10 +1,13 @@ DAEMON_nfsd_COMMAND?=/sbin/nfsd DAEMON_nfsd_ENABLE?=no DAEMON_nfsd_FLAGS?=-u -t -n 4 .if empty(DAEMON_nfsd_ENABLE:tl:Mno) +DAEMON_mountd_DEPS+=nfsd +DAEMON_rpcbind_DEPS+=nfsd + DAEMON_rpcbind_ENABLE=yes DAEMON_mountd_ENABLE=yes .endif nfsd: mountd ${_SERVICE} rpcbind Index: rc ================================================================== --- rc +++ rc @@ -7,11 +7,11 @@ HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin export PATH HOME -MAKEINIT="make -D AUTOBOOT -C /etc/mrc" +MAKEINIT="make -D AUTOBOOT -C /etc/mrc -k" NCPU=$((`/sbin/sysctl -n hw.ncpu` + 1 )) #MAKEDEBUG="-d -nelLx" mount -t tmpfs tmpfs /etc/mrc/tmp && ${MAKEINIT} -j ${NCPU} ${MAKEDEBUG} -X TMPDIR=/etc/mrc/tmp && umount /etc/mrc/tmp || ${MAKEINIT} Index: rc.shutdown ================================================================== --- rc.shutdown +++ rc.shutdown @@ -7,11 +7,11 @@ HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin export PATH HOME -MAKEINIT="make -D AUTOBOOT -C /etc/mrc" +MAKEINIT="make -D AUTOBOOT -C /etc/mrc -k" NCPU=$((`/sbin/sysctl -n hw.ncpu` + 1 )) #MAKEDEBUG="-d -nelLx" mount -t tmpfs tmpfs /etc/mrc/tmp && ${MAKEINIT} -j ${NCPU} ${MAKEDEBUG} -X TMPDIR=/etc/mrc/tmp EXIT && umount /etc/mrc/tmp || ${MAKEINIT} EXIT Index: rpcbind.service.mk ================================================================== --- rpcbind.service.mk +++ rpcbind.service.mk @@ -1,9 +1,9 @@ DAEMON_rpcbind_COMMAND?=/usr/sbin/rpcbind DAEMON_rpcbind_ENABLE?=no DAEMON_rpcbind_FLAGS?=-d -rpcbind: ${_EARLYSERVICE} NETWORK syslogd +DAEMON_syslogd_DEPS+=rpcbind -rpcbind_exit: ${_SERVICE_EXIT} mountd_exit nfsd_exit +rpcbind: ${_EARLYSERVICE} NETWORK syslogd NETWORK_EXIT: rpcbind_exit Index: sensorsd.service.mk ================================================================== --- sensorsd.service.mk +++ sensorsd.service.mk @@ -1,4 +1,6 @@ DAEMON_sensorsd_COMMAND?=/usr/sbin/sensorsd DAEMON_sensorsd_FOREGROUND?=-d + +DAEMON_syslogd_DEPS+=sensorsd sensorsd: ${_SERVICE} syslogd Index: slim.service.mk ================================================================== --- slim.service.mk +++ slim.service.mk @@ -1,8 +1,10 @@ DAEMON_slim_COMMAND?=/usr/local/bin/slim DAEMON_slim_ENABLE?=no DAEMON_slim_BACKGROUND?=-d + +DAEMON_dbus_DEPS+=slim slim: ${_SERVICE} dbus rm -f /var/run/slim.auth DAEMON_EXIT: slim_exit Index: syslogd.service.mk ================================================================== --- syslogd.service.mk +++ syslogd.service.mk @@ -1,7 +1,5 @@ DAEMON_syslogd_COMMAND?=/usr/sbin/syslogd DAEMON_syslogd_ENABLE?=yes DAEMON_syslogd_FLAGS?=-ss8cc syslogd: ${_EARLYSERVICE} newsyslog - -syslogd_exit: ${_SERVICE_EXIT} sensorsd_exit hotplugd_exit Index: udevd.service.mk ================================================================== --- udevd.service.mk +++ udevd.service.mk @@ -1,7 +1,5 @@ DAEMON_udevd_COMMAND?=/sbin/udevd DAEMON_udevd_ENABLE?=yes DAEMON_udevd_FOREGROUND?=-d udevd: ${_EARLYSERVICE} - -udevd_exit: ${_SERVICE_EXIT} hotplugd_exit