# Sample finit.conf to demonstrate the syntax
#
host testbed

# Linux kernel modules to load
module button
module evdev
module loop
module psmouse

# Top-level cgroups and their default settings.  All groups mandatory
# but more can be added, max 8 groups in total currently.  The cgroup
# 'root' is also available, reserved for RT processes.  Settings are
# as-is, only one shorthand 'mem.' exists, other than that it's the
# cgroup v2 controller default names.
cgroup init   cpu.weight:100
cgroup user   cpu.weight:100
cgroup system cpu.weight:9700 cpu.max:50000

# Example extra cgroup
cgroup maint  cpu.weight:100

# Runlevel to start after bootstrap, runlevel 'S'
runlevel 2

# Network bringup script
network service networking start

# Max file size for each log file: 100 kiB, rotate max 4 copies:
# log => log.1 => log.2.gz => log.3.gz => log.4.gz
log size:100k count:4

# Virtual consoles to start getty on
tty /dev/tty1
tty /dev/tty2
tty /dev/tty3

# Task to run if ctrl-alt-del is pressed.  This condition is asserted by
# Finit upon receiving SIGINT (from the kernel).
task <sys/key/ctrlaltdel> [12345789] initctl reboot -- Rebooting system

# Task to run if the kernel gets a power fail condition is pressed.
# Asserted by Finit upon receiving SIGPWR (from the kernel).
task <sys/pwr/fail> [12345789] initctl poweroff -- Shutting down system

# Alternative method instead of runparts
#task [S] /etc/init.d/keyboard-setup start -- Setting up preliminary keymap
#task [S] /etc/init.d/acpid start          -- Starting ACPI Daemon
#task [S] /etc/init.d/kbd start            -- Preparing console
#run [2] /etc/init.d/networking start      -- Start networking

# Services to be monitored and respawned as needed

# klgod and syslogd are placed in the maint cgroup
cgroup.maint
service [2345] <pid/syslogd> klogd -n     -- Kernel logging server
service [2345] syslogd -n                 -- Syslog server

# gdm in the system cgroup (default when read from it's own .conf file)
cgroup.system
service [3] cgroup:cpu.weight:250,mem.max:10M gdm -- GNOME Display Manager

# Start SSH daemon with opts from /etc/default/ssh (if available), move
# to user cgroup with cpu.weight:250.  Default for services is system
# group.  Default weight in user group is 100 (above).  Max length of
# cgroup argument is (currently) 63 chars.
#
# Notice alternative syntax where current cgroup is only set for this
# particular service.
service [2345] cgroup.user:cpu.weight:250,mem.max:10M env:-/etc/default/ssh /usr/sbin/sshd -D $SSHD_OPTS -- OpenSSH daemon

# The BusyBox ntpd does not use syslog when running in the foreground
# So we use this trick to redirect stdout/stderr to a log file.  The
# log file is rotated with the above settings.  The condition declares
# a dependency on a system default route (gateway) to be set.  A single
# <!> at the beginning means ntpd does not respect SIGHUP for restart.
service [2345] <!net/route/default> log:/var/log/ntpd.log ntpd -n -l -I eth0 -- NTP daemon

# Run start scripts from this directory
# runparts /etc/start.d

# For multiple instances of the same service, add :ID somewhere between
# the service/run/task keyword and the command.
service :80   [2345] /sbin/httpd -f -h /http -p 80   -- Web server
service :8080 [2345] /sbin/httpd -f -h /http -p 8080 -- Old web server
