1 # Copyright (C) 2009 Andy Spencer
2 # See COPYING for terms
5 MKSHELL=/usr/lib/plan9/bin/rc
9 #test-start:VQPservice -u: foo-start
13 #test-stop:VQPservice -d: /
18 user = alsa keymap polipo dbus
19 system = at cron hddtemp hostname hwclock sshd swap syslog
20 bare = cpufreq fsclean getty qingy initctl localhost modules mounts uevents utmp
24 user:V: `{echo $user^-start $system^-start $bare^-start}
25 system:V: `{echo $user^-stop $system^-start $bare^-start}
26 bare:V: `{echo $user^-stop $system^-stop $bare^-start}
27 single:V: `{echo $user^-stop $system^-stop $bare^-stop }
36 # Initial setup/shutdown for mkinit
39 $P mount -o remount,rw /
40 # mount proc here to make bootchart happier
41 $P mount -t proc proc /proc
45 # Kill all process, then remount and sync
46 halt:QVE: utmp-stop hwclock-stop alsa-stop
47 echo TERMinating all processes
48 $P pkill -15 -vg0 >/dev/null >[2=1]
50 $P pgrep -vg0 >/dev/null >[2=1] && $P sleep 1
51 echo KILLing all processes
52 $P pkill -9 -vg0 >/dev/null >[2=1]
54 $P pgrep -vg0 >/dev/null >[2=1] && $P sleep 1
56 echo Remounting read-only
57 $P mount -o remount,ro /
62 # Listener for /dev/initctl, for shutdown(8)
63 initctl-start:VPservice -u: boot
67 { exec $P initctld $fifo |
69 $P mkinit $line >/dev/console >[2=1]
72 initctl-stop_cmd=fuser -k /dev/initctl
74 # Proc, mtab, udev, fstab
75 mounts-start:VPservice -u: boot
76 $P cp /proc/mounts /etc/mtab
82 modules-start:VEPservice -u: boot
86 # Trigger udev uevents
87 uevents-start:VEPservice -u: mounts-start
89 $P udevadm settle '--timeout=10'
92 # Clean out /tmp and /var/run directories
93 fsclean-start:VPservice -u: boot
99 $P exec rm -rf /.old &
102 # Spawn gettys for tty[456]
103 getty-start:VEPservice -u: hostname-start utmp-start
104 $P respawn /sbin/agetty 38400 tty4 linux
105 $P respawn /sbin/agetty 38400 tty5 linux
106 $P respawn /sbin/agetty 38400 tty6 linux
108 getty-stop_cmd=fuser -k /dev/tty4 /dev/tty5 /dev/tty6
110 # Spawn qingys for tty[23]
111 qingy-start:VEPservice -u: hostname-start utmp-start modules-start uevents-start
112 $P respawn /sbin/qingy tty2
113 $P respawn /sbin/qingy tty3
115 qingy-stop_cmd=fuser -k /dev/tty2 /dev/tty3
118 utmp-start:VPservice -u: fsclean-start
119 for (i in /var/run/utmp /var/log/wtmp) {
120 $P eval 'echo -n > $i'
125 utmp-stop_cmd=halt -w
128 cpufreq-start:VPservice -u: uevents-start
129 $P cpufreq-set -g ondemand
132 # Keymap (us-cc = us with ctrl-capslock switched)
133 keymap-start_cmd=loadkeys -u us-cc
136 localhost-start_cmd=ifconfig lo 127.0.0.1
137 localhost-stop_cmd=ifconfig lo down
140 hostname-start_cmd=hostname b
143 sysctl-start_cmd=sysctl -p
149 at-stop_cmd=pkill atd
152 cron-stop_cmd=pkill cron
154 hwclock-start_cmd=hwclock --hctosys --utc
155 hwclock-stop_cmd=hwclock --systohc --utc
157 swap-start_cmd=swapon -a
158 swap-stop_cmd=swapoff -a
160 syslog-start:VPservice -u: mounts-start
163 syslog-stop_cmd=pkill syslog
165 hddtemp-start:VPservice -u: localhost-start
166 $P hddtemp -d -l 127.0.0.1 /dev/sda
168 hddtemp-stop_cmd=pkill hddtemp
173 alsa-start_cmd=alsactl restore
174 alsa-stop_cmd=alsactl store
176 sshd-start_cmd=/usr/sbin/sshd
177 sshd-stop_cmd=pkill sshd
179 dbus-start:VPservice -u: fsclean-start localhost-start
180 $P mkdir -p /var/run/dbus
181 $P /usr/bin/dbus-daemon --system
183 dbus-stop_cmd=pkill dbus-daemon
185 spam-start:VPservice -u: localhost-start
188 spam-stop_cmd=pkill spamd
190 polipo-start:VPservice -u: localhost-start
193 polipo-stop_cmd=pkill polipo
198 %-start:VPservice -u: boot
199 if (~ $#($stem^-start_cmd) 0)
201 $P $($stem^-start_cmd)
204 %-stop:VPservice -d: /
205 if (~ $#($stem^-stop_cmd) 0)
207 $P $($stem^-stop_cmd)
210 %-zap:VPservice -d: /